public static EventMessage Deserialize(string rawMessage)
{
EventMessage evtMsg = new EventMessage();
// '5:' [message id ('+')] ':' [message endpoint] ':' [json encoded event]
// 5:1::{"a":"b"}
evtMsg.RawMessage = rawMessage;
try
{
string[] args = rawMessage.Split(SPLITCHARS, 4); // limit the number of pieces
if (args.Length == 4)
{
int id;
if (int.TryParse(args[1], out id))
evtMsg.AckId = id;
evtMsg.Endpoint = args[2];
evtMsg.MessageText = args[3];
if (!string.IsNullOrEmpty(evtMsg.MessageText) &&
evtMsg.MessageText.Contains("name") &&
evtMsg.MessageText.Contains("args"))
{
evtMsg.Json = JsonEncodedEventMessage.Deserialize(evtMsg.MessageText);
evtMsg.Event = evtMsg.Json.name;
}
else
evtMsg.Json = new JsonEncodedEventMessage();
}
}
catch (Exception ex)
{
Trace.WriteLine(ex);
}
return evtMsg;
}