public async Task <int> ReceiveAsync(ArraySegment <byte> buffer) { var awaitable = SocketAwaitablePool.Take(); try { awaitable.EventArgs.SetBuffer(buffer.Array, buffer.Offset, buffer.Count); await _socket.ReceiveAsync(awaitable); return(awaitable.EventArgs.BytesTransferred); } finally { SocketAwaitablePool.Add(awaitable); } }
public async Task <int> ReceiveAsync(byte[] array, int offset, int count) { var awaitableSocket = AwaitableSocketPool.Take(); awaitableSocket.EventArgs.SetBuffer(array, offset, count); try { await _socket.ReceiveAsync(awaitableSocket); int bytesRead = awaitableSocket.EventArgs.BytesTransferred; return(bytesRead); } finally { AwaitableSocketPool.Add(awaitableSocket); } }
public void Receive(BufferManager.Buffer buffer, ConnectionIoCallback callback) { if (CheckDisconnectedOrDisposed(callback)) { return; } var recvAsyncEventArgs = SendRecvSaeaPool.Take(); recvAsyncEventArgs.UserToken = callback; recvAsyncEventArgs.BufferList = buffer.ToArraySegmentList(); var async = _socket.ReceiveAsync(recvAsyncEventArgs); if (!async) { SendRecvCompleted(null, recvAsyncEventArgs); } }
private void Listen() { var saea = ConnectSaeaPool.Take(); saea.AcceptSocket = null; saea.Completed += IOCompleted; if (_status == ListenerStatus.Stopped) { return; } var async = Listener.AcceptAsync(saea); if (!async) { IOCompleted(null, saea); } }
public void Connect(ConnectionConnectCallback callback) { if (_socketDisposed) { callback(false); return; } var connectAsyncEventArgs = ConnectSaeaPool.Take(); connectAsyncEventArgs.UserToken = callback; connectAsyncEventArgs.RemoteEndPoint = Endpoint; var async = _socket.ConnectAsync(connectAsyncEventArgs); if (!async) { ConnectCompleted(null, connectAsyncEventArgs); } }