private void BecomeWaitingForTracker(RequestDownloadTrackerFor request)
 {
     Become(WaitingForTracker);
     OutstandingAcknowledgments = MasterBroadcast.Ask <Routees>(new GetRoutees()).Result.Members.Count();
     MasterBroadcast.Tell(new GetDownloadTracker(request.Key));
     Context.SetReceiveTimeout(TimeSpan.FromSeconds(1.5));
 }
        private void Ready()
        {
            Receive <RequestDownloadTrackerFor>(request =>
            {
                RequestedTracker = request;
                BecomeWaitingForTracker(request);
            });

            Receive <GetDownloadTracker>(get =>
            {
                HandleGetDownloadTracker(get);
            });

            Receive <TrackerFound>(found =>
            {
                Trackers[found.Key] = found.Tracker;
            });

            Receive <CreatedTracker>(tracker =>
            {
                Trackers[tracker.Key] = tracker.Tracker;
            });

            Receive <TrackerDead>(dead =>
            {
                if (Trackers.ContainsKey(dead.Key))
                {
                    Trackers.Remove(dead.Key);
                }
            });
        }
 private void BecomeWaitingForTracker(RequestDownloadTrackerFor request)
 {
     Become(WaitingForTracker);
     OutstandingAcknowledgments = MasterBroadcast.Ask<Routees>(new GetRoutees()).Result.Members.Count();
     MasterBroadcast.Tell(new GetDownloadTracker(request.Key));
     Context.SetReceiveTimeout(TimeSpan.FromSeconds(1.5));
 }
        private void Ready()
        {
            Receive<RequestDownloadTrackerFor>(request =>
            {
                RequestedTracker = request;
                BecomeWaitingForTracker(request);
            });

            Receive<GetDownloadTracker>(get =>
            {
                HandleGetDownloadTracker(get);
            });

            Receive<TrackerFound>(found =>
            {
                Trackers[found.Key] = found.Tracker;
            });

            Receive<CreatedTracker>(tracker =>
            {
                Trackers[tracker.Key] = tracker.Tracker;
            });

            Receive<TrackerDead>(dead =>
            {
                if (Trackers.ContainsKey(dead.Key))
                {
                    Trackers.Remove(dead.Key);
                }
            });
        }