Netty(五):ServerBootstrap啟動流程
這篇文章主要是對ServerBootstrap啟動流程做一個梳理,方便我們串聯起各個類,同時也對主要的一些類有個大概的印象,方便之後逐個類的深入學習。
本篇文章不在具體貼出代碼,而是對整個啟動流程畫了一個時序圖,方便我們直觀的了解各個過程,讀者可以照著時序圖,自己跟蹤一遍代碼,了解整個過程。
參照上面的流程圖,我們對整個啟動過程做一個簡單的概括。
啟動流程大概可以分為三個步驟:初始化,註冊,綁定。
1).初始化主要的過程:創建Channel對象,為Channel配置屬性及選項,添加對應的handler。
2).註冊的主要過程:將channel與eventLoop綁定;調用內部封裝的ServerSocketChannel註冊interestOps;註冊完成後,調用pipeline產生對應的事件(fireChannelRegister,以及可能的Actived事件)
3).綁定的主要過程:調用內部封裝的ServerSocketChannel綁定端口,綁定成功後(fireChannelActived)
同時我在看代碼的時候,也有一些問題仍然沒有頭緒:
問題1:ServerSocketChannel註冊的interestOps為何是0?我們知道SelectionKey中OP_READ為1;OP_WRITE為2;OP_CONNECT為3;OP_ACCEPT為4。那註冊0表示什麽意思?
問題2:了解NIO的同學應該知道,ServerSocketChannel應該在註冊對應Connect或是Accept之類的事件,然後在有連接時,產生SocketChannel,那麽Netty是在何處實現這部分的操作的?
這些問題希望能在日後更深入的學習Netty的過程中了解答案。同時,如果有了解Netty的同學知道上面的問題,也請幫忙解惑。
Netty(五):ServerBootstrap啟動流程