|
Akka/Scala example source code file (RemoteDeploymentWatcher.scala)
The RemoteDeploymentWatcher.scala Akka example source code/** * Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com> */ package akka.remote import akka.actor.InternalActorRef import akka.actor.Terminated import akka.actor.Actor import akka.actor.ActorRef import akka.dispatch.sysmsg.DeathWatchNotification import akka.dispatch.{ UnboundedMessageQueueSemantics, RequiresMessageQueue } /** * INTERNAL API */ private[akka] object RemoteDeploymentWatcher { final case class WatchRemote(actor: ActorRef, supervisor: ActorRef) } /** * INTERNAL API * * Responsible for cleaning up child references of remote deployed actors when remote node * goes down (jvm crash, network failure), i.e. triggered by [[akka.actor.AddressTerminated]]. */ private[akka] class RemoteDeploymentWatcher extends Actor with RequiresMessageQueue[UnboundedMessageQueueSemantics] { import RemoteDeploymentWatcher._ var supervisors = Map.empty[ActorRef, InternalActorRef] def receive = { case WatchRemote(a, supervisor: InternalActorRef) ⇒ supervisors += (a -> supervisor) context.watch(a) case t @ Terminated(a) if supervisors isDefinedAt a ⇒ // send extra DeathWatchNotification to the supervisor so that it will remove the child supervisors(a).sendSystemMessage(DeathWatchNotification(a, existenceConfirmed = t.existenceConfirmed, addressTerminated = t.addressTerminated)) supervisors -= a case _: Terminated ⇒ } } Other Akka source code examplesHere is a short list of links related to this Akka RemoteDeploymentWatcher.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.