示例#1
0
        /// <summary>
        /// 处理由gate转发的client消息
        /// </summary>
        /// <param name="packet"></param>
        private void HandleProxyClientMsg(PacketBase packet)
        {
            ProxyC2SMsg proxy_msg = packet as ProxyC2SMsg;

            //转发的消息id
            ushort header = proxy_msg.data.ReadUShort();

            if (header < ProtocolID.MSG_BASE_C2SS || header >= ProtocolID.MSG_BASE_C2SS + ProtocolID.MSG_APPLAYER_PER_INTERVAL)
            {
                Log.Debug("收到错误的消息ID:" + header);
                return;
            }

            PacketBase msg = PacketPools.Get(header);

            msg.Read(proxy_msg.data);

            //处理
            ushort          msg_id = (ushort)(header - ProtocolID.MSG_BASE_C2SS);
            MsgProcFunction fun    = m_client_msg_proc[msg_id];

            if (fun == null)
            {
                Log.Debug("未注册消息处理函数ID:" + header);
            }
            else
            {
                fun(msg);
            }
            PacketPools.Recover(msg);
        }
        /// <summary>
        /// 处理消息
        /// </summary>
        /// <param name="conn_idx"></param>
        /// <param name="packet"></param>
        /// <returns></returns>
        public bool HandleMsg(long conn_idx, PacketBase packet)
        {
            ushort header = packet.header;

            if (header < m_msg_begin_idx || header >= m_msg_begin_idx + ProtocolID.MSG_APPLAYER_PER_INTERVAL)
            {
                return(false);
            }

            ushort          msg_id = (ushort)(header - m_msg_begin_idx);
            MsgProcFunction fun    = m_msg_proc[msg_id];

            if (fun == null)
            {
                Log.Warning("未处理消息:" + (m_msg_begin_idx + msg_id));
                return(false);
            }
            try
            {
                fun(packet);
            }
            catch (Exception e)
            {
                Log.Exception(e);
            }
            return(true);
        }
 private void RegisterMsgProc(ushort id, MsgProcFunction fun)
 {
     if (m_msg_proc.ContainsKey(id))
     {
         Log.Error("相同键已经存在:" + id);
         return;
     }
     m_msg_proc.Add(id, fun);
 }
        private void RegisterMsgProc(ushort id, MsgProcFunction fun)
        {
            ushort msg_id = (ushort)(id - m_msg_begin_idx);

            m_msg_proc[msg_id] = fun;
        }
示例#5
0
        private void RegisterClientMsgProc(ushort id, MsgProcFunction fun)
        {
            ushort msg_id = (ushort)(id - ProtocolID.MSG_BASE_C2SS);

            m_client_msg_proc[msg_id] = fun;
        }