예제 #1
0
        /// <summary>
        /// 构造一个新的协议并初始化协议头部.
        /// </summary>
        /// <param name="request">一级,类</param>
        /// <param name="action">二级,方法</param>
        /// <param name="returncode">三级,返回值</param>
        public ProtocolBytes(ERequestCode request, EActionCode action, EReturnCode returncode = EReturnCode.None)
        {
            RequestCode = request;
            ActionCode  = action;
            ReturnCode  = returncode;

            AddInt((int)RequestCode);
            AddInt((int)ActionCode);
            AddInt((int)ReturnCode);
        }
예제 #2
0
        /// <summary>
        /// 消息分发
        /// </summary>
        /// <param name="conn"></param>
        /// <param name="protocolBase"></param>
        private void HandleMsg(Conn conn, ProtocolBase protocolBase)
        {
            ERequestCode requestCode = protocolBase.RequestCode;
            EActionCode  actionCode  = protocolBase.ActionCode;

            Console.WriteLine($"收到来自[{conn.GetAddress()}]协议:[{ requestCode.ToString()}---{actionCode.ToString()}]");
            BaseController controller;

            if (!requestDict.TryGetValue(requestCode, out controller))
            {
                Console.WriteLine($"【警告】未找到Request:{requestCode.ToString()}对应的方法");
                return;
            }
            MethodInfo method = controller.GetType().GetMethod(actionCode.ToString());

            if (method == null)
            {
                Console.WriteLine($"【警告】未找到Action:{actionCode.ToString()}对应的方法");
                return;
            }
            object[] objs = new object[] { conn, protocolBase };
            method.Invoke(controller, objs);
        }