Rewritten "home" address management and protocol, all test pass except 2

This commit is contained in:
Jonas Bonér 2010-05-16 10:59:06 +02:00
parent 21e6085864
commit b2b4b7d799
61 changed files with 668 additions and 866 deletions

View file

@ -112,6 +112,9 @@ object RemoteServer {
else Some(server)
}
private[akka] def serverFor(address: InetSocketAddress): Option[RemoteServer] =
serverFor(address.getHostName, address.getPort)
private[remote] def register(hostname: String, port: Int, server: RemoteServer) =
remoteServers.put(Address(hostname, port), server)
@ -154,13 +157,22 @@ class RemoteServer extends Logging {
def isRunning = _isRunning
def start: Unit = start(None)
def start: RemoteServer =
start(hostname, port, None)
def start(loader: Option[ClassLoader]): Unit = start(hostname, port, loader)
def start(loader: Option[ClassLoader]): RemoteServer =
start(hostname, port, loader)
def start(_hostname: String, _port: Int): Unit = start(_hostname, _port, None)
def start(address: InetSocketAddress): RemoteServer =
start(address.getHostName, address.getPort, None)
def start(_hostname: String, _port: Int, loader: Option[ClassLoader]): Unit = synchronized {
def start(address: InetSocketAddress, loader: Option[ClassLoader]): RemoteServer =
start(address.getHostName, address.getPort, loader)
def start(_hostname: String, _port: Int): RemoteServer =
start(_hostname, _port, None)
def start(_hostname: String, _port: Int, loader: Option[ClassLoader]): RemoteServer = synchronized {
try {
if (!_isRunning) {
hostname = _hostname
@ -182,6 +194,7 @@ class RemoteServer extends Logging {
} catch {
case e => log.error(e, "Could not start up remote server")
}
this
}
def shutdown = synchronized {
@ -334,7 +347,7 @@ class RemoteServerHandler(
val actorRef = createActor(request.getTarget, request.getUuid, request.getTimeout)
actorRef.start
val message = RemoteProtocolBuilder.getMessage(request)
if (request.getIsOneWay) {
if (request.hasSender) {
val sender = request.getSender
if (sender ne null) actorRef.!(message)(Some(ActorRef.fromProtocol(sender)))
} else {