Я портировал потоковый сервер NIO на HTTP, используя Netty.Он поддерживает загрузку zip-архивов, сгенерированных по запросу на сервер.После некоторых исследований и создания прототипов я реализовал собственную реализацию ChunkedInput для реализации этой функции.
Во время каждого вызова nextChunk я читаю несколько байтов текущего файла, архивирую его и записываю в ChannelBuffer, который затем возвращается.Это повторяется, пока есть данные и файлы для обработки (isEndOfInput возвращает false так долго).
Проблема в том, что переданный архив не может быть открыт.Сообщение об ошибке говорит мне, что некоторые байты отсутствуют.
Я на 100% уверен, что отправляю все данные, потому что я считаю общее количество сгенерированных байтов, возвращенных через ChannelBuffers.Эта сумма отличается от загруженного архива именно тем количеством пропущенных байтов.Для целей отладки в каждой итерации nextChunk я читаю фактическое содержимое ChannelBuffers и записываю его в FileOutputStream.Записанный файл является действительным архивом и может быть открыт, поэтому в архиве не может быть ошибки.
Есть ли какие-то особенности, реализующие пользовательский ChunkedInput в сочетании с ChunkedWriteHandler, или я что-то упустил?