public void ParseRaw(byte[] b, int length, IPEndPoint point) { string raw = Encoding.GetString(b, 0, length); if (raw == null) { return; } // If raw lenght is 0. Ignore if (raw.Length == 0) { return; } ConMessage msg = null; switch (raw[0]) { case '$': // Nmdc int pos; string cmd = null; if ((pos = raw.IndexOf(' ')) != -1) { cmd = raw.Substring(0, pos).ToLower(); } else { if (raw.Length >= 10) { break; } cmd = raw.ToLower(); } if (cmd == null || cmd.Equals(string.Empty)) { break; } switch (cmd) { case "$sr": msg = new ConMessage(null, b); break; } break; case 'U': // Adc Adc.AdcBaseMessage adc = null; if (!(adc = new Adc.RES(null, raw)).IsValid) { adc = null; } if (adc == null && !(adc = new Adc.RES(null, raw)).IsValid) { adc = null; } msg = adc; break; } // Do we support message type? if (msg == null) { return; } // Plugin handling here FmdcEventArgs e = new FmdcEventArgs(Actions.CommandIncomming, msg); MessageReceived(this, e); if (!e.Handled) { ActOnInMessage(msg); } }
protected StrMessage ParseMessage(string raw) { raw = raw.Replace(this.Seperator, ""); AdcBaseMessage msg = new AdcBaseMessage(con, raw); switch (msg.Action) { case "SUP": msg = new SUP(con, raw); break; case "SID": msg = new SID(con, raw); break; case "MSG": msg = new MSG(con, raw); break; case "INF": msg = new INF(con, raw); break; case "STA": msg = new STA(con, raw); break; case "QUI": msg = new QUI(con, raw); break; case "GPA": msg = new GPA(con, raw); break; case "CTM": msg = new CTM(con, raw); break; case "SND": msg = new SND(con, raw); break; case "GFI": msg = new GFI(con, raw); break; case "GET": msg = new GET(con, raw); break; case "RCM": msg = new RCM(con, raw); break; case "SCH": msg = new SCH(con, raw); break; case "RES": msg = new RES(con, raw); break; case "PAS": msg = new PAS(con, raw); break; } return msg; }