下面的是ServerBootstrap 的内部类 ServerBootstrapAcceptor extends ChannelInboundHandlerAdapter 的方法

这里其实卡住了我很长时间,为啥AbastracHandlerContext的handler()方法,返回的会是ServerBootstrapAcceptor 的对象呢?

先看handler方法,这是个重写的方法,会在子类里实现,到底是哪个子类实现的?往上看,调用handler的方法参数,从上面传进来的是一个 在 pipeline里面 叫 head的属性,

在new 一个defaultPipeline的时候, head 和 tail

也就是说,pipeline里面保存一个handlercontext的链表,从head一直执行到tail,那么被添加到pipeline里面的handler都会执行。

而 serverbootstrap的init()方法,最后有这样的逻辑:添加一个new ServerBootstrapAcceptor 到pipeline中

添加了两个handler,第一个是serverbootstrap中的传入的handler,第二个是new的一个 acceptor,什么时候启动的initchannel方法呢?

netty源码理解(三) 从channel读取数据的更多相关文章

  1. Netty源码解读(四)-读写数据

    读写Channel(READ)的创建和注册 在NioEventLoop#run中提到,当有IO事件时,会调用processSelectedKeys方法来处理. 当客户端连接服务端,会触发服务端的ACC ...

  2. netty源码理解补充 之 DefaultChannelPipeline到底是个啥

  3. netty源码理解(二) serverstrap.bind()

    eventloop是一个线程,里面有一个executor封装了一个线程工厂,在启动的时候启动一个线程,传入的实现了runnable的内部类,里面调用了eventloop的run方法.

  4. netty源码理解(一):new一个NioEventLoopGroup的时候做了哪些事

    好了,回到构造方法的调用中

  5. Netty源码之解码中两种数据积累器(Cumulator)的区别

    上一篇随笔中已经介绍了解码核心工作流程,里面有个数据积累器的存在(Cumulator),其实解码中有两种Cumulator,那他们的区别是什么呢? 还是先打开ByteToMessageDecoder的 ...

  6. Netty源码分析--创建Channel(三)

    恩~,没错,其实这一篇才是真正的开始分析源码,你打我呀~. 先看一下我Netty的启动类 private void start() throws Exception { EventLoopGroup ...

  7. netty源码解解析(4.0)-14 Channel NIO实现:读取数据

     本章分析Nio Channel的数据读取功能的实现. Channel读取数据需要Channel和ChannelHandler配合使用,netty设计数据读取功能包括三个要素:Channel, Eve ...

  8. netty源码解解析(4.0)-11 Channel NIO实现-概览

      结构设计 Channel的NIO实现位于io.netty.channel.nio包和io.netty.channel.socket.nio包中,其中io.netty.channel.nio是抽象实 ...

  9. Netty 源码 ChannelHandler(三)概述

    Netty 源码 ChannelHandler(三)概述 Netty 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) 一.Channel ...

随机推荐

  1. Fiddler抓包分析

    在Fiddler的web session界面捕获到的HTTP请求如下图所示:   各字段的详细说明已经解释过,这里不再说明.需要注意的是#号列中的图标,每种图标代表不同的相应类型,具体的类型包括:   ...

  2. pycharm配置appium 提示unsrsloved reference

    1.如:进入C:\Users\Administrator\PycharmProjects\project\venv 输入:在cmd 下进入 venv  输入   Scripts\activate 回车 ...

  3. SqlSever查询某个表的列名称、说明、备注、注释,类型等

    这周整理了数据库文档,发现用导出脚本来整理表的信息注释查看不方便,因此我就想能不能SQL语句查询表的注释或者表的字段.我就我问朋友是不是可以,他给我点指导,然后自己也在网上百度,来实现自己的想法,我把 ...

  4. Leetcode 863. 二叉树中所有距离为 K 的结点

    863. 二叉树中所有距离为 K 的结点  显示英文描述 我的提交返回竞赛   用户通过次数39 用户尝试次数59 通过次数39 提交次数174 题目难度Medium 给定一个二叉树(具有根结点 ro ...

  5. WebSphere安装教程(WAS6.1为例)

    1.网络准备 我们选择图形界面安装,如果堡垒机是windows则要在目标机器安装桌面环境并开启vcnserver:如果堡垒机是Linux则在堡垒机安装桌面环境和vncserver,然后将目标机的DIS ...

  6. OGG文件获取创建日期

    转载:http://blog.sina.com.cn/s/blog_b0ed98070102v1tr.html 搜索关键字: OGG文件的数据结构以及读取其注释信息的代码 实例说明: "DA ...

  7. springboot程序构建一个docker镜像(十一)

    准备工作 环境: linux环境或mac,不要用windows jdk 8 maven 3.0 docker 对docker一无所知的看docker教程. 创建一个springboot工程 引入web ...

  8. SpringMVC中JSP页面显示为源码

    @RequestMapping(value = "login") public ModelAndView login(ModelAndView mav) throws Except ...

  9. Java 求两个数百分比%

    int num1 = 500; int num2 = 312; // 创建一个数值格式化对象 NumberFormat numberFormat = NumberFormat.getInstance( ...

  10. 蓝桥杯—BASIC-21 sine之舞(递归递推)

    题目:最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数,所以他准备和奶牛们做一个“Sine之舞”的游戏,寓教于乐,提高奶牛们的计算能力. 不妨设 An=sin(1– ...