Получение пустых буферов в Конвертере для библиотеки Square's Tape на Android - PullRequest
0 голосов
/ 13 мая 2019

Я делаю прототип в Котлине, используя 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, написанный Джексоном.

Вот снимок экрана того, как выглядит новый пустой файл очереди.

enter image description here

А вот скриншот того, как выглядит файл очереди к тому времени, когда я получаю эту ошибку.

enter image description here

Я не уверен, стоит ли ожидать, что файл очереди будет всегда разборчивым или всегда разделен на границы того, что я определяю как элемент.

Кто-нибудь еще видел это?Должны ли мы даже использовать 2.0.0-бета?Судя по проблемам github, на данный момент библиотека более или менее не поддерживается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...