public bool dispatch(AbstractMessage e)
        {
            bool result = false;
            int  code   = e.getMessageType();
            List <ListenerBox> list;

            if (eventsMap.TryGetValue(code, out list))
            {
                foreach (ListenerBox listenerBox in list.ToArray())
                {
                    listenerBox.listener(e);
                }
                result = true;
            }

            List <Action <AbstractMessage> > onceList;

            if (onceListenerMaps.TryGetValue(code, out onceList))
            {
                foreach (Action <AbstractMessage> item in onceList.ToArray())
                {
                    item(e);
                }
                onceListenerMaps.Remove(code);
                result = true;
            }
            return(result);
        }
Esempio n. 2
0
 /**
  * 消息头生成
  */
 public static byte[] encodeHead(AbstractMessage obj, byte[] data)
 {
     byte[] head     = new byte[Utils.SIZE_OF_INT * 2];
     byte[] sizeByte = Utils.intToBytes(head.Length + data.Length);
     //Array.Reverse(sizeByte);
     byte[] mainByte = Utils.intToBytes(obj.getMessageType());
     //byte [] subByte = Utils.intToBytes(obj.getSub());
     Array.Copy(sizeByte, 0, head, 0, sizeByte.Length);
     Array.Copy(mainByte, 0, head, sizeByte.Length, mainByte.Length);
     //Array.Copy(subByte,0,head,(sizeByte.Length+mainByte.Length),subByte.Length);
     return(head);
 }