Clojure — лениво считывающие фреймы с блеском

#clojure #io

#clojure #io

Вопрос:

Я хочу превратить an InputStream в последовательность фреймов. Если я правильно понимаю код, gloss.io/lazy-decode-all он с нетерпением использует свой второй аргумент, что в моем случае не вариант.

Я нашел способ сделать это с aleph/input-stream->channel помощью , decode-channel и lamina.core.operators/channel->lazy-seq , но это выглядит слишком сложно для такой общей задачи. Также я немного обеспокоен производительностью в этом сценарии: приложению будет передано несколько гигабайт данных.

Я мог бы вручную считывать фреймы в ByteBuffer s и decode them, но они имеют динамическую длину, поэтому я продублирую большую часть логики в gloss.

Есть ли какой-нибудь краткий способ ленивого декодирования потока?