Advertisement
Guest User

Untitled

a guest
Apr 4th, 2014
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.99 KB | None | 0 0
  1. import akka.actor.{ActorRef, ActorSystem, Props, Actor, Inbox}
  2. import scala.concurrent.duration._
  3.  
  4. case object Greet
  5. case class WhoToGreet(who: String)
  6. case class Greeting(message: String)
  7.  
  8. class Greeter extends Actor {
  9.   var greeting = ""
  10.  
  11.   def receive = {
  12.     case WhoToGreet(who) => greeting = s"hello, $who"
  13.     case Greet           => sender ! Greeting(greeting)
  14.   }
  15. }
  16.  
  17. class GreetPrinter extends Actor {
  18.   def receive = {
  19.     case Greeting(message) => println(message)
  20.   }
  21. }
  22.  
  23. object HelloWorld extends App {
  24.   val system = ActorSystem("HelloWorld")
  25.   val greeter = system.actorOf(Props[Greeter], "greeter")
  26.   val inbox = Inbox.create(system)
  27.  
  28.   greeter.tell(WhoToGreet("vixlur"), ActorRef.noSender)
  29.   inbox.send(greeter, Greet)
  30.  
  31.   val Greeting(message) = inbox.receive(5.seconds)
  32.   println(s"Greeting: $message")
  33.  
  34.   val greetPrinter = system.actorOf(Props[GreetPrinter])
  35.   system.scheduler.schedule(0.seconds, 1.second, greeter, Greet)(system.dispatcher, greetPrinter)
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement