Advertisement
Guest User

Untitled

a guest
Dec 9th, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 0.98 KB | None | 0 0
  1. object Dispatcher {
  2.  
  3.   def props(map: TransportMap, sorterPort: Int, transportersPortPoint: Map[Int, Int]): Props =
  4.     Props(new Dispatcher(map, sorterPort, transportersPortPoint))
  5.  
  6.   case class Ball(color: Color)
  7.  
  8.   case class TransporterReady(id: Int)
  9. }
  10.  
  11. class Dispatcher(map: TransportMap, sorterId: Int, transportersIds: Map[Int, Int]) extends Actor {
  12.  
  13.   val sorter = context.actorOf(Sorter.props(sorterId))
  14.   val transporters: Map[Int, ActorRef] =
  15.     transportersIds.map { case (port, _) => port -> context.actorOf(Transporter.props(port)) }
  16.  
  17.   var systemState = new SystemState(transportersIds.keys.toSeq, map)
  18.  
  19.   override def receive: Receive = {
  20.     case Ball(color) =>
  21.       dispatchNextTasks(systemState.addBall(color))
  22.  
  23.     case TransporterReady(id) =>
  24.       dispatchNextTasks(systemState.transporterReady(id))
  25.   }
  26.  
  27.  
  28.   private def dispatchNextTasks(tasks: Map[Int, TransporterTask]): Unit = {
  29.     tasks.foreach { case (id, task) => transporters(id) ! task }
  30.   }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement