ChannelHandler用来处理Channel上的各种事件,分为入站和出站两种。
所有的ChannelHandler被连成一串,就是Pipeline。
入站处理器通常是ChannelInboundHandlerAdapter的子类,主要用来读取客户端数据,写回结果。
出站处理器通常是ChannelOutboundHandlerAdapter的子类,主要对写回结果进行加工。
默认有head和tail,一头一尾两个handler,添加的handler其实是在他们之间的。
每个channel就是一个产品的加工车间,Pipeline是车间中的流水线,ChannelHandler是流水线上的各道工序,ByteBuf就是原材料,经过很多工序的加工:先经过一道道入站工序,再经过一道道出站工序最终变成产品。
//添加处理器 head -> h1 -> h2 -> h3 -> h4 -> h5 -> h6 -> tail
ChannelInboundHandlerAdapter 入站是读取客户端发送过来的数据进行一道道工序加工处理,处理顺序是H1,H2,H3;也就是说handler的执行顺序就是handler添加到pipeline的顺序。
C