예제 #1
0
 public static BaseHandler GetHandler(NET_CMD cmd)
 {
     if (handlers.ContainsKey(cmd))
     {
         return(handlers[cmd]);
     }
     return(null);
 }
예제 #2
0
        public static string AddHandler(NET_CMD cmd, BaseHandler handler)
        {
            if (handlers.ContainsKey(cmd))
            {
                return("handler already exists");
            }

            handlers.Add(cmd, handler);
            return(null);
        }
예제 #3
0
        public ServerMessage(StreamPeerTCP socket)
        {
            var _size = Utilites.Byte2IntBE((byte[])socket.GetData(4)[1]);

            cmd = (NET_CMD)Utilites.Byte2UShortBE((byte[])socket.GetData(2)[1]);
            seq = Utilites.Byte2UShortBE((byte[])socket.GetData(2)[1]);
            var _data = (byte[])socket.GetData(_size)[1];

            data = SimpleJSON.JSON.Parse(System.Text.Encoding.UTF8.GetString(_data, 0, _size));
        }
예제 #4
0
        private static JSONNode CreateRequest(NET_CMD cmd, ushort seq, uint userId, string token, JSONNode data)
        {
            if (data == null)
            {
                data = SimpleJSON.JSON.Parse("{}");
            }

            data["user_id"] = userId;
            data["sig"]     = GetSig((ushort)cmd, seq, userId, token);
            return(data);
        }
예제 #5
0
        private static void Send(NET_CMD cmd, JSONNode data)
        {
            var jData = CreateRequest(cmd, seq, UserId, CurToken, data);
            var bData = jData.ToString().ToUTF8();

            var bufferSize = hdrSize + bData.Length;
            var buffer     = new byte[bufferSize];

            uint offset = 0;

            offset += Utilites.PushIntBE(buffer, bData.Length, offset);
            offset += Utilites.PushUShortBE(buffer, (ushort)cmd, offset);
            offset += Utilites.PushUShortBE(buffer, seq, offset);
            offset += Utilites.PushByteLE(buffer, bData, offset);


            var status = socket.PutData(buffer);

            Dbg.Log("send >> status:", status, "  data: ", jData);
            seq++;
        }
예제 #6
0
 public static void SendMsg(NET_CMD cmd, JSONNode data)
 {
     data = CreateRequest(cmd, seq, UserId, CurToken, data);
     Send(cmd, data);
 }