void IDispatcher.SetInterlockErrorSwitches(InterlockErrorSwitchesMessage pMessage) { IDispatcher target; lock (this) { target = Target; } if (target != null) { target.SetInterlockErrorSwitches(pMessage); } }
/// <summary> /// Updates the inconsistent state of all power points in a sub-area in this region. /// </summary> /// <param name="message">The received data.</param> public void UpdateFromRun8(InterlockErrorSwitchesMessage message) { SubArea subArea; if (SubAreas.TryGetValue((ushort)message.Route, out subArea)) { subArea.UpdateFromRun8(message); } else if (squelchUnknownSubAreas.Add(message.Route)) { Debug.Print("Received update for unknown sub-area " + message.Route + "."); } }
/// <summary> /// Updates the inconsistent state of all power points in this sub-area. /// </summary> /// <param name="message">The received data.</param> public void UpdateFromRun8(InterlockErrorSwitchesMessage message) { message.InterlockErrorSwitches.Sort(); IReadOnlyList <Points> pts = PowerPoints; ForEachNumberPresentAbsent((int i, bool error) => { pts[i].UpdateInterlockErrorFromRun8(error); }, pts.Count, message.InterlockErrorSwitches); if (message.InterlockErrorSwitches.Count > 0 && message.InterlockErrorSwitches[message.InterlockErrorSwitches.Count - 1] >= pts.Count && !PointsCountMismatchPrinted) { Debug.Print("Run8 sent inconsistent power points number " + message.InterlockErrorSwitches[message.InterlockErrorSwitches.Count - 1] + " which sub-area " + ID + " doesn't know about."); PointsCountMismatchPrinted = true; } }
public virtual void SetInterlockErrorSwitches(InterlockErrorSwitchesMessage pMessage) { }
void IDispatcher.SetInterlockErrorSwitches(InterlockErrorSwitchesMessage pMessage) { MessageReceived = true; SyncContext.Post((object state) => Region.UpdateFromRun8(pMessage), null); }