public ConnectionWorkersPool( uint numbersOfBuffers, uint buffersSize, Action <object, SocketAsyncEventArgs> ioCompleted, IRequestProcessorFactory requestProcessorFactory) { _buffersSize = buffersSize; _numbersOfBuffers = numbersOfBuffers; _connectionWorkers = new ConcurrentStack <ConnectionWorker>(); for (var i = 0; i < numbersOfBuffers; i++) { var buffer = new byte[buffersSize]; for (var j = 0; j < buffer.Length; j++) { buffer[j] = (byte)j; } var connectionWorker = new ConnectionWorker { RequestProcessor = requestProcessorFactory.GetRequestProcessor() }; var readWriteAsync = new SocketAsyncEventArgs { UserToken = connectionWorker }; connectionWorker.SocketAsyncEventArgs = readWriteAsync; readWriteAsync.Completed += new EventHandler <SocketAsyncEventArgs>(ioCompleted); _connectionWorkers.Push(connectionWorker); } }
public void Push(ConnectionWorker connectionWorker) { connectionWorker.AcceptSocket = null; connectionWorker.SocketAsyncEventArgs.SetBuffer( connectionWorker.SocketAsyncEventArgs.Buffer, 0, (int)BuffersSize); _connectionWorkers.Push(connectionWorker); }
public ConnectionWorkersPool( uint numbersOfBuffers, uint buffersSize, Action<object, SocketAsyncEventArgs> ioCompleted, IRequestProcessorFactory requestProcessorFactory) { _buffersSize = buffersSize; _numbersOfBuffers = numbersOfBuffers; _connectionWorkers = new ConcurrentStack<ConnectionWorker>(); for (var i = 0; i < numbersOfBuffers; i++) { var buffer = new byte[buffersSize]; for (var j = 0; j < buffer.Length; j++) { buffer[j] = (byte)j; } var connectionWorker = new ConnectionWorker { RequestProcessor = requestProcessorFactory.GetRequestProcessor() }; var readWriteAsync = new SocketAsyncEventArgs {UserToken = connectionWorker}; connectionWorker.SocketAsyncEventArgs = readWriteAsync; readWriteAsync.Completed += new EventHandler<SocketAsyncEventArgs>(ioCompleted); _connectionWorkers.Push(connectionWorker); } }
public bool TryPop(out ConnectionWorker connectionWorker) { return _connectionWorkers.TryPop(out connectionWorker); }
public bool TryPop(out ConnectionWorker connectionWorker) { return(_connectionWorkers.TryPop(out connectionWorker)); }