Hi<div><br></div><div>I think this is working correctly, and the API said readableBytes = writerIndex - readerIndex.<br><div>So the solution is as simple as to mark the writerIndex before the changes, and then restore writerIndex when done:</div>
<div><div><br></div><div><div>ChannelBuffer buffer = dynamicBuffer(512);</div><div>// write some bytes here</div><div>...</div><div>buffer.markWriterIndex();</div><div>System.out.println(&quot;readableBytes: &quot; + buffer.readableBytes());</div>
<div>buffer.writerIndex(2);</div><div>// overwrite some bytes here</div><div>...</div><div>buffer.resetWriterIndex();</div><div>System.out.println(&quot;readableBytes: &quot; + buffer.readableBytes());</div><div><br></div>
<div><br></div><div><br></div><div class="gmail_quote">On Wed, Apr 1, 2009 at 4:47 PM, hezjing <span dir="ltr">&lt;<a href="mailto:hezjing@gmail.com">hezjing@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi<div><br></div><div>Is it normal that ChannelBuffer.write*() changes the readable bytes?</div><div><br></div><div>For example:<br><div><br></div><div><div>ChannelBuffer buffer = dynamicBuffer(512);</div><div>// write some bytes here</div>

<div>...</div><div><div>System.out.println(&quot;readableBytes: &quot; + buffer.readableBytes());</div><div>buffer.writerIndex(2);</div><div>System.out.println(&quot;readableBytes: &quot; + buffer.readableBytes());</div>
<div>
<br></div><div>and the program printed:</div><div><br></div><div><div>readableBytes: 27</div><div>readableBytes: 2</div></div><div><br></div><div><br></div><div>The readable bytes became 2 after the writerIndex() is called (it was 27).</div>

<div><br></div><br>-- <br><br>Hez<br>
</div></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><br>Hez<br>
</div></div></div>