package org.fastcatsearch.ir.index.async;
import java.io.IOException;
import java.util.concurrent.BlockingQueue;
import org.fastcatsearch.ir.common.IRException;
import org.fastcatsearch.ir.document.Document;
import org.fastcatsearch.ir.index.SingleIndexWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class IndexWriteTaskPoolWriter {
private static Logger logger = LoggerFactory.getLogger(IndexWriteTaskPoolWriter.class);
private BlockingQueue<IndexWriteTask> taskQueue;
private IndexWriteTask[] writeTaskList;
public IndexWriteTaskPoolWriter(BlockingQueue<IndexWriteTask> taskQueue, SingleIndexWriter[] singleIndexWriterList){
this.taskQueue = taskQueue;
this.writeTaskList = new IndexWriteTask[singleIndexWriterList.length];
for (int i = 0; i < singleIndexWriterList.length; i++) {
writeTaskList[i] = new IndexWriteTask(singleIndexWriterList[i]);
}
}
public void write(Document doc, int docNo) throws IRException, IOException {
for (int i = 0; i < writeTaskList.length; i++) {
writeTaskList[i].setDocument(doc, docNo);
try {
taskQueue.put(writeTaskList[i]);
} catch (InterruptedException e) {
logger.error("", e);
}
}
for (int i = 0; i < writeTaskList.length; i++) {
writeTaskList[i].waitUntilDone();
}
}
// public void flush() {
// if (count <= 0) {
// return;
// }
//
// for (int i = 0; i < indexSize; i++) {
// searchIndexWriterList[i].flush();
// }
// }
}