Skip to content
Snippets Groups Projects
Select Git revision
  • 5bd9c449f19bb3b37e11c9816c80c2a931dc1ef3
  • master default
2 results

WatchActor.java

Blame
  • user avatar
    Christian Wulf authored
    5bd9c449
    History
    WatchActor.java 672 B
    package akka.common;
    
    import akka.actor.ActorRef;
    import akka.actor.Terminated;
    import akka.actor.UntypedActor;
    
    public class WatchActor extends UntypedActor {
    
    	public static final class WatchMe {
    		final ActorRef actor;
    
    		public WatchMe(ActorRef actor) {
    			this.actor = actor;
    		}
    	}
    
    	private int running;
    
    	@Override
    	public void onReceive(Object message) throws Exception {
    		if (message instanceof WatchMe) {
    			ActorRef actor = ((WatchMe) message).actor;
    			context().watch(actor);
    			running++;
    		} else if (message instanceof Terminated) {
    			running--;
    			if (running == 0) {
    				context().system().shutdown();
    			}
    		} else {
    			unhandled(message);
    		}
    	}
    
    }