Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 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;
 }