Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- object Dispatcher {
- def props(map: TransportMap, sorterPort: Int, transportersPortPoint: Map[Int, Int]): Props =
- Props(new Dispatcher(map, sorterPort, transportersPortPoint))
- case class Ball(color: Color)
- case class TransporterReady(id: Int)
- }
- class Dispatcher(map: TransportMap, sorterId: Int, transportersIds: Map[Int, Int]) extends Actor {
- val sorter = context.actorOf(Sorter.props(sorterId))
- val transporters: Map[Int, ActorRef] =
- transportersIds.map { case (port, _) => port -> context.actorOf(Transporter.props(port)) }
- var systemState = new SystemState(transportersIds.keys.toSeq, map)
- override def receive: Receive = {
- case Ball(color) =>
- dispatchNextTasks(systemState.addBall(color))
- case TransporterReady(id) =>
- dispatchNextTasks(systemState.transporterReady(id))
- }
- private def dispatchNextTasks(tasks: Map[Int, TransporterTask]): Unit = {
- tasks.foreach { case (id, task) => transporters(id) ! task }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement