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));
     }
 }
Exemplo n.º 2
0
 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));
        }