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 using System.Collections.Generic;
20 
21 namespace Lucene.Net.Index
22 {
23 
24 	abstract class DocFieldConsumer
25 	{
26 
27 		internal FieldInfos fieldInfos;
28 
29 		/// <summary>Called when DocumentsWriter decides to create a new
30 		/// segment
31 		/// </summary>
Flush(IDictionary<DocFieldConsumerPerThread, ICollection<DocFieldConsumerPerField>> threadsAndFields, SegmentWriteState state)32         public abstract void Flush(IDictionary<DocFieldConsumerPerThread, ICollection<DocFieldConsumerPerField>> threadsAndFields, SegmentWriteState state);
33 
34 		/// <summary>Called when DocumentsWriter decides to close the doc
35 		/// stores
36 		/// </summary>
CloseDocStore(SegmentWriteState state)37 		public abstract void  CloseDocStore(SegmentWriteState state);
38 
39 		/// <summary>Called when an aborting exception is hit </summary>
Abort()40 		public abstract void  Abort();
41 
42 		/// <summary>Add a new thread </summary>
AddThread(DocFieldProcessorPerThread docFieldProcessorPerThread)43 		public abstract DocFieldConsumerPerThread AddThread(DocFieldProcessorPerThread docFieldProcessorPerThread);
44 
45 		/// <summary>Called when DocumentsWriter is using too much RAM.
46 		/// The consumer should free RAM, if possible, returning
47 		/// true if any RAM was in fact freed.
48 		/// </summary>
FreeRAM()49 		public abstract bool FreeRAM();
50 
SetFieldInfos(FieldInfos fieldInfos)51 		internal virtual void  SetFieldInfos(FieldInfos fieldInfos)
52 		{
53 			this.fieldInfos = fieldInfos;
54 		}
55 	}
56 }