Ejemplo n.º 1
0
        public static Write_d GetLimitedWriter(Write_d writer, long remaining)
        {
            return((buff, offset, count) =>
            {
                if (remaining < (long)count)
                {
                    throw new Exception("ストリームに書き込めるバイト数の上限を超えようとしました。");
                }

                remaining -= (long)count;
                writer(buff, offset, count);
            });
        }
Ejemplo n.º 2
0
        public static void ReadToEnd(Read_d reader, Write_d writer)
        {
            byte[] buff = new byte[16 * 1024 * 1024];

            for (; ;)
            {
                int readSize = reader(buff, 0, buff.Length);

                if (readSize < 0)
                {
                    break;
                }

                writer(buff, 0, readSize);
            }
        }