package org.akka.essentials.grid.controller;
import org.akka.essentials.grid.StopWorker;
import akka.actor.ActorRef;
import akka.actor.UntypedActor;
import akka.event.Logging;
import akka.event.LoggingAdapter;
import akka.remote.RemoteClientError;
public class RemoteClientEventListener extends UntypedActor {
private LoggingAdapter log = Logging.getLogger(getContext().system(), this);
private ActorRef jobScheduler;
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof RemoteClientError) {
RemoteClientError event = (RemoteClientError) message;
log.info("Received remote client error event from address "
+ event.getRemoteAddress());
jobScheduler.tell(new StopWorker(event.getRemoteAddress()
.toString()));
log.info("Cause of the event was {}", event.getCause());
// } else if (message instanceof RemoteClientWriteFailed) {
// RemoteClientWriteFailed event = (RemoteClientWriteFailed) message;
// log.info("Received remote client write fail event from address "
// + event.getRemoteAddress());
// jobScheduler.tell(new StopWorker(event.getRemoteAddress()
// .toString()));
}
}
public RemoteClientEventListener(ActorRef inJobScheduler) {
jobScheduler = inJobScheduler;
}
}