using System; using System.Collections.Generic; using System.Net.Sockets; using System.Threading; namespace IW4MAdmin.Application.RCon { /// /// used to keep track of the udp connection state /// internal class ConnectionState { ~ConnectionState() { OnComplete.Dispose(); OnSentData.Dispose(); OnReceivedData.Dispose(); } public int ConnectionAttempts { get; set; } const int BufferSize = 8192; public readonly byte[] ReceiveBuffer = new byte[BufferSize]; public readonly SemaphoreSlim OnComplete = new SemaphoreSlim(1, 1); public readonly ManualResetEventSlim OnSentData = new ManualResetEventSlim(false); public readonly ManualResetEventSlim OnReceivedData = new ManualResetEventSlim(false); public List BytesReadPerSegment { get; set; } = new List(); public SocketAsyncEventArgs SendEventArgs { get; set; } = new SocketAsyncEventArgs(); public SocketAsyncEventArgs ReceiveEventArgs { get; set; } = new SocketAsyncEventArgs(); public DateTime LastQuery { get; set; } = DateTime.Now; } }