Thumbnail file hits. Based on a patch from D Bera
[beagle.git] / beagled / Lucene.Net / Store / RAMInputStream.cs
blob3568663d0cfbcfc5cf5831017ad0bed37e770883
1 /*
2 * Copyright 2004 The Apache Software Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 using System;
17 namespace Lucene.Net.Store
19 /// <summary> A memory-resident {@link InputStream} implementation.
20 ///
21 /// </summary>
22 /// <version> $Id: RAMInputStream.cs,v 1.1 2005/01/17 19:54:31 joeshaw Exp $
23 /// </version>
25 class RAMInputStream:InputStream, System.ICloneable
27 private RAMFile file;
28 private int pointer = 0;
30 public RAMInputStream(RAMFile f)
32 file = f;
33 length = file.length;
36 public override void ReadInternal(byte[] dest, int destOffset, int len)
38 int remainder = len;
39 int start = pointer;
40 while (remainder != 0)
42 int bufferNumber = start / BUFFER_SIZE;
43 int bufferOffset = start % BUFFER_SIZE;
44 int bytesInBuffer = BUFFER_SIZE - bufferOffset;
45 int bytesToCopy = bytesInBuffer >= remainder?remainder:bytesInBuffer;
46 byte[] buffer = (byte[]) file.buffers[bufferNumber];
47 Array.Copy(buffer, bufferOffset, dest, destOffset, bytesToCopy);
48 destOffset += bytesToCopy;
49 start += bytesToCopy;
50 remainder -= bytesToCopy;
52 pointer += len;
55 public override void Close()
59 public override void SeekInternal(long pos)
61 pointer = (int) pos;
64 override public System.Object Clone()
66 return null;