tags:

views:

89

answers:

1

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
  }
}
+3  A: 

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

Magnus
Thank you for solving my problem!It would be nice if these methods fail misarably when you call them from the wrong context.
Willem