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));
            }
        }