48 lines
1.0 KiB
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();
|
|
}
|
|
}
|