Skip to content

Instantly share code, notes, and snippets.

@anarcher
Created September 25, 2010 18:26
Show Gist options
  • Save anarcher/597124 to your computer and use it in GitHub Desktop.
Save anarcher/597124 to your computer and use it in GitHub Desktop.
import collection.mutable.Queue
import se.scalablesolutions.akka.actor.Actor
import Actor._
case class Enqeue(msg:String)
case class Deqeue(f : (String) => Unit)
class QueueingActor extends Actor {
private val queue = new Queue[String]
println(queue)
def receive = {
case e:Enqeue => queue.enqueue(e.msg)
case e:Deqeue => e.f(queue.dequeue)
}
}
scala> val a = actorOf[QueueingActor].start
Queue()
a: se.scalablesolutions.akka.actor.ActorRef = Actor[firefly.QueueingActor:1285791371558]
scala> val b = actorOf[QueueingActor].start
Queue()
b: se.scalablesolutions.akka.actor.ActorRef = Actor[firefly.QueueingActor:1285791378350]
^
scala> a ! Enqeue("Q1:#1")
scala> a ! Enqeue("Q1:#2")
scala> b ! Enqeue("Q2:#1")
scala> a ! Deqeue(println(_))
scala> Q1:#1
scala> b ! Deqeue(println(_))
Q2:#1
scala> a ! Deqeue(println(_))
Q1:#2
scala> val a = actorOf[QueueingActor].start
Queue()
a: se.scalablesolutions.akka.actor.ActorRef = Actor[firefly.QueueingActor:1285791559961]
scala> a ! Enqeue("aa")
scala> val b = actorOf[QueueingActor].start
Queue()
b: se.scalablesolutions.akka.actor.ActorRef = Actor[firefly.QueueingActor:1285791578814]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment