Add --enable-deletion option to buildindex. If used, buildindex will remove deleted...
[beagle.git] / beagled / Lucene.Net / Store / RAMInputStream.cs
blob526c158776dd22cc0ca181a2157942c395101e08
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.2 2005/10/06 19:29:58 dsd Exp $
23 /// </version>
25 class RAMInputStream : BufferedIndexInput, System.ICloneable
27 private RAMFile file;
28 private int pointer = 0;
29 private long length;
31 public RAMInputStream(RAMFile f)
33 file = f;
34 length = file.length;
37 public override void ReadInternal(byte[] dest, int destOffset, int len)
39 int remainder = len;
40 int start = pointer;
41 while (remainder != 0)
43 int bufferNumber = start / BUFFER_SIZE;
44 int bufferOffset = start % BUFFER_SIZE;
45 int bytesInBuffer = BUFFER_SIZE - bufferOffset;
46 int bytesToCopy = bytesInBuffer >= remainder?remainder:bytesInBuffer;
47 byte[] buffer = (byte[]) file.buffers[bufferNumber];
48 Array.Copy(buffer, bufferOffset, dest, destOffset, bytesToCopy);
49 destOffset += bytesToCopy;
50 start += bytesToCopy;
51 remainder -= bytesToCopy;
53 pointer += len;
56 public override void Close()
60 public override void SeekInternal(long pos)
62 pointer = (int) pos;
65 public override long Length()
67 return length;