Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package moje
- import akka.actor.{ActorSystem, Actor, ActorRef, Props}
- import scala.io.StdIn
- // case class Zlecenie(tekst: List[String])
- object Nadzorca {
- case class Init(n: Int)
- case class Zlecenie(text: List[String])
- case class Wynik(suma: Int)
- case object Result
- }
- object Pracownik {
- case class Wykonaj(slowo: Option[String], boss: ActorRef)
- }
- class Nadzorca extends Actor {
- import Nadzorca._
- def receive: Receive = {
- case Init(liczbaPracownikow) =>
- for {
- n <- 1 to liczbaPracownikow
- } context.actorOf(Props[Pracownik](), s"worker$n")
- context.become(withWorker(liczbaPracownikow, 0))
- case _ =>
- }
- def withWorker(liczprac: Int, suma: Int): Receive = {
- case Zlecenie(text) => {
- for (line <- text.zipWithIndex ) {
- context.actorSelection(s"/user/Nadzorca/worker${line._2 % liczprac + 1}") ! Pracownik.Wykonaj(Some(line._1), self)
- }
- context.actorSelection(s"/user/Nadzorca/worker1") ! Pracownik.Wykonaj(None, self)
- }
- case Wynik(wynik) => {
- context.become(withWorker(liczprac, suma + wynik))
- }
- case Result => {
- println(s"WYNIK => ${suma}")
- }
- }
- }
- class Pracownik extends Actor {
- import Pracownik._
- def receive: Receive = {
- case Wykonaj(Some(tekst), boss) => {
- boss ! Nadzorca.Wynik(tekst.split(" ").length)
- }
- case Wykonaj(None, boss) => {
- boss ! Nadzorca.Result
- }
- case _ => println("GOT RECEIVED WORKER")
- }
- }
- object MyZlicz extends App {
- def dane(): List[String] = {
- scala.io.Source.fromResource("ogniem_i_mieczem.txt").getLines.toList
- }
- val system = ActorSystem("LiczniSlow")
- val nadzorca = system.actorOf(Props[Nadzorca], "Nadzorca")
- val testList = List("zdanie jeden dwa trzy cztery", "siema eniu co tam u ciebie byczku", "ale jazda normalnie tak o nie", "testuje", "scale na jutro")
- nadzorca ! Nadzorca.Init(2)
- nadzorca ! Nadzorca.Zlecenie(testList)
- // nadzorca ! Nadzorca.Zlecenie(dane())
- // nadzorca ! Zlecenie(testList)
- // leonardo ! Zlecenie()
- StdIn.readLine()
- system.terminate()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement