Beispiel #1
0
        public void Run(Session s, Packet p)
        {
            ushort opcode = p.Opcode();
            byte   flag   = p.Flag();

            OpcodeTypeComponent opcodeTypeComponent = Game.Scene.GetComponent <OpcodeTypeComponent>();
            Type   responseType = opcodeTypeComponent.GetType(opcode);
            object message      = ProtobufHelper.FromBytes(responseType, p.Bytes, Packet.Index, p.Length - Packet.Index);

            if ((flag & 0x01) > 0)
            {
                IResponse response = message as IResponse;
                if (response == null)
                {
                    throw new Exception($"flag is response, but hotfix message is not! {opcode}");
                }

                Action <IResponse> action;
                if (!this.requestCallback.TryGetValue(response.RpcId, out action))
                {
                    return;
                }
                this.requestCallback.Remove(response.RpcId);

                action(response);
                return;
            }

            Game.Scene.GetComponent <MessageDispatherComponent>().Handle(session, new MessageInfo(opcode, message));
        }
Beispiel #2
0
        public void Send(byte flag, IMessage message)
        {
            ushort opcode = Game.Scene.GetComponent <OpcodeTypeComponent>().GetOpcode(message.GetType());

            byte[] bytes = ProtobufHelper.ToBytes(message);
            session.Send(flag, opcode, bytes);
        }
Beispiel #3
0
 public T DeserializeFrom <T>(byte[] bytes, int index, int count)
 {
     return(ProtobufHelper.FromBytes <T>(bytes, index, count));
 }
Beispiel #4
0
 public byte[] SerializeToByteArray(object obj)
 {
     return(ProtobufHelper.ToBytes(obj));
 }
Beispiel #5
0
 public object DeserializeFrom(Type type, byte[] bytes, int index, int count)
 {
     return(ProtobufHelper.FromBytes(type, bytes, index, count));
 }
Beispiel #6
0
 public T DeserializeFrom <T>(byte[] bytes)
 {
     return(ProtobufHelper.FromBytes <T>(bytes));
 }
Beispiel #7
0
 public object DeserializeFrom(Type type, byte[] bytes)
 {
     return(ProtobufHelper.FromBytes(type, bytes));
 }
Beispiel #8
0
 public object DeserializeFrom(Type type, Stream stream)
 {
     return(ProtobufHelper.FromStream(type, stream));
 }
Beispiel #9
0
 public void SerializeToStream(object obj, Stream stream)
 {
     ProtobufHelper.ToStream(obj, stream);
 }
Beispiel #10
0
 public object DeserializeFrom(object instance, MemoryStream stream)
 {
     return(ProtobufHelper.FromStream(instance, stream));
 }
Beispiel #11
0
 public object DeserializeFrom(object instance, byte[] bytes, int index, int count)
 {
     return(ProtobufHelper.FromBytes(instance, bytes, index, count));
 }