filequeue/src/main/java/it/cavallium/filequeue/DiskQueueToConsumer.java

41 lines
924 B
Java

package it.cavallium.filequeue;
import com.squareup.tape2.QueueFile;
import java.io.IOException;
import java.nio.file.Path;
public final class DiskQueueToConsumer<T> implements IQueueToConsumer<T> {
private final QueueToConsumer<T> queue;
private final QueueFile queueFile;
public DiskQueueToConsumer(Path file,
Serializer<T> serializer,
Deserializer<T> deserializer,
QueueConsumer<T> consumer) throws IOException {
QueueFile queueFile = new QueueFile.Builder(file.toFile()).build();
this.queueFile = queueFile;
this.queue = new QueueToConsumer<>(new SimpleQueueFile<>(queueFile, serializer, deserializer), consumer);
}
@Override
public void add(T value) {
queue.add(value);
}
@Override
public void close() {
queue.close();
try {
queueFile.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void startQueue() {
queue.startQueue();
}
}