'ByteBuffer'에 해당되는 글 1건

  1. 2011.04.19 Java NIO의 ByteBuffer와 Netty ChannelBuffer의 차이점
Java NIO의 ByteBuffer 는 mark, postion, limit, capacity로 구성이 됩니다.

buffer.clear() : position = 0, limit = capacity, mark = -1 로 세팅
inputChannel.read(buffer) : channel로 부터 읽어들어 buffer 에 넣는다. position 위치는 read 한 만큼 옮겨진다.
buffer.flip() : limit = position, position = 0, mark = -1 로 한다. 
outputChannel.write(buffer); buffer의 position 부터 limit 까지 읽어서 channel에 쓴다. 

반면에 Netty의 ChannelBuffer 는  readerIndex, writerIndex, capacity로 구성

channelBuffer.clear() : readerIndex = 0, writerIndex = 0 으로 세팅
channelBuffer.write(...) : buffer에 내용을 쓴다. writerIndex 의 값이 쓴 크기만큼 증가
channel.write(channelBuffer) : buffer의 readerIndex 부터 writerIndex 까지 읽어서 channel에 쓴다.

channelBuffer.readable() 이 true 라는 의미는 writerIndex - readerIndex > 0 으로 버퍼에 더 읽을 내용이 있다는  의미

Posted by Kubernetes Korea co-leader seungkyua@gmail.com