コード例 #1
0
        /// <summary>
        /// ReceiveMessage
        /// -- -----------------------------------------------------------------------------------------------------------------------------
        /// -- Identifier   Message ID    Property   Sim Number       Order ID     Body                        Check Code  Idenfifier     --
        /// -- 7E           8100          000D       013100000000     F1D8         02810030383233313333383438  1A          7E             --
        /// --------------------------------------------------------------------------------------------------------------------------------
        /// </summary>
        /// <param name="data">"7Exxxxxxxx7E"  Representate a complete message</param>
        public void ReceiveMessage(byte[] data)
        {
            var messageID = decoder.DecodeToUshort(data, 1);

            if (!messageHandlerMap.ContainsKey(messageID))
            {
                //Error log for not implement message
                //Logger.Error($"{messageID} message not implement yet.");
                return;
            }

            //var simnum = GetSimNumber(data); //Useful?
            //check code?

            //Reflection to message handler
            var bodyLength = GetBodyLength(data);
            var body       = new byte[bodyLength];
            var orderID    = decoder.DecodeToUshort(data, 11);

            Array.Copy(data, 13, body, 0, body.Length);
            var handlerMethodName = messageHandlerMap[messageID];
            var classInfo         = typeof(DownOrderParser);
            var methodInfo        = classInfo.GetMethod(handlerMethodName);
            var parameters        = new object[] { orderID, body };

            methodInfo.Invoke(this, parameters);
        }