public ValueTask <int> ReceiveFromAsync(Memory <byte> memory, RegisteredEndPoint remoteEndPoint) { Prepare(memory, remoteEndPoint); SocketError result = _socket.StartReceiveFrom(_buffersHandle.AddrOfPinnedObject(), GetEndPointAddress(), GCHandle.ToIntPtr(_thisHandle)); CheckError(result); return(new ValueTask <int>(this, _valueTaskSource.Version)); }
private void Prepare(ReadOnlyMemory <byte> buffer, RegisteredEndPoint remoteEndPoint) { _bufferManager = SetBuffer(ref _buffers[0], buffer); _endPointManager = SetBuffer(ref _buffers[1], remoteEndPoint.Memory); Pin(); }