/// <summary> /// Called when a connection processor has been disposed. /// </summary> /// <param name="processor">The connection processor which was disposed.</param> private void OnConnectionProcessorDisposed(ConnectionProcessor processor) { if (processor == null || suppressDispose) { return; } lock (synchronize) processors.Remove(processor); }
/// <summary> /// Called when the internal listener socket accepts a TCP connection. /// </summary> /// <param name="ar">The asynchronous result object for this callback.</param> private void OnSocketAccept(IAsyncResult ar) { try { Socket accepted = socket.EndAccept(ar); if (client != null) { Connection connection = new Connection(client, accepted, OnConnectionDisposed); lock (synchronize) connections.Add(connection); ConnectionProcessor processor = new ConnectionProcessor(client, connection, OnConnectionProcessorDisposed); lock (synchronize) processors.Add(processor); processor.Start(); } } catch { } try { if (socket != null) { socket.BeginAccept(OnSocketAccept, socket); } } catch { } }