private void RegisterUpdatesForComponent( SessionComponent c, bool terminateOnError = false) { //Log.Trace("Start RegisterUpdatesForComponent", "RegisterUpdatesForComponent"); //Log.Trace("Registering component " + c.ComponentName + " for updates.", "RegisterUpdatesForComponent"); Dictionary <uint, Action> componentUpdates; try { componentUpdates = c.UpdateActions; } catch (Exception e) { Log.Error("Error getting UpdateActions, ensure you have a " + "valid dictionary: " + e, "RegisterUpdatesForComponent"); return; } if (componentUpdates == null) { return; } foreach (KeyValuePair <uint, Action> kvp in componentUpdates) { RegisterUpdateForComponent(kvp.Key, kvp.Value, c, terminateOnError); } //Log.Trace("End RegisterUpdatesForComponent", "RegisterUpdatesForComponent"); }
public static void RegisterSessionComponent( SessionComponent component, RunLocation targetLocation = RunLocation.Any, bool terminateOnError = false ) { UpdateActions.Enqueue(() => { Instance.RegisterComponentInternal(component, targetLocation, terminateOnError); }); }
private void RegisterComponentInternal( SessionComponent component, RunLocation targetLocation = RunLocation.Any, bool terminateOnError = false) { if (ShouldRunForRegistered(targetLocation)) { //Log.Debug("Registering component " + component.ComponentName, // "RegisterComponentInternal"); InitializeComponent(component, terminateOnError); RegisteredComponents.Add(component); } }
private void DeregisterUpdatesForComponent(SessionComponent c) { List <uint> updateFeqs = new List <uint>(RegisteredUpdates.Keys); foreach (uint frequency in updateFeqs) { RegisteredUpdates[frequency] = RegisteredUpdates[frequency]. Where((x) => x.Component != c). ToList(); if (RegisteredUpdates[frequency].Count == 0) { RegisteredUpdates.Remove(frequency); continue; } } }
private void TerminateComponent(SessionComponent c) { if (c.Status == RunStatus.Terminated) { Log.Warning("Tried to terminate already terminated " + c.ComponentName, "TerminateComponent"); return; } Log.Debug("Terminating component", "TerminateComponent"); try { c.Terminate(); } catch (Exception e) { Log.Error("Error terminating component " + c.ComponentName + " : " + e, "TerminateComponent"); } c.Status = RunStatus.Terminated; DeregisterUpdatesForComponent(c); //Log.Trace("Finished terminating component " + c.ComponentName, "TerminateComponent"); }
private void RegisterUpdateForComponent( uint frequency, Action update, SessionComponent c, bool terminateOnError = false) { //Log.Trace("Start RegisterUpdateForComponent", "RegisterUpdateForComponent"); if (update == null) { return; } //Log.Trace("Registering update action for component " + c.ComponentName + " with frequency " + frequency, "RegisterUpdateForComponent"); GetUpdateList(frequency).Add(new ComponentUpdate { UpdateAction = update, Component = c, TerminatesOnError = terminateOnError, }); //Log.Trace("End RegisterUpdateForComponent", "RegisterUpdateForComponent"); }
private void InitializeComponent(SessionComponent c, bool terminateOnError = false) { if (c.Status == RunStatus.NotInitialized) { try { //Log.Debug("Initializing component " + c.ComponentName, "InitializeComponent"); c.Initialize(); if (c.IsRunning) { RegisterUpdatesForComponent(c, terminateOnError); } } catch (Exception e) { Log.Error("Error Initializing component " + c.ComponentName + " : " + e, "InitializeComponent"); c.Status = RunStatus.Terminated; } } else { Log.Warning("Tried to initialize already initialized " + c.ComponentName, "InitializeComponent"); } }
private void TerminateComponent(SessionComponent c) { if (c.Status == RunStatus.Terminated) { Log.Warning("Tried to terminate already terminated " + c.ComponentName, "TerminateComponent"); return; } Log.Debug("Terminating component", "TerminateComponent"); try { c.Terminate(); } catch (Exception e) { Log.Error("Error terminating component " + c.ComponentName + " : " + e, "TerminateComponent"); } c.Status = RunStatus.Terminated; DeregisterUpdatesForComponent(c); //Log.Trace("Finished terminating component " + c.ComponentName, "TerminateComponent"); }
private void RegisterUpdatesForComponent( SessionComponent c, bool terminateOnError = false) { //Log.Trace("Start RegisterUpdatesForComponent", "RegisterUpdatesForComponent"); //Log.Trace("Registering component " + c.ComponentName + " for updates.", "RegisterUpdatesForComponent"); Dictionary<uint, Action> componentUpdates; try {componentUpdates = c.UpdateActions; } catch (Exception e) { Log.Error("Error getting UpdateActions, ensure you have a " + "valid dictionary: " + e, "RegisterUpdatesForComponent"); return; } if (componentUpdates == null) return; foreach (KeyValuePair<uint, Action> kvp in componentUpdates) { RegisterUpdateForComponent(kvp.Key, kvp.Value, c, terminateOnError); } //Log.Trace("End RegisterUpdatesForComponent", "RegisterUpdatesForComponent"); }
private void RegisterUpdateForComponent( uint frequency, Action update, SessionComponent c, bool terminateOnError = false) { //Log.Trace("Start RegisterUpdateForComponent", "RegisterUpdateForComponent"); if (update == null) return; //Log.Trace("Registering update action for component " + c.ComponentName + " with frequency " + frequency, "RegisterUpdateForComponent"); GetUpdateList(frequency).Add(new ComponentUpdate { UpdateAction = update, Component = c, TerminatesOnError = terminateOnError, }); //Log.Trace("End RegisterUpdateForComponent", "RegisterUpdateForComponent"); }
private void RegisterComponentInternal( SessionComponent component, RunLocation targetLocation = RunLocation.Any, bool terminateOnError = false) { if (ShouldRunForRegistered(targetLocation)) { //Log.Debug("Registering component " + component.ComponentName, // "RegisterComponentInternal"); InitializeComponent(component, terminateOnError); RegisteredComponents.Add(component); } }
private void InitializeComponent(SessionComponent c, bool terminateOnError = false) { if (c.Status == RunStatus.NotInitialized) { try { //Log.Debug("Initializing component " + c.ComponentName, "InitializeComponent"); c.Initialize(); if (c.IsRunning) RegisterUpdatesForComponent(c, terminateOnError); } catch (Exception e) { Log.Error("Error Initializing component " + c.ComponentName + " : " + e, "InitializeComponent"); c.Status = RunStatus.Terminated; } } else { Log.Warning("Tried to initialize already initialized " + c.ComponentName, "InitializeComponent"); } }
private void DeregisterUpdatesForComponent(SessionComponent c) { List<uint> updateFeqs = new List<uint>(RegisteredUpdates.Keys); foreach (uint frequency in updateFeqs) { RegisteredUpdates[frequency] = RegisteredUpdates[frequency]. Where((x) => x.Component != c). ToList(); if (RegisteredUpdates[frequency].Count == 0) { RegisteredUpdates.Remove(frequency); continue; } } }
public static void RegisterSessionComponent( SessionComponent component, RunLocation targetLocation = RunLocation.Any, bool terminateOnError = false ) { UpdateActions.Enqueue(() => { Instance.RegisterComponentInternal(component, targetLocation, terminateOnError); }); }