Advertisement
Guest User

Untitled

a guest
Jul 7th, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.37 KB | None | 0 0
  1. import akka.actor.{ ActorRef, ActorSystem, Props, Actor, Inbox }
  2. import com.typesafe.config.ConfigFactory
  3. import scala.language.postfixOps
  4. import scala.concurrent.duration._
  5.  
  6. object PrimalityClient {
  7.  
  8.   def main(args: Array[String]) {
  9.     val num = if (args.length > 0) args(0).toInt else 2001
  10.  
  11.     val system = ActorSystem("helloakka", ConfigFactory.load("helloclient"))
  12.  
  13.     val  ma = system.actorOf(Props[MasterActor], name = "MA")
  14.     ma ! num
  15.   }
  16. }
  17.  
  18. class MasterActor extends Actor {
  19.  
  20.   val workers = Vector(
  21.     context.actorOf(Props[TesterWorker], "worker0"),
  22.     context.actorOf(Props[TesterWorker], "worker1"),
  23.   )
  24.   var count = 0
  25.   var num: Int = 0
  26.   def receive = {
  27.     case n: Int => {
  28.       num = n
  29.  
  30.       val start = 2
  31.       val stop = n - 1
  32.       val slice = ((stop - start + 1)/workers.length.toFloat).ceil.toInt
  33.       println(s"slice: ${slice}")
  34.       (0 until workers.length) map { case index =>
  35.         val lstart = start + index*slice
  36.         val lstop = (start + (index+1)*slice - 1) min stop
  37.  
  38.         workers(index) ! TestRange(n, lstart, lstop)
  39.       }
  40.     }
  41.     case Found(d) => {
  42.       println(s"${num} is not prime because ${d} divides it.")
  43.     }
  44.  
  45.     case FinishedNoneFound(_,_) => {
  46.       count += 1
  47.       if (count == workers.length) {
  48.         println(s"${num} is prime")
  49.         context stop self
  50.       }
  51.     }
  52.   }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement