コード例 #1
0
        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;
        }
コード例 #2
0
ファイル: BaseListener.cs プロジェクト: SammyEnigma/Incubator
        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);
            });
        }