Неблокирующие записи между слушателями
Я читаю HTTP-ответ с помощью асинхронного клиента Apache. Каждый раз, когда я читаю порцию данных, я хочу записать их в servletoutputstream в неблокирующем режиме. Что-то вроде этого:
// decoder.read is executed when data available for reading
while (decoder.read(this.bbuf) > 0)
{
this.bbuf.flip();
arr = new byte[numbytesread];
this.bbuf.rewind();
this.bbuf.get(arr);
// Blocking write to servletoutputstream 'sos'
this.sos.write(arr);
this.bbuf.compact();
}
Очевидно, что это не работает, даже если я обертываю 'sos' в WritableChannel, потому что я всегда получаю bytearrayoutputstream из servletoutputstream.
Поэтому я должен добавить WriteListener в servletoutputstream, чтобы переключиться в режим nio, но здесь возникает проблема, которую я не могу решить. Как я могу передать каждую порцию данных из моего обратного вызова http в модуль записи для работы асинхронно и без блокировки?
Это возможно? Если так, может кто-нибудь дать мне подсказку о том, как это сделать?