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