Ejemplo n.º 1
0
        public bool Add2(byte[] b, int offset, int length)
        {
            //b==nullの場合は、下位クラスに向かう前に、ここではじく
            if (b == null)
            {
                return(false);
            }

            if (_disk != null)
            {
                return(_disk.Add(b, offset, length));
            }

            if (_limit == -1 || (_memory.Length + length) >= _limit)
            {
                //暫定の初期化でサイズをオーバした場合
                var buf = new byte[_memory.Length];
                _memory.Read(buf, 0, _memory.Length);
                _memory.Dispose();
                _memory = null;
                //ディスクに変更
                _disk = new WebStreamDisk();
                _disk.Add(buf, 0, buf.Length);
                return(_disk.Add(b, offset, length));
            }
            return(_memory.Add(b, offset, length));
        }
Ejemplo n.º 2
0
        //最終的なサイズが分かっている場合は、limit(分からない場合は-1)を指定する
        public WebStream(int limit)
        {
            _limit = limit;

            if (_limit > 256000) {//サイズが大きい場合は、ファイルで保持する
                _disk = new WebStreamDisk();
                _memory = null;
            } else {//リミットが分からないときは、とりあえず256KByteで初期化する
                _disk = null;
                _memory = new WebStreamMemory((_limit < 0) ? 256000 : _limit);
            }
        }
Ejemplo n.º 3
0
        } //long(約2Gbyteまで対応)

        //最終的なサイズが分かっている場合は、limit(分からない場合は-1)を指定する
        public WebStream(int limit)
        {
            _limit = limit;

            if (_limit > 256000)  //サイズが大きい場合は、ファイルで保持する
            {
                _disk   = new WebStreamDisk();
                _memory = null;
            }
            else    //リミットが分からないときは、とりあえず256KByteで初期化する
            {
                _disk   = null;
                _memory = new WebStreamMemory((_limit < 0) ? 256000 : _limit);
            }
        }
Ejemplo n.º 4
0
        public bool Add2(byte[] b,int offset,int length)
        {
            //b==nullの場合は、下位クラスに向かう前に、ここではじく
            if (b == null)
                return false;

            if (_disk != null)
                return _disk.Add(b,offset,length);

            if(_limit==-1 || (_memory.Length + length)>=_limit ){
                //暫定の初期化でサイズをオーバした場合
                var buf = new byte[_memory.Length];
                _memory.Read(buf, 0, _memory.Length);
                _memory.Dispose();
                _memory = null;
                //ディスクに変更
                _disk = new WebStreamDisk();
                _disk.Add(buf,0,buf.Length);
                return _disk.Add(b,offset,length);
            }
            return _memory.Add(b,offset,length);
        }