Netty源码剖析——ServerBootstrap 创建和构造过程(二十九)

ServerBootstrap 是个空构造器,但是有默认的成员变量,底层属性用了LinkedHashMap存ChannelOption和AttributeKey

private final Map<ChannelOption<?>,Object> childOptions=newLinkedHashMap<ChannelOption<?>,Object>();

private final Map<AttributeKey<?>,ObjecD>childAttrs=new LinkedHashMap<AttributeKey<?>,Object>();

//config对象,会在后面起很大作用
private final ServerBootstrapConfig config=new ServerBootstrapConfig(this);

private volatile EventLoopGroup childGroup;

private volatile ChannelHandler childHandler;

分析一下 ServerBootstrap 基本使用情况

ServerBootstrap b=new ServerBootstrap();
b.group(bossGroup,workerGroup)
.channel(NioServerSocketChannel.class)
.option(ChannelOption.SO_BACKLOG,100)
.handler(new LoggingHandler(LogLevel.INFO))
.childHandler(new ChannelInitializer<SocketChannel>){
@Override
public void initChannel(SocketChannel ch)throws Exception{
ChannelPipeline p=ch.pipeline();
if(sslCtx l=null){
p.addLast(sslCtx.newHandler(ch.alloc());
}
//p.addLast(new LoggingHandler(LogLevel.INFO));
p.addLast(new EchoServerHandler();
}
});

说明:
1)链式调用:group方法,将boss和worker传入,boss 赋值给 parentGroup 属性,worker 赋值给 childGroup 
2)channel 方法传入 NioServerSocketChannel class 对象。会根据这个 class 创建 channel 对象。
3)option 方法传入 TCP参数,放在一个LinkedHashMap 中。
4)handler 方法传入一个 handler 中,这个hanlder只专属于 ServerSocketChannel 而不是给SocketChannel 用
5)childHandler 传入一个 hanlder ,这个handler 将 在每个客户端连接的时候调用。供 SocketChannel 使用

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值