/// <summary>
        /// 编码客户端向服务器发送的请求消息,暂不加密,
        /// </summary>
        /// <param name="gameMessage"></param>
        public byte[] EncodeGameMessage(IGameMessage gameMessage)
        {
            seqid++;
            gameMessage.GetMessageHeader().SeqId = seqid;
            int total = 19;

            byte[] body = gameMessage.EncodeBody();
            if (body != null)
            {
                total += body.Length;
            }
            GameMessageHeader header  = gameMessage.GetMessageHeader();
            ByteBuf           byteBuf = new ByteBuf(total);

            byteBuf.WriteShort(total);
            byteBuf.WriteInt(header.SeqId);
            byteBuf.WriteShort(header.MessageId);
            byteBuf.WriteLong(DateUtil.GetCurrentTimeUnix());
            byteBuf.WriteShort((short)header.ServerType);
            byteBuf.WriteByte(0);
            if (body != null)
            {
                byteBuf.WriteBytes(body);
            }
            byte[] msg = byteBuf.ToArray();
            return(msg);
        }
示例#2
0
        public AbstractGameMessage()
        {
            messageHeader = ReadGameMessageMeta();
            int serverType = (int)this.messageHeader.ServerType;
            int messageId  = this.messageHeader.MessageId;

            this.messageUniqueId = CreateGameMessageUniqueId(serverType, messageId);
        }
示例#3
0
        public static GameMessageHeader ReadGameMessageMeta(Type objType)
        {
            GameMessageHeader messageHeader   = new GameMessageHeader();
            GameMessageMeta   gameMessageMeta = (GameMessageMeta)objType.GetCustomAttributes(typeof(GameMessageMeta), false).FirstOrDefault();

            messageHeader.MessageId  = gameMessageMeta.MessageId;
            messageHeader.ServerType = gameMessageMeta.ServerType;
            return(messageHeader);
        }
示例#4
0
 public void RegisterGameMessageType(List <Type> gameMessageTypes)
 {
     if (gameMessageTypes == null)
     {
         return;
     }
     foreach (Type type in gameMessageTypes)
     {
         GameMessageHeader messageHeader = AbstractGameMessage.ReadGameMessageMeta(type);
         int key = AbstractGameMessage.CreateGameMessageUniqueId((int)messageHeader.ServerType, messageHeader.MessageId);
         gameMessageTypeMap.Add(key, type);
     }
 }