这个类的学习其实我感觉看ChannelBuffer的javadoc就能明白大概,也就是网上说的有readerIndex和writerIndex,以及和这两个相关的
markedReaderIndex和markedWriterIndex,我这里重点看一下discardReadBytes
这个函数的实现吧:
public void discardReadBytes() {
if (readerIndex == 0) {
return;
}
setBytes(0, this, readerIndex, writerIndex - readerIndex);
writerIndex -= readerIndex;
markedReaderIndex = Math.max(markedReaderIndex - readerIndex, 0);
markedWriterIndex = Math.max(markedWriterIndex - readerIndex, 0);
readerIndex = 0;
}
其实就是将readIndex到writerIndex之间length为writerIndex减去readerIndex的byte拷贝到从0去,这样数据就拷贝过去了。然后变更写指针,因为readerIndex到writerIndex直接的空间就被腾出来了,变更写指针到之前的读指针的位置上。然后解决markedReaderIndex和markedWriterIndex这两个指针的位置,最后将readerIndex设置为0.其他的方法理解起来都比较好理解一些。
ChannelBufferIndexFinder这个接口比较特殊,感觉就是查找是否已经到了某些特殊字符了,比如\r和\n等等,这个对消息的截取等比较有帮助。
ChannelBufferOutputStream类是将对BufferChannel封装成一个OutputStream,同样的
也有ChannelBufferInputStream类。
分享到:
相关推荐
Netty基础,用于学习Netty,参考黑马程序员的netty教程
Java进阶技术-netty进阶之路
Netty进阶之路,跟着案例学Netty,李林峰大神新作。值得一读。
Netty进阶之路 跟着案例学Netty 整本书无密码,Netty进阶之路 跟着案例学Netty
《Netty进阶之路:跟着案例学Netty》中的案例涵盖了Netty的启动和停止、内存、并发多线程、性能、可靠性、安全等方面,囊括了Netty绝大多数常用的功能及容易让人犯错的地方。在案例的分析过程中,还穿插讲解了Netty...
netty pojo netty pojo替换 channelbuffer
Netty学习笔记_Springboot实现自定义协议.docx Netty学习笔记_Springboot实现自定义协议.docx Netty学习笔记_Springboot实现自定义协议.docx
《Netty进阶之路 跟着案例学Netty》_李林锋_2018-11-01
netty-3.1官网学习手册,中文版
在本书中,作者将在过去几年实践中遇到的问题,以及Netty学习者咨询的相关问题,进行了归纳和总结,以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析,让读者能够真正掌握Netty,在...
学习netty源码,为后续rocketmq等学习打下基础
NULL 博文链接:https://asialee.iteye.com/blog/1768861
Netty全套学习资源(包括源码、笔记、学习文档等)
Netty实践学习案例
附件为韩顺平老师的netty教程学习资料。老师教学视频可以在B站去找。个人感觉很不错。如果有需要可以去看看。
代码解压后可看到netty3和netty5实现的心跳处理案例,代码比较简单,适合初学者,欢迎大家交流学习,欢迎下载。。。。。
Netty 框架学习 —— 第一个 Netty 应用(csdn)————程序
netty 学习之路 项目笔记 项目说明 1、所谓BIO编程,就是使用JDK1.4之前的api进行编程,在这里我们以ServerSocket和Socket为例进行讲解, 编写一个时间服务的C/S架构应用。 2、client可以发送请求指令"GET CURRENT ...
netty学习笔记