private void HandleGetDownloadTracker(GetDownloadTracker get) { // this tracker is a child of the current actor if (Context.Child(get.Key.Root.ToActorName()) != ActorRef.Nobody) { var tracker = Context.Child(get.Key.Root.ToActorName()); //let everyone know this tracker exists MasterBroadcast.Tell(new TrackerFound(get.Key, tracker)); } else if (Trackers.ContainsKey(get.Key)) { var tracker = Trackers[get.Key]; //verfiy that this tracker is still alive tracker.Ask <ActorIdentity>(new Identify(get.Key), TimeSpan.FromSeconds(1.5)) .ContinueWith <object>(tr => { if (tr.IsCanceled || tr.IsFaulted) { return(new TrackerDead(get.Key)); } return(new TrackerFound(get.Key, tr.Result.Subject)); }).PipeTo(MasterBroadcast); } else { //otherwise, we couldn't find a definition for this tracker MasterBroadcast.Tell(new TrackerNotFound(get.Key)); } }
private void HandleGetDownloadTracker(GetDownloadTracker get) { // this tracker is a child of the current actor if (!Context.Child(get.Key.Root.ToActorName()).Equals(ActorRefs.Nobody)) { var tracker = Context.Child(get.Key.Root.ToActorName()); //let everyone know this tracker exists MasterBroadcast.Tell(new TrackerFound(get.Key, tracker)); } else if (Trackers.ContainsKey(get.Key)) { var tracker = Trackers[get.Key]; //verfiy that this tracker is still alive tracker.Ask<ActorIdentity>(new Identify(get.Key), TimeSpan.FromSeconds(1.5)) .ContinueWith<object>(tr => { if (tr.IsCanceled || tr.IsFaulted) return new TrackerDead(get.Key); return new TrackerFound(get.Key, tr.Result.Subject); }).PipeTo(MasterBroadcast); } else { //otherwise, we couldn't find a definition for this tracker MasterBroadcast.Tell(new TrackerNotFound(get.Key)); } }