using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace PkmnFoundations.Support { public static class StreamExtender { /// /// Reads bytes from a stream and blocks until it can read them all. /// /// Stream /// Buffer to dump data into /// Offset in buffer /// Desired number of bytes /// Number of bytes obtained. Should only be less than count /// if eof was reached. public static int ReadBlock(this Stream s, byte[] buffer, int offset, int count) { int readBytes = 0; while (readBytes < count) { int x = s.Read(buffer, offset + readBytes, count - readBytes); if (x == 0) return readBytes; readBytes += x; } return readBytes; } /// /// Reads bytes from a stream and blocks until it can read them all. /// /// Stream, encapsulated in a BinaryReader /// Buffer to dump data into /// Offset in buffer /// Desired number of bytes /// Number of bytes obtained. Should only be less than count /// if eof was reached. public static int ReadBlock(this BinaryReader r, byte[] buffer, int offset, int count) { int readBytes = 0; while (readBytes < count) { int x = r.Read(buffer, offset + readBytes, count - readBytes); if (x == 0) return readBytes; readBytes += x; } return readBytes; } } }