pekko/akka-remote/src/main/scala/akka/remote/BootableRemoteActorService.scala

42 lines
1.3 KiB
Scala
Raw Normal View History

2009-12-22 19:05:16 +01:00
/**
* Copyright (C) 2009-2011 Scalable Solutions AB <http://scalablesolutions.se>
2009-12-22 19:05:16 +01:00
*/
2010-05-21 20:08:49 +02:00
package akka.remote
2009-12-22 19:05:16 +01:00
import akka.config.Config.config
2010-12-14 18:22:46 +01:00
import akka.actor. {ActorRegistry, BootableActorLoaderService}
import akka.util. {ReflectiveAccess, Bootable, Logging}
2009-12-22 19:05:16 +01:00
2009-12-26 15:09:44 +01:00
/**
* This bundle/service is responsible for booting up and shutting down the remote actors facility
* <p/>
* It is used in Kernel
2009-12-26 15:09:44 +01:00
*/
2009-12-22 19:05:16 +01:00
trait BootableRemoteActorService extends Bootable with Logging {
self: BootableActorLoaderService =>
2009-12-22 19:05:16 +01:00
protected lazy val remoteServerThread = new Thread(new Runnable() {
def run = ActorRegistry.remote.start(loader = self.applicationLoader) //Use config host/port
2009-12-22 19:05:16 +01:00
}, "Akka Remote Service")
2010-11-24 21:05:12 +01:00
2009-12-22 19:05:16 +01:00
def startRemoteService = remoteServerThread.start
2010-05-21 20:08:49 +02:00
2010-08-10 21:42:27 +02:00
abstract override def onLoad = {
2010-11-22 15:32:54 +01:00
if (RemoteServer.isRemotingEnabled) {
2010-11-24 13:42:41 +01:00
log.slf4j.info("Initializing Remote Actors Service...")
2009-12-26 15:09:44 +01:00
startRemoteService
2010-11-24 13:42:41 +01:00
log.slf4j.info("Remote Actors Service initialized")
2009-12-26 15:09:44 +01:00
}
super.onLoad
2009-12-22 19:05:16 +01:00
}
2009-12-22 19:05:16 +01:00
abstract override def onUnload = {
2010-11-24 13:42:41 +01:00
log.slf4j.info("Shutting down Remote Actors Service")
ActorRegistry.remote.shutdown
if (remoteServerThread.isAlive) remoteServerThread.join(1000)
2010-11-24 13:42:41 +01:00
log.slf4j.info("Remote Actors Service has been shut down")
super.onUnload
2009-12-22 19:05:16 +01:00
}
}