Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Petuh.Kudah
- import akka.actor.{Actor, ActorRef, ActorSelection, ActorSystem, Props, Terminated}
- import com.typesafe.config.ConfigFactory
- import scala.io.StdIn
- object Parasha {
- case class Manya(name: String, manya: ActorRef)
- case object Podmojsa
- case class Kokok(kudah: String)
- case class Kukarek(kokpok: String)
- }
- class Parasha extends Actor {
- import Parasha._
- var manki = Map.empty[String, ActorRef]
- def receive: Receive = {
- case Manya(petushok, _) if manki.contains(petushok) ⇒
- sender() ! Podmojsa
- case Manya(pogonalo, manya) ⇒
- manki.values.foreach(_ ! Manya(pogonalo, manya))
- manki.map(Manya.tupled).foreach(sender() ! _)
- manki += pogonalo → manya
- context.watch(manya)
- case Terminated(chert) ⇒
- manki = manki.filter(_._2 != chert)
- case Kokok("/help") ⇒
- sender() ! Kukarek("Вилку в глаз, или в жопу раз?")
- }
- }
- object Petuh {
- case class Kudah(kudah: String)
- case class Pokpok(kukarek: String)
- }
- class Petuh(parasha: ActorSelection, pogonalo: String) extends Actor {
- import Parasha._
- import Petuh._
- var manki = Map.empty[ActorRef, String]
- def receive: Receive = {
- case Podmojsa ⇒
- context.stop(self)
- case Manya(pogonalo, manya) ⇒
- manki += manya → pogonalo
- case Kudah(kudah) ⇒
- if (kudah.startsWith("/")) {
- parasha ! Kokok(kudah)
- } else {
- manki.keys.foreach(_ ! Pokpok(kudah))
- }
- case Pokpok(kukarek) ⇒
- println(s"${manki.getOrElse(sender(), "???")}: $kukarek")
- case Kukarek(kokpok) ⇒
- println(s"ПОЛОЖНЯК: $kokpok")
- }
- override def preStart(): Unit = {
- parasha ! Manya(pogonalo, self)
- }
- }
- object Zona extends App {
- implicit val actorSystem = ActorSystem("zona", ConfigFactory.parseString("akka {\n actor {\n\tprovider = remote\nwarn-about-java-serializer-usage=false }\n remote {\n\tenabled-transports = [\"akka.remote.netty.tcp\"]\n\tnetty.tcp {\n\t hostname = \"127.0.0.1\"\n\t port = 2552\n\t}\n }\n}"))
- val parasha = actorSystem.actorOf(Props[Parasha], "parasha")
- }
- object Petushok extends App {
- implicit val actorSystem = ActorSystem("petushok", ConfigFactory.parseString("akka {\n actor {\n\tprovider = remote\n warn-about-java-serializer-usage=false }\n remote {\n\tenabled-transports = [\"akka.remote.netty.tcp\"]\n\tnetty.tcp {\n\t hostname = \"127.0.0.1\"\n\t port = " + (2553 + args(0).toInt) + "\n\t}\n }\n}"))
- val petushok = actorSystem.actorOf(Props(classOf[Petuh], parasha, args(1)))
- Iterator
- .continually(StdIn.readLine())
- .takeWhile(null ne)
- .foreach(petushok ! Kudah(_))
- }
Add Comment
Please, Sign In to add comment