package io.fathom.cloud.compute.mq.filesystem;
import io.fathom.cloud.mq.MessageQueueReader;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.io.Files;
public class FilesystemMessageQueueReader implements MessageQueueReader {
private static final Logger log = LoggerFactory.getLogger(FilesystemMessageQueueReader.class);
private final File queueDir;
public FilesystemMessageQueueReader(File queueDir) throws IOException {
this.queueDir = queueDir;
}
@Override
public byte[] poll() throws IOException {
String[] names = queueDir.list();
if (names.length == 0) {
return null;
}
Arrays.sort(names);
for (String name : names) {
char firstChar = name.charAt(0);
if (firstChar == '.' || firstChar == '_') {
continue;
}
File file = new File(queueDir, name);
byte[] data = Files.toByteArray(file);
if (!file.delete()) {
throw new IOException("Unable to delete file: " + file);
}
return data;
}
return null;
}
}