public override async Task <int> SendAsync(Socket s, ArraySegment <byte> buffer) { using (var m = new NativeOwnedMemory(buffer.Count)) { buffer.AsSpan().CopyTo(m.Memory.Span); return(await s.SendAsync(m.Memory, SocketFlags.None).ConfigureAwait(false)); } }
public static void TryGetArrayFromEmptyNonRetrievableOwnedMemory() { using (var owner = new NativeOwnedMemory(0)) { Assert.True(owner.Memory.TryGetArray(out ArraySegment <byte> segment)); Assert.Equal(0, segment.Array.Length); } }
public override async Task <int> ReceiveAsync(Socket s, ArraySegment <byte> buffer) { using (var m = new NativeOwnedMemory(buffer.Count)) { int bytesReceived = await s.ReceiveAsync(m.Memory, SocketFlags.None).ConfigureAwait(false); m.Memory.Span.Slice(0, bytesReceived).CopyTo(buffer.AsSpan()); return(bytesReceived); } }
private static ReadOnlyMemoryContent CreateContent(int contentLength, bool useArray, out Memory <byte> memory, out OwnedMemory <byte> ownedMemory) { if (useArray) { memory = new byte[contentLength]; ownedMemory = null; } else { ownedMemory = new NativeOwnedMemory(contentLength); memory = ownedMemory.AsMemory; } new Random(contentLength).NextBytes(memory.Span); return(new ReadOnlyMemoryContent(memory)); }