package io.monokkel.actors;
import akka.actor.Props;
import akka.actor.UntypedActor;
import io.monokkel.core.Indexer;
import io.monokkel.messages.IndexResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Created by tarjei on 28/05/14.
*
* An actor that indexes the parse output
*
*/
public class IndexActor extends UntypedActor{
private Logger log = LoggerFactory.getLogger(IndexActor.class);
private final Indexer indexer;
public IndexActor(final Indexer indexer){
this.indexer = indexer;
}
public static Props props(final Indexer indexer) {
return Props.create(IndexActor.class, () -> new IndexActor(indexer));}
@Override
public void onReceive(Object message) throws Exception {
if(message instanceof IndexResponse){
IndexResponse indexResponse = (IndexResponse) message;
indexer.indexParserOutput(indexResponse.getPageData());
} else {
unhandled(message);
}
}
@Override
public void postStop(){
log.info("Indexer is shutting down");
try {
indexer.close();
} catch (Exception e) {
log.warn("Failed to close the indexer connection");
}
}
}