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); } } }
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"); } }
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!"); } } } }
public void Handle(INetworkSocketHandler handler, uint socketId, uint packetId, BinaryReader reader) { throw new NotImplementedException(); }
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); }