/** * Netty的buffer设计思想: * ByteBuf的属性:readerIndex, writerIndex和capacity; * 0 -- readerIndex之间的内存表示被read操作读取字节数据;readerIndex -- writerIndex之间的内存表示未被读字节; * writerIndex -- capacity之间的内存表示可写字节;clear操作后:readerIndex=writerIndex=0. * * Channel的操作分为三类: event相关、socket相关,buffer相关 * event相关操作: register/unregister/ * buffer相关操作: write/flush/read/bufAllocator * * * EventLoopGroup处理读事件; * AbstractScheduledEventExecutor <--- SingleThreadEventLoop <--- NioEventLoop.run()--->select() * --->NioEventLoop.processSelectedKeys()---- * processSelectedKey(SelectionKey, NioChannel)<---processSelectedKeysOptimized()<--| * |--->AbstractNioMessageChannel.read()--->NioServerSocketChannel.doReadMessage()-- * ChannelPipeline.fireChannelRead()<---| * 在AbstractBootstrap.initAndRegister()将channel注册到eventLoop中。
netty事件处理流程
最新推荐文章于 2023-07-05 22:07:29 发布