1
Если ByteBuffer
написано частично, обновляется position
, и следующий звонок _channel.write
возобновится с последней позиции, да?ByteBuffer и частичная запись
compact()
не нужно?
private AsynchronousSocketChannel _channel;
private ByteBuffer _buffer;
final CompletionHandler<Integer, LogstashClientStream> _writeCompletionHandler = new CompletionHandler<Integer, LogstashClientStream>(){
@Override
public void completed(Integer sent, LogstashClientStream self) {
if(_buffer.remaining() == 0){
_buffer.clear();
//...
}
else {
// partial write
self.send();
}
}
@Override
public void failed(Throwable exc, LogstashClientStream self) {
//...
}
};
private void send(){
try{
_channel.write(_buffer, this, _writeCompletionHandler);
} catch(Throwable e){
//...
}
}
В чем проблема? Работает ли код или нет? Если нет, то что работает не так, как ожидалось? – Gavriel