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

48 lines
1.0 KiB
Java

package it.cavallium.filequeue;
import com.squareup.tape2.QueueFile;
import java.io.IOException;
import java.util.NoSuchElementException;
class SimpleQueueFile<T> implements SimpleQueue<T> {
private final QueueFile queueFile;
private final Serializer<T> ser;
private final Deserializer<T> des;
public SimpleQueueFile(QueueFile queueFile, Serializer<T> serializer, Deserializer<T> deserializer) {
this.queueFile = queueFile;
this.ser = serializer;
this.des = deserializer;
}
@Override
public void add(T element) {
try {
queueFile.add(ser.serialize(element));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public T remove() {
try {
byte[] element = queueFile.peek();
if (element == null) {
throw new NoSuchElementException("Queue is empty");
}
var deserialized = des.deserialize(element);
queueFile.remove();
return deserialized;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public int size() {
return queueFile.size();
}
}