Exemple #1
0
        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());
            }
        }
Exemple #2
0
        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())));
            }
        }