Merge pull request #409 from Alkarex/patch-1
[mono.git] / mcs / tools / monkeydoc / Lucene.Net / Lucene.Net / Store / CheckSumIndexInput.cs
1 /* 
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  * 
9  * http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 using System;
19
20 namespace Mono.Lucene.Net.Store
21 {
22         
23         /// <summary>Writes bytes through to a primary IndexOutput, computing
24         /// checksum as it goes. Note that you cannot use seek(). 
25         /// </summary>
26         public class ChecksumIndexInput:IndexInput
27         {
28                 internal IndexInput main;
29                 internal SupportClass.Checksum digest;
30                 
31                 public ChecksumIndexInput(IndexInput main)
32                 {
33                         this.main = main;
34             digest = new SupportClass.CRC32();
35                 }
36                 
37                 public override byte ReadByte()
38                 {
39                         byte b = main.ReadByte();
40                         digest.Update(b);
41                         return b;
42                 }
43                 
44                 public override void  ReadBytes(byte[] b, int offset, int len)
45                 {
46                         main.ReadBytes(b, offset, len);
47                         digest.Update(b, offset, len);
48                 }
49                 
50                 
51                 public virtual long GetChecksum()
52                 {
53                         return digest.GetValue();
54                 }
55                 
56                 public override void  Close()
57                 {
58                         main.Close();
59                 }
60                 
61                 public override long GetFilePointer()
62                 {
63                         return main.GetFilePointer();
64                 }
65                 
66                 public override void  Seek(long pos)
67                 {
68                         throw new System.SystemException("not allowed");
69                 }
70                 
71                 public override long Length()
72                 {
73                         return main.Length();
74                 }
75
76         /*
77                 override public System.Object Clone()
78                 {
79                         return null;
80                 }
81         */
82         }
83 }