public ASyncClient(Socket socket) { state = new ConnectionState(socket); zoneClient = new ZoneClient(); zoneClient.UserIPAddress = ((IPEndPoint)state.socket.RemoteEndPoint).Address; zoneClient.packetsToBeSent.CollectionChanged += (sender, eventArgs) => { if (!zoneClient.IsProcessingOrSendingPackets) { ASyncClient.SendPackets(this); } }; }
public void ProcessRequest(byte[] receivedData) { try { lock (zoneClient.packetsToBeSent) { zoneClient.IsProcessingOrSendingPackets = true; zoneClient.packetsToBeSent.AddRange( Zone.Process(zoneClient, receivedData)); } } catch (Protocol.Packet.ZonePacket.NotEnoughBytesException ex) { zoneClient.IsProcessingOrSendingPackets = false; throw ex; } ASyncClient.SendPackets(this); }