Ошибка в org.jboss.netty.buffer.ChannelBufferInputStream.available ()? - PullRequest
1 голос
/ 23 марта 2012

Метод ChannelBufferInputStream.available ():

@Override
public int available() throws IOException {
    return endIndex - buffer.readerIndex();
}

Разве это не прервется, если вы запишете в буфер после инициализации входного потока?

Не должно ли это быть на самом деле

return buffer.writerIndex() - buffer.readerIndex();

Я пытаюсь сделать что-то вроде этого: Инициализируйте буферы и потоки и читайте / записывайте в ChannelBuffer. Что мне здесь не хватает?

final ChannelBuffer _channelBuffer = ChannelBuffers.dynamicBuffer();

final ChannelBufferOutputStream _outputStream = new ChannelBufferOutputStream(_channelBuffer);

final ChannelBufferInputStream _inputStream = new ChannelBufferInputStream(_channelBuffer);

Edit: Согласно документации конструктора ChannelBufferedInputStream: «Создает новый поток, который считывает данные из указанного буфера, начиная с текущего readerIndex и заканчивая текущим writerIndex».

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

Ответы [ 2 ]

1 голос
/ 14 апреля 2012

Мне нужен поток для извлечения AudioInputStream, который, к сожалению, работает в отдельном потоке, но я нашел обходной путь, используя PipedInputStream / PipedOutputStream. Работает отлично.

По сути, messageReceived сбрасывает мои байты в PipedOutputStream, а мой аудиопоток читает из PipedInputStream и записывает в мой SourceDataLine.

0 голосов
/ 26 марта 2012

Это намеренное поведение. Конец потока определяется при создании ChannelBufferInputStream. Я согласен с тем, что в документации не было такого поведения явно. Позвольте мне это исправить.

...