public void ConsumeTimedTrigger(TimedTriggerMessage message) { // Check all modules. foreach (string moduleName in moduleCoordinator.ModuleControllers.Keys) { IModuleController moduleController = moduleCoordinator.ModuleControllers[moduleName]; // Check if the module is alive. if (!moduleController.IsAlive) { if (!restartCounts.ContainsKey(moduleName)) { restartCounts.Add(moduleName, 0); } if (restartCounts[moduleName] < maxRestartCount) { // Restart module. moduleController.Stop(); moduleController.Start(); restartCounts[moduleName]++; } else { throw new Exception(string.Format("Module {0} died and could not be restarted.", moduleName)); } } } }
public void ConsumeTimedTrigger(TimedTriggerMessage message) { bool foundMessageToSchedule = false; DateTime now = DateTime.Now; // Post all messages, which are ready. while ((scheduledMessages.Count != 0) && !foundMessageToSchedule) { // Get the next message. ScheduledMessage scheduledMessage = scheduledMessages[0]; // Is the message ready? if (scheduledMessage.DueTime <= now) { // Yes -> Post it. moduleCoordinator.PostMessage(scheduledMessage.ModuleName, scheduledMessage.Message); scheduledMessages.RemoveAt(0); } else { // There is a message, which is not ready. We have // to set up the scheduler. foundMessageToSchedule = true; } } // If there is still a message, which is not ready, schedule it. if (foundMessageToSchedule) { SetTimedTriggerForMessage(scheduledMessages[0]); } }