Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Reads the entire request buffer to memory and return it as a byte array.
- /// </summary>
- /// <param name="stream">The stream to read.</param>
- /// <returns>The returned byte array.</returns>
- public static byte[] ReadData(this Stream stream) {
- var list = new List<byte[]>();
- const int defaultBufferSize = 1024 * 16;
- var buffer = new byte[defaultBufferSize];
- var currentOffset = 0;
- int read;
- while((read = stream.Read(buffer,currentOffset,buffer.Length - currentOffset)) != 0) {
- currentOffset += read;
- if(currentOffset == buffer.Length) {
- list.Add(buffer);
- buffer = new byte[defaultBufferSize];
- currentOffset = 0;
- }
- }
- var totalSize = list.Sum(x => x.Length) + currentOffset;
- var result = new byte[totalSize];
- var resultOffset = 0;
- foreach(var partial in list) {
- Buffer.BlockCopy(partial,0,result,resultOffset,partial.Length);
- resultOffset += partial.Length;
- }
- Buffer.BlockCopy(buffer,0,result,resultOffset,currentOffset);
- return result;
- }
- }
Add Comment
Please, Sign In to add comment