/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.lucene.store;


IOContext holds additional details on the merge/search context. A IOContext object can never be initialized as null as passed as a parameter to either Directory.openInput(String, IOContext) or Directory.createOutput(String, IOContext)
/** * IOContext holds additional details on the merge/search context. A IOContext * object can never be initialized as null as passed as a parameter to either * {@link org.apache.lucene.store.Directory#openInput(String, IOContext)} or * {@link org.apache.lucene.store.Directory#createOutput(String, IOContext)} */
public class IOContext {
Context is a enumerator which specifies the context in which the Directory is being used for.
/** * Context is a enumerator which specifies the context in which the Directory * is being used for. */
public enum Context { MERGE, READ, FLUSH, DEFAULT };
An object of a enumerator Context type
/** * An object of a enumerator Context type */
public final Context context; public final MergeInfo mergeInfo; public final FlushInfo flushInfo; public final boolean readOnce; public static final IOContext DEFAULT = new IOContext(Context.DEFAULT); public static final IOContext READONCE = new IOContext(true); public static final IOContext READ = new IOContext(false); public IOContext() { this(false); } public IOContext(FlushInfo flushInfo) { assert flushInfo != null; this.context = Context.FLUSH; this.mergeInfo = null; this.readOnce = false; this.flushInfo = flushInfo; } public IOContext(Context context) { this(context, null); } private IOContext(boolean readOnce) { this.context = Context.READ; this.mergeInfo = null; this.readOnce = readOnce; this.flushInfo = null; } public IOContext(MergeInfo mergeInfo) { this(Context.MERGE, mergeInfo); } private IOContext(Context context, MergeInfo mergeInfo) { assert context != Context.MERGE || mergeInfo != null : "MergeInfo must not be null if context is MERGE"; assert context != Context.FLUSH : "Use IOContext(FlushInfo) to create a FLUSH IOContext"; this.context = context; this.readOnce = false; this.mergeInfo = mergeInfo; this.flushInfo = null; }
This constructor is used to initialize a IOContext instance with a new value for the readOnce variable.
Params:
  • ctxt – IOContext object whose information is used to create the new instance except the readOnce variable.
  • readOnce – The new IOContext object will use this value for readOnce.
/** * This constructor is used to initialize a {@link IOContext} instance with a new value for the readOnce variable. * @param ctxt {@link IOContext} object whose information is used to create the new instance except the readOnce variable. * @param readOnce The new {@link IOContext} object will use this value for readOnce. */
public IOContext(IOContext ctxt, boolean readOnce) { this.context = ctxt.context; this.mergeInfo = ctxt.mergeInfo; this.flushInfo = ctxt.flushInfo; this.readOnce = readOnce; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((context == null) ? 0 : context.hashCode()); result = prime * result + ((flushInfo == null) ? 0 : flushInfo.hashCode()); result = prime * result + ((mergeInfo == null) ? 0 : mergeInfo.hashCode()); result = prime * result + (readOnce ? 1231 : 1237); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; IOContext other = (IOContext) obj; if (context != other.context) return false; if (flushInfo == null) { if (other.flushInfo != null) return false; } else if (!flushInfo.equals(other.flushInfo)) return false; if (mergeInfo == null) { if (other.mergeInfo != null) return false; } else if (!mergeInfo.equals(other.mergeInfo)) return false; if (readOnce != other.readOnce) return false; return true; } @Override public String toString() { return "IOContext [context=" + context + ", mergeInfo=" + mergeInfo + ", flushInfo=" + flushInfo + ", readOnce=" + readOnce + "]"; } }