public static IMessage Factory(string rawMessage) { if (reMessageType.IsMatch(rawMessage)) { char id = rawMessage.First(); switch (id) { case '0': return(DisconnectMessage.Deserialize(rawMessage)); case '1': return(ConnectMessage.Deserialize(rawMessage)); case '2': return(new Heartbeat()); case '3': return(TextMessage.Deserialize(rawMessage)); case '4': return(JSONMessage.Deserialize(rawMessage)); case '5': return(EventMessage.Deserialize(rawMessage)); case '6': return(AckMessage.Deserialize(rawMessage)); case '7': return(ErrorMessage.Deserialize(rawMessage)); case '8': return(new NoopMessage()); default: Debug.WriteLine(string.Format("Message.Factory undetermined message: {0}", rawMessage)); return(new TextMessage()); } } else { Debug.WriteLine(string.Format("Message.Factory did not find matching message type: {0}", rawMessage)); return(new NoopMessage()); } }
public static DisconnectMessage Deserialize(string rawMessage) { DisconnectMessage msg = new DisconnectMessage(); // 0:: // 0::/test msg.RawMessage = rawMessage; string[] args = rawMessage.Split(SPLITCHARS, 3); if (args.Length == 3) { if (!string.IsNullOrWhiteSpace(args[2])) { msg.Endpoint = args[2]; } } return(msg); }