Я делаю прототип в Котлине, используя Tape на Android.Я использую последнюю версию, опубликованную для Maven ( 2.0.0-beta ), и я устанавливаю минимальную ObjectQueue на Android, которая использует файл во внешнем хранилище.
I 'Я реализую свой конвертер, чтобы просто использовать Джексона для сериализации всего, и мой конвертер иногда вызывается с пустым байтовым массивом.Это реализация моего конвертера
class MyConverter<T>(val forName: String) : ObjectQueue.Converter<MyType<T>> {
private val mapper = ObjectMapper()
override fun from(bytes: ByteArray): MyType<T> {
if (bytes.isEmpty()) {
throw QueueReadException("Why does this happen?")
}
return mapper.readValue<MyType<T>>(bytes, object : TypeReference<MyType<T>>() {})
}
override fun toStream(value: MyType<T>, os: OutputStream) {
os.write(mapper.writeValueAsBytes(value))
}
}
Я знаю, что это происходит, когда я пытаюсь прочитать элементы из очереди, используя queue.peek(n)
, но очередь определенно имеет достаточно элементов в соответствии с queue.size()
и просмотромна фактическом содержимом файла, в котором просто есть набор элементов json, написанный Джексоном.
Вот снимок экрана того, как выглядит новый пустой файл очереди.
А вот скриншот того, как выглядит файл очереди к тому времени, когда я получаю эту ошибку.
Я не уверен, стоит ли ожидать, что файл очереди будет всегда разборчивым или всегда разделен на границы того, что я определяю как элемент.
Кто-нибудь еще видел это?Должны ли мы даже использовать 2.0.0-бета?Судя по проблемам github, на данный момент библиотека более или менее не поддерживается.