public SocketConnection(int id, Socket socket, SocketListener listener, bool debug = false) : base(id, socket, debug) { _disposed = false; _decoder = new FixHeaderDecoder(this, debug); _listener = listener; _pooledReadEventArgs = _listener.SocketAsyncReadEventArgsPool.Get() as PooledSocketAsyncEventArgs; _pooledReadEventArgs.Completed += IO_Completed; _pooledSendEventArgs = _listener.SocketAsyncSendEventArgsPool.Get() as PooledSocketAsyncEventArgs; _pooledSendEventArgs.Completed += IO_Completed; }
public BaseListener(int maxConnectionCount, int bufferSize, bool debug = false) { _debug = debug; _disposed = false; _bufferSize = bufferSize; _maxConnectionCount = maxConnectionCount; _shutdownEvent = new ManualResetEventSlim(false); _acceptedClientsSemaphore = new SemaphoreSlim(maxConnectionCount, maxConnectionCount); ConnectionList = new ConcurrentDictionary <int, BaseConnection>(); SocketAsyncSendEventArgsPool = new ObjectPool <IPooledWapper>(maxConnectionCount, 12, (pool) => { var socketAsyncEventArgs = new PooledSocketAsyncEventArgs(pool); socketAsyncEventArgs.SetBuffer(ArrayPool <byte> .Shared.Rent(bufferSize), 0, bufferSize); return(socketAsyncEventArgs); }); SocketAsyncReadEventArgsPool = new ObjectPool <IPooledWapper>(maxConnectionCount, 12, (pool) => { var socketAsyncEventArgs = new PooledSocketAsyncEventArgs(pool); socketAsyncEventArgs.SetBuffer(ArrayPool <byte> .Shared.Rent(bufferSize), 0, bufferSize); return(socketAsyncEventArgs); }); }