Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import akka.actor.{ ActorRef, ActorSystem, Props, Actor, Inbox }
- import com.typesafe.config.ConfigFactory
- import scala.language.postfixOps
- import scala.concurrent.duration._
- object PrimalityClient {
- def main(args: Array[String]) {
- val num = if (args.length > 0) args(0).toInt else 2001
- val system = ActorSystem("helloakka", ConfigFactory.load("helloclient"))
- val ma = system.actorOf(Props[MasterActor], name = "MA")
- ma ! num
- }
- }
- class MasterActor extends Actor {
- val workers = Vector(
- context.actorOf(Props[TesterWorker], "worker0"),
- context.actorOf(Props[TesterWorker], "worker1"),
- )
- var count = 0
- var num: Int = 0
- def receive = {
- case n: Int => {
- num = n
- val start = 2
- val stop = n - 1
- val slice = ((stop - start + 1)/workers.length.toFloat).ceil.toInt
- println(s"slice: ${slice}")
- (0 until workers.length) map { case index =>
- val lstart = start + index*slice
- val lstop = (start + (index+1)*slice - 1) min stop
- workers(index) ! TestRange(n, lstart, lstop)
- }
- }
- case Found(d) => {
- println(s"${num} is not prime because ${d} divides it.")
- }
- case FinishedNoneFound(_,_) => {
- count += 1
- if (count == workers.length) {
- println(s"${num} is prime")
- context stop self
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement