4
votes

Not sure whether I am missing something. When making an actor remote, the main method does not terminate.

Here is a snippet that demonstrates the problem.

import scala.actors._
import scala.actors.remote._
object TestMe {
  def main(args : Array[String]) : Unit = {
      object jim extends DaemonActor {
          // comment out these two lines and the application will terminate
          RemoteActor.alive(12345)
          RemoteActor.register('jim,this)         
          def act {
              loop {
                  receive {
                      case 'quit =>
                       println("\nquiting")
                        exit('normal)
                      case any => 
                        println(any)
                  }
              }
          }
      }
      jim.start
      jim ! "hello"
      jim ! 'quit
  }
}
1

1 Answers

4
votes

Put your .alive and .register calls inside act() and your code successfully terminates.