2021-09-18 18:34:21 +02:00
|
|
|
package it.cavallium.dbengine.database.disk;
|
|
|
|
|
2022-03-16 13:47:56 +01:00
|
|
|
import io.netty5.buffer.api.Drop;
|
|
|
|
import io.netty5.buffer.api.Owned;
|
|
|
|
import io.netty5.buffer.api.internal.ResourceSupport;
|
2022-06-14 13:10:38 +02:00
|
|
|
import it.cavallium.dbengine.database.SafeCloseable;
|
|
|
|
import java.io.Closeable;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
2021-12-17 01:48:49 +01:00
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
|
|
import org.apache.logging.log4j.Logger;
|
2021-09-18 18:34:21 +02:00
|
|
|
import org.apache.lucene.index.IndexReader;
|
|
|
|
import org.apache.lucene.search.IndexSearcher;
|
|
|
|
|
2022-06-14 13:10:38 +02:00
|
|
|
public abstract class LLIndexSearcher implements Closeable {
|
2021-09-18 18:34:21 +02:00
|
|
|
|
2022-06-14 13:10:38 +02:00
|
|
|
protected static final Logger LOG = LogManager.getLogger(LLIndexSearcher.class);
|
2021-10-01 19:17:33 +02:00
|
|
|
|
2022-06-14 13:10:38 +02:00
|
|
|
protected final IndexSearcher indexSearcher;
|
|
|
|
private final AtomicBoolean closed = new AtomicBoolean();
|
2021-10-01 19:17:33 +02:00
|
|
|
|
2022-06-14 13:10:38 +02:00
|
|
|
public LLIndexSearcher(IndexSearcher indexSearcher) {
|
2021-09-18 18:34:21 +02:00
|
|
|
this.indexSearcher = indexSearcher;
|
|
|
|
}
|
|
|
|
|
|
|
|
public IndexReader getIndexReader() {
|
2022-06-14 13:10:38 +02:00
|
|
|
if (closed.get()) throw new IllegalStateException("Closed");
|
2021-09-18 18:34:21 +02:00
|
|
|
return indexSearcher.getIndexReader();
|
|
|
|
}
|
|
|
|
|
|
|
|
public IndexSearcher getIndexSearcher() {
|
2022-06-14 13:10:38 +02:00
|
|
|
if (closed.get()) throw new IllegalStateException("Closed");
|
2021-09-18 18:34:21 +02:00
|
|
|
return indexSearcher;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2022-06-14 13:10:38 +02:00
|
|
|
public final void close() throws IOException {
|
|
|
|
if (closed.compareAndSet(false, true)) {
|
|
|
|
onClose();
|
|
|
|
}
|
2021-09-18 18:34:21 +02:00
|
|
|
}
|
2021-09-24 02:44:12 +02:00
|
|
|
|
2022-06-14 13:10:38 +02:00
|
|
|
protected abstract void onClose() throws IOException;
|
2021-09-18 18:34:21 +02:00
|
|
|
}
|