예제 #1
0
        internal void DispatchRealData(Msg msg)
        {
            int cmd = msg.Cmd;

            if (cmdCallbackMap.ContainsKey(cmd))
            {
                CmdCallback callback = cmdCallbackMap [cmd];
                if (callback != null)
                {
                    callback(msg);
                }
                cmdCallbackMap.Remove(cmd);
            }
            else if (cmdCallbackWraperMap.ContainsKey(cmd))
            {
                CmdCallbackWraper cmdCallbackWraper = cmdCallbackWraperMap[cmd];
                if (cmdCallbackWraper != null)
                {
                    cmdCallbackWraper.proc(msg);
                    cmdCallbackWraperMap.Remove(cmd);
                }
            }
            else
            {
                if (onMsgPush != null)
                {
                    onMsgPush(msg);
                }
            }
        }
예제 #2
0
 public void AddCmdCallbackMap(Msg msg, Object callback)
 {
     if (callback == null)
     {
         return;
     }
     if (callback is CmdCallback)
     {
         cmdCallbackMap[msg.Cmd] = callback as CmdCallback;
         AddSendDataMap(msg);
     }
     else if (callback is CmdCallbackWraper)
     {
         CmdCallbackWraper cmdCallbackWraper = callback as CmdCallbackWraper;
         if (cmdCallbackWraper.IsCallback())
         {
             AddSendDataMap(msg);
             cmdCallbackWraperMap[msg.Cmd] = callback as CmdCallbackWraper;
         }
     }
 }