/// <summary> /// Parses a received message into an eventTable. /// Fires an onReceiveEventTable event if successful /// </summary> /// <param name="content">The message that should be parsed</param> /// <param name="type">The expected type of the eventTable</param> /// <returns>Whether or not parsing the eventTable was successful</returns> private bool ParseEventTable(byte[] content, MessageType type) { List <EventState> eventStates = new List <EventState>(); using (BinaryReader reader = new BinaryReader(new MemoryStream(content))) { try { do { EventState state = null; switch (type) { case MessageType.EventTableValueStates: state = ValueState.Parse(reader); break; case MessageType.EventTableTextStates: state = TextState.Parse(reader); break; case MessageType.EventTableDaytimerStates: state = DaytimerState.Parse(reader); break; case MessageType.EventTableWeatherStates: state = WeatherState.Parse(reader); break; default: return(false); } eventStates.Add(state); } while (reader.BaseStream.Length - reader.BaseStream.Position > 0); } catch { return(false); } } if (OnReceiveEventTable != null) { OnReceiveEventTable.Invoke(this, new EventStatesParsedEventArgs(type, eventStates)); return(true); } else { return(false); } }