|
Akka/Scala example source code file (ReliableProxyTest.java)
The ReliableProxyTest.java Akka example source code/** * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package akka.contrib.pattern; import java.util.concurrent.TimeUnit; import akka.actor.*; import akka.testkit.AkkaJUnitActorSystemResource; import org.junit.ClassRule; import org.junit.Test; import scala.concurrent.duration.Duration; import akka.testkit.TestProbe; //#import import akka.contrib.pattern.ReliableProxy; //#import public class ReliableProxyTest { @ClassRule public static AkkaJUnitActorSystemResource actorSystemResource = new AkkaJUnitActorSystemResource("ReliableProxyTest"); private final ActorSystem system = actorSystemResource.getSystem(); static//#demo-proxy public class ProxyParent extends UntypedActor { private final ActorRef proxy; public ProxyParent(ActorPath targetPath) { proxy = getContext().actorOf( ReliableProxy.props(targetPath, Duration.create(100, TimeUnit.MILLISECONDS))); } public void onReceive(Object msg) { if ("hello".equals(msg)) { proxy.tell("world!", getSelf()); } } } //#demo-proxy static//#demo-transition public class ProxyTransitionParent extends UntypedActor { private final ActorRef proxy; private ActorRef client = null; public ProxyTransitionParent(ActorPath targetPath) { proxy = getContext().actorOf( ReliableProxy.props(targetPath, Duration.create(100, TimeUnit.MILLISECONDS))); proxy.tell(new FSM.SubscribeTransitionCallBack(getSelf()), getSelf()); } public void onReceive(Object msg) { if ("hello".equals(msg)) { proxy.tell("world!", getSelf()); client = getSender(); } else if (msg instanceof FSM.CurrentState<?>) { // get initial state } else if (msg instanceof FSM.Transition<?>) { @SuppressWarnings("unchecked") final FSM.Transition<ReliableProxy.State> transition = (FSM.Transition<ReliableProxy.State>) msg; assert transition.fsmRef().equals(proxy); if (transition.from().equals(ReliableProxy.active()) && transition.to().equals(ReliableProxy.idle())) { client.tell("done", getSelf()); } } } } //#demo-transition @Test public void demonstrateUsage() { final TestProbe probe = TestProbe.apply(system); final ActorRef target = probe.ref(); final ActorRef parent = system.actorOf(Props.create(ProxyParent.class, target.path())); parent.tell("hello", null); probe.expectMsg("world!"); } @Test public void demonstrateTransitions() { final ActorRef target = TestProbe.apply(system).ref(); final ActorRef parent = system.actorOf(Props.create(ProxyTransitionParent.class, target.path())); final TestProbe probe = TestProbe.apply(system); parent.tell("hello", probe.ref()); probe.expectMsg("done"); } } Other Akka source code examplesHere is a short list of links related to this Akka ReliableProxyTest.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.