Netty 解碼器

解碼器抽象的解碼過程

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

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

常用的解碼器

  • 固定長度的解碼器(FixedLengthFrameDecoder):解碼效果如下圖:
  • 行解碼器
    行解碼器是根據"/n"或者"/r/n"來進行解碼的,LineBasedFrameDecoder類包括如下重要的參數在非丟度模式下的解碼邏輯如下圖:所謂的丟度模式是指當讀取到的數據不包括“/n”,而且讀到的數據超過了設置的最大長度,則會將這個包進行丟棄,丟度的長度爲直到讀取到"/n"爲止。丟棄模式下的處理流程如下圖:處理失敗的邏輯如下圖所示:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章