Skip to content

Instantly share code, notes, and snippets.

@bthuillier
Created November 27, 2015 09:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bthuillier/1ca189162a4beb2e66c8 to your computer and use it in GitHub Desktop.
Save bthuillier/1ca189162a4beb2e66c8 to your computer and use it in GitHub Desktop.
package queue
import akka.actor.{Actor, Props}
import queue.ActorWithQueue._
class ActorWithQueue(init: Queue[String] = Queue.empty ) extends Actor {
def handleMessage(queue: Queue[String]): Receive = {
case Push(str) =>
handleMessage(queue.enqueue(str))
case Pull =>
queue.dequeueOption match {
case Some((str, q)) =>
sender ! Elem(str)
context.become(handleMessage(q))
case None =>
sender ! EmptyQueue
}
}
override def receive: Receive = handleMessage(init)
}
object ActorWithQueue {
def props() = Props(new ActorWithQueue)
case class Push(str: String)
case object Pull
case class Elem(str: String)
case object EmptyQueue
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment