Неблокирующие записи между слушателями

Я читаю 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 в модуль записи для работы асинхронно и без блокировки?

Это возможно? Если так, может кто-нибудь дать мне подсказку о том, как это сделать?

0 ответов

Другие вопросы по тегам