반응형
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 으로 버퍼에 더 읽을 내용이 있다는 의미
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 으로 버퍼에 더 읽을 내용이 있다는 의미
반응형