Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. build.sbt
  2. =========
  3.  
  4. name := "hyscala-akka-intro-talk"
  5.  
  6. version := "1.0"
  7.  
  8. scalaVersion := "2.11.8"
  9.  
  10. libraryDependencies ++= Seq("com.typesafe.akka" %% "akka-actor" % "2.4.14")
  11.  
  12. Code
  13. ====
  14.  
  15.  
  16. package hyscala.akka.intro
  17.  
  18. import akka.actor.{Actor, ActorRef, ActorSystem, Props}
  19.  
  20. import scala.collection.mutable.ListBuffer
  21.  
  22. /**
  23. * plain bare minimum actor
  24. */
  25. class PlainActor extends Actor {
  26. println("")
  27. def receive: Receive = {
  28. case _ =>
  29. }
  30. }
  31.  
  32. class PrimitiveHandlingActor extends Actor {
  33. def receive: Receive = {
  34. case "hello world" => println("""received hello world """)
  35. case 11 => println("received ")
  36. case _ => println("some other data type")
  37. }
  38. }
  39.  
  40. // case class
  41.  
  42. case class Item(name: String, quantity: Int, rate: Double)
  43. case object Done
  44. case class Order(items: List[Item])
  45. case class Bill(double: Double)
  46.  
  47. class CartActor(billingActor: ActorRef, cartName: String) extends Actor {
  48. private val items = ListBuffer[Item]()
  49. def receive: Receive = {
  50. case item: Item => items.+=(item)
  51. case Done =>
  52. billingActor ! Order(items.toList)
  53. items.clear()
  54. }
  55. }
  56.  
  57. class BillingActor extends Actor {
  58. def receive: Receive = {
  59. case order: Order => println(s"""Heres your bill
  60. |${Bill(order.items.foldLeft(0.0)((a, b) => a + (b.quantity * b.rate)))}""".stripMargin)
  61. }
  62. }
  63.  
  64. object AkkaIntroTalk extends App {
  65. val actorSystem = ActorSystem("actorsystem")
  66. val billingActor: ActorRef = actorSystem.actorOf(Props[BillingActor], "billingActor")
  67. val cartActor: ActorRef = actorSystem.actorOf(Props(classOf[CartActor], billingActor, "cart1"), "cartActor")
  68.  
  69. cartActor ! Item("Apple", 3, 20.0)
  70. cartActor ! Item("Orange", 3, 15.0)
  71. cartActor ! Item("Butter", 1, 70.0)
  72.  
  73. cartActor ! Done
  74.  
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement