package org.softlang.company.features; import java.util.concurrent.TimeoutException; import org.softlang.company.actors.CutActor; import org.softlang.company.messages.CutMessage; import org.softlang.company.model.Company; import scala.concurrent.Await; import scala.concurrent.Future; import scala.concurrent.duration.Duration; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Props; import akka.pattern.Patterns; import akka.util.Timeout; public class Cut { /** * Cut all salaries from company c * * @param c */ public static void cut(Company c) { ActorSystem system = ActorSystem.create("MySystem"); ActorRef myActor = system.actorOf(Props.create(CutActor.class)); Timeout timeout = new Timeout(Duration.create(10, "seconds")); Future<Object> future = Patterns.ask(myActor, new CutMessage(c), timeout);// future for getting a result synchronously try { Await.ready(future, timeout.duration()); // waiting for the future // to complete } catch (TimeoutException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } system.shutdown(); } }