private void ProcessQueuedEvents() { while (!quitFlag) { if (eventQueue.Empty()) { resetEvent.WaitOne(); resetEvent.Reset(); } if (eventQueue.Empty() == false) { activeEvent = eventQueue.Dequeue(); Network.MessageProcessor.ProcessData(ownerClient, activeEvent.Data); } } }
public void Enqueue(PlayerEvent playerEvent) { queue.Enqueue(playerEvent); }
public void AddEvent(PlayerEvent playerEvent) { eventQueue.Enqueue(playerEvent); resetEvent.Set(); }
void Tcp_DataReceived(object sender, Tcp.DataReceivedEventArgs e) { try { bool compression = false; if (e.CustomHeader[0] == 1) { compression = true; } bool encryption = false; if (e.CustomHeader[1] == 1) { encryption = true; } byte[] packetBytes = e.ByteData; if (compression) { packetBytes = packetModifiers.DecompressPacket(packetBytes); } if (encryption) { packetBytes = packetModifiers.DecryptPacket(packetBytes); } if (e.CustomHeader[2] == 1) { // This was a packet list, process it int position = 0; while (position < packetBytes.Length) { int segmentSize = ByteEncoder.ByteArrayToInt(packetBytes, position); position += 4; #if EVENTTHREAD PlayerEvent playerEvent = new PlayerEvent(ByteEncoder.ByteArrayToString(packetBytes, position, segmentSize)); eventThread.AddEvent(playerEvent); #else MessageProcessor.ProcessData(this, ByteEncoder.ByteArrayToString(packetBytes, position, segmentSize)); #endif position += segmentSize; } } else { #if EVENTTHREAD PlayerEvent playerEvent = new PlayerEvent(PMU.Core.ByteEncoder.ByteArrayToString(packetBytes)); eventThread.AddEvent(playerEvent); #else MessageProcessor.ProcessData(this, PMU.Core.ByteEncoder.ByteArrayToString(packetBytes)); #endif } } catch (Exception ex) { Exceptions.ErrorLogger.WriteToErrorLog(ex, "Tcp_DataRecieved"); } }