public static async Task <byte[]> ReadBufferedAsync( this NetworkStream stream, int?maxBytes = null, int bufferSize = 0xFFF, CancellationToken token = default) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } using (var ms = new MemoryStream()) { await stream.CopyBufferedToAsync(ms, maxBytes, bufferSize, token : token); return(ms.ToArray()); } }
public static async Task <object> ReadJsonBufferedAsync(this NetworkStream stream, Type type, int payloadSize, Encoding encoding = null, CancellationToken token = default) { if (stream == null) { throw new ArgumentNullException(nameof(stream)); } if (type == null) { throw new ArgumentNullException(nameof(type)); } encoding = encoding ?? Encoding.UTF8; using (var memoryStream = new MemoryStream()) { await stream.CopyBufferedToAsync(memoryStream, payloadSize, token : token); return(PapercutIPCommSerializer.FromJson(type, encoding.GetString(memoryStream.ToArray()))); } }