Esempio n. 1
0
 private void AskForRegenerationRepetition(string nodeId, InputMovingWindow window)
 {
     try
     {
         IEnumerable <int> missingMessages = window.GetMissingMessages();
         bool any = false;
         foreach (var missingMessageNo in missingMessages)
         {
             any = true;
             _innerChannel.Publish("/emcaster/reliability/regenerateReq",
                                   new RegenerateRequest(nodeId, missingMessageNo));
         }
         if (any)
         {
             _daemon.ScheduleOne(() => AskForRegenerationRepetition(nodeId, window),
                                 TimeSpan.FromMilliseconds(200));
         }
         else
         {
             lock (_regeneratingWindows) _regeneratingWindows.Remove(window);
         }
     }
     catch (Exception ex)
     {
         Logger.Error("Unexpected error.", ex);
         throw ex;
     }
 }
Esempio n. 2
0
 private void AskForRegeneration(string nodeId, InputMovingWindow window)
 {
     lock (_regeneratingWindows) if (!_regeneratingWindows.Add(window))
         {
             return;
         }
     AskForRegenerationRepetition(nodeId, window);
 }
 private void AskForRegenerationRepetition(string nodeId, InputMovingWindow window)
 {
     try
     {
         IEnumerable<int> missingMessages = window.GetMissingMessages();
         bool any = false;
         foreach (var missingMessageNo in missingMessages)
         {
             any = true;
             _innerChannel.Publish("/emcaster/reliability/regenerateReq",
                                   new RegenerateRequest(nodeId, missingMessageNo));
         }
         if (any)
             _daemon.ScheduleOne(() => AskForRegenerationRepetition(nodeId, window),
                                 TimeSpan.FromMilliseconds(200));
         else
             lock (_regeneratingWindows) _regeneratingWindows.Remove(window);
     }
     catch (Exception ex)
     {
         Logger.Error("Unexpected error.", ex);
         throw ex;
     }
 }
 private void AskForRegeneration(string nodeId, InputMovingWindow window)
 {
     lock (_regeneratingWindows) if(!_regeneratingWindows.Add(window)) return;
     AskForRegenerationRepetition(nodeId, window);
 }