Netty 解碼器

解碼器抽象的解碼過程

??Netty里的解碼通過抽象類ByteToMessageDecoder進行統一規劃。ByteToMessageDecoder繼承了ChannelInboundHandlerAdapter,解碼器也是一個ChannelHandler下面是ByteToMessageDecoder解碼的過程

ByteToMessageDecoder解碼流程

  • 累加字節流過程如下圖:
  • 調用子類的decode方法進行解碼,代碼如下:
  • 將解析到的ByteBuf向下傳播

常用的解碼器

  • 固定長度的解碼器(FixedLengthFrameDecoder):解碼效果如下圖:
  • 行解碼器
    行解碼器是根據"/n"或者"/r/n"來進行解碼的,LineBasedFrameDecoder類包括如下重要的參數
    在非丟度模式下的解碼邏輯如下圖:
    所謂的丟度模式是指當讀取到的數據不包括“/n”,而且讀到的數據超過了設置的最大長度,則會將這個包進行丟棄,丟度的長度為直到讀取到"/n"為止。丟棄模式下的處理流程如下圖:
    處理失敗的邏輯如下圖所示:
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容