Esempio n. 1
0
        // Try to read 'length' bytes from stream or fail after timeout.
        private async Task <int> ReadLengthAsync(Stream stream, byte[] array, int offset, int length)
        {
            int remaining = length;
            int readLength;

            do
            {
                readLength = await TaskTimeoutExtensions.TimeoutAfter(stream.ReadAsync(array, offset, remaining), TimeoutMilliseconds);

                if (readLength <= 0)
                {
                    break;
                }
                remaining -= readLength;
                offset    += readLength;
            }while (remaining > 0);

            if (remaining != 0)
            {
                _output.WriteLine("Expected {0} bytes but got {1}", length, length - remaining);
            }

            return(length - remaining);
        }