Share same instance of deadLetters between LARP and RARP, see #2983

This commit is contained in:
Patrik Nordwall 2013-01-31 09:24:12 +01:00
parent 46a6e34103
commit f89dd49954
2 changed files with 12 additions and 6 deletions

View file

@ -77,6 +77,7 @@ object RemoteActorRefProvider {
}
override def specialHandle(msg: Any): Boolean = msg match {
// unwrap again in case the original message was DeadLetter(EndpointManager.Send(m))
case EndpointManager.Send(m, _, _) super.specialHandle(m)
case _ super.specialHandle(msg)
}
@ -111,14 +112,15 @@ class RemoteActorRefProvider(
*/
protected def createDeployer: RemoteDeployer = new RemoteDeployer(settings, dynamicAccess)
private val local = new LocalActorRefProvider(systemName, settings, eventStream, scheduler, dynamicAccess, deployer)
private val local = new LocalActorRefProvider(systemName, settings, eventStream, scheduler, dynamicAccess, deployer,
Some(deadLettersPath new RemoteDeadLetterActorRef(this, deadLettersPath, eventStream)))
@volatile
private var _log = local.log
def log: LoggingAdapter = _log
override def rootPath: ActorPath = local.rootPath
override val deadLetters: InternalActorRef = new RemoteDeadLetterActorRef(this, rootPath / "deadLetters", eventStream)
override def deadLetters: InternalActorRef = local.deadLetters
// these are only available after init()
override def rootGuardian: InternalActorRef = local.rootGuardian