void IDispatcher.SetOccupiedSwitches(OccupiedSwitchesMessage pMessage) { IDispatcher target; lock (this) { target = Target; } if (target != null) { target.SetOccupiedSwitches(pMessage); } }
/// <summary> /// Updates the occupied state of all power points in a sub-area in this region. /// </summary> /// <param name="message">The received data.</param> public void UpdateFromRun8(OccupiedSwitchesMessage 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 occupied state of all power points in this sub-area. /// </summary> /// <param name="message">The received data.</param> public void UpdateFromRun8(OccupiedSwitchesMessage message) { message.OccupiedSwitches.Sort(); IReadOnlyList <Points> pts = PowerPoints; ForEachNumberPresentAbsent((int i, bool occupied) => { pts[i].UpdateOccupiedFromRun8(occupied); }, pts.Count, message.OccupiedSwitches); if (message.OccupiedSwitches.Count > 0 && message.OccupiedSwitches[message.OccupiedSwitches.Count - 1] >= pts.Count && !PointsCountMismatchPrinted) { Debug.Print("Run8 sent inconsistent power points number " + message.OccupiedSwitches[message.OccupiedSwitches.Count - 1] + " which sub-area " + ID + " doesn't know about."); PointsCountMismatchPrinted = true; } }
public virtual void SetOccupiedSwitches(OccupiedSwitchesMessage pMessage) { }
void IDispatcher.SetOccupiedSwitches(OccupiedSwitchesMessage pMessage) { MessageReceived = true; SyncContext.Post((object state) => Region.UpdateFromRun8(pMessage), null); }