public SocketAwaitable SendAsync(ReadOnlySequence <byte> buffers) { if (buffers.IsSingleSegment) { return(SendAsync(buffers.First)); } #if NETCOREAPP2_1 if (!_eventArgs.MemoryBuffer.Equals(Memory <byte> .Empty)) #else if (_eventArgs.Buffer != null) #endif { _eventArgs.SetBuffer(null, 0, 0); } _eventArgs.BufferList = GetBufferList(buffers); if (!_socket.SendAsync(_eventArgs)) { _awaitable.Complete(_eventArgs.BytesTransferred, _eventArgs.SocketError); } return(_awaitable); }
public SocketAwaitable SendAsync(ReadableBuffer buffers) { if (buffers.IsSingleSpan) { return(SendAsync(buffers.First)); } if (_eventArgs.Buffer != null) { _eventArgs.SetBuffer(null, 0, 0); } _eventArgs.BufferList = GetBufferList(buffers); if (!_socket.SendAsync(_eventArgs)) { _awaitable.Complete(_eventArgs.BytesTransferred, _eventArgs.SocketError); } return(_awaitable); }
public SocketAwaitable ReceiveAsync(Buffer <byte> buffer) { var segment = buffer.GetArray(); _eventArgs.SetBuffer(segment.Array, segment.Offset, segment.Count); if (!_socket.ReceiveAsync(_eventArgs)) { _awaitable.Complete(_eventArgs.BytesTransferred, _eventArgs.SocketError); } return(_awaitable); }
public SocketAwaitable ReceiveAsync(Memory <byte> buffer) { #if NETCOREAPP2_1 _eventArgs.SetBuffer(buffer); #else var segment = buffer.GetArray(); _eventArgs.SetBuffer(segment.Array, segment.Offset, segment.Count); #endif if (!_socket.ReceiveAsync(_eventArgs)) { _awaitable.Complete(_eventArgs.BytesTransferred, _eventArgs.SocketError); } return(_awaitable); }
private static void SendCompleted(SocketAsyncEventArgs e, SocketAwaitable awaitable) { // Clear buffer(s) to prevent the SetBuffer buffer and BufferList from both being // set for the next write operation. This is unnecessary for reads since they never // set BufferList. if (e.BufferList != null) { e.BufferList.Clear(); e.BufferList = null; } else { e.SetBuffer(null, 0, 0); } awaitable.Complete(e.BytesTransferred, e.SocketError); }