public virtual void OnDisconnected(SocketStateObject state) { if (!Client.Connected) { Stopped(this, EventArgs.Empty); } else { Stop(); } }
public virtual void ProcessPacketStream(SocketStateObject state, uint packetId, DataStream packetStream) { Log.ConditionalDebug("Packet: {0} (0x{0:X2})", packetId); if (Handler.Contains(packetId)) { object packet = PacketsRegistry.Deserialize(packetId, packetStream); if (packet != null) { Handler.HandlePacket(packetId, packet); } } }
public virtual void ProcessStream(SocketStateObject state, DataStream ds) { var goodPos = 0; while (true) { var id = 0U; var length = 0U; if (!ds.TryReadCompactUInt32(out id) || !ds.TryReadCompactUInt32(out length) || !ds.CanReadBytes((int)length)) { break; } var packetStream = new DataStream(ds.ReadBytes((int)length)); packetStream.IsLittleEndian = false; goodPos = ds.Position; ProcessPacketStream(state, id, packetStream); } ds.Position = goodPos; ds.Flush(); }