Ejemplo n.º 1
0
        public void Handle(INetworkSocketHandler handler, uint socketId, uint packetId, BinaryReader reader)
        {
            uint MessageId = reader.ReadUInt32();

            if (RPCMethods.ContainsKey(packetId))
            {
                uint   length = reader.ReadUInt32();
                byte[] data   = new byte[length];
                reader.Read(data, 0, (int)length);
                var rpcdata = RPCMethods[packetId];

                byte[] outputdata = rpcdata.Handler.Invoke(socketId, MessageId, data);
                handler.Send(socketId, PacketBuilder.New().Add(rpcdata.ResponsePacketId).Add(MessageId).Add <UInt32>((uint)outputdata.Length).Add(outputdata).Build());
            }
            else
            {
                if (MessageCallbacks.ContainsKey(MessageId))
                {
                    uint   length = reader.ReadUInt32();
                    byte[] data   = new byte[length];
                    reader.Read(data, 0, (int)length);
                    MessageCallbacks[MessageId].Invoke(data);
                    MessageCallbacks.Remove(MessageId);
                }
            }
        }
Ejemplo n.º 2
0
 public PingNetworkState(INetworkSocketHandler handler, uint sendPacketId, uint respondPacketId, uint pollTime = 1000 *30, uint timeout = 1000 *60)
 {
     rpcState = new StandardRPCNetworkSocketState();
     rpcState.Bind(handler);
     pingRpc = rpcState.RegisterRPCDual <PingPacket, PingResponse>(sendPacketId, respondPacketId,
                                                                   delegate(uint socketId, uint packetId, PingPacket pingPacket) {
         return(new PingResponse());
     });
 }
 public void Handle(INetworkSocketHandler handler, uint socketId, uint packetId, BinaryReader reader)
 {
     if (Routes.ContainsKey(packetId))
     {
         Routes[packetId].Handle(handler, socketId, packetId, reader);
     }
     else
     {
         throw new System.Exception("No route for packet id");
     }
 }
Ejemplo n.º 4
0
 public void Bind(INetworkSocketHandler socketHandler)
 {
     this.socketHandler = socketHandler;
 }
        public void Handle(INetworkSocketHandler handler, uint socketId, uint packetId, BinaryReader reader)
        {
            if (packetId == PacketIdHandleAction)
            {
                //Todo, maybe just maybe this should not crash master...
                if (AsMaster)
                {
                    throw new Exception("Master should not receive this packet!");
                }
                HandleActionId(reader.ReadUInt32());
            }
            else if (packetId == PacketIdStep)
            {
                if (AsMaster)
                {
                    throw new Exception("Server should not receive this packet!");
                }
                uint stepId = reader.ReadUInt32();
                onStepUpdate(stepId);
            }
            else if (packetId == PacketSyncPacket)
            {
                uint   ClientId = reader.ReadUInt32();
                uint   length   = reader.ReadUInt32();
                byte[] data     = new byte[length];
                reader.Read(data, 0, (int)length);
                syncHandler(ClientId, data);
            }
            else
            {
                if (AsMaster)
                {
                    if (Actions.ContainsKey(packetId))
                    {
                        uint eventId = reader.ReadUInt32();
                        handler.Send(socketId, PacketBuilder.New().Add((UInt32)PacketIdHandleAction).Add((UInt32)eventId).Build());


                        uint   length = reader.ReadUInt32();
                        byte[] data   = new byte[length];
                        reader.Read(data, 0, (int)length);

                        if (Actions[packetId].Invoke(socketId, data))
                        {
                            ((INetworkSocketHandlerServer)socketHandler).BroadCast(PacketBuilder.New().Add((UInt32)packetId).Add((UInt32)socketId).Add((UInt32)data.Length).Add(data).Build());
                        }
                    }
                    else
                    {
                        throw new Exception("Unknown Action Packet Id!");
                    }
                }
                else
                {
                    if (Actions.ContainsKey(packetId))
                    {
                        uint sender = reader.ReadUInt32();

                        uint   length = reader.ReadUInt32();
                        byte[] data   = new byte[length];
                        reader.Read(data, 0, (int)length);

                        Actions[packetId].Invoke(sender, data);
                    }
                    else
                    {
                        throw new Exception("Unknown Action Packet Id!");
                    }
                }
            }
        }
Ejemplo n.º 6
0
 public void Handle(INetworkSocketHandler handler, uint socketId, uint packetId, BinaryReader reader)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 7
0
 public void Handle(INetworkSocketHandler handler, uint socketId, uint packetId, BinaryReader reader)
 {
     rpcState.Handle(handler, socketId, packetId, reader);
 }
 public void Bind(INetworkSocketHandler socketHandler)
 {
     rpcstate.Bind(socketHandler);
 }