1. 程式人生 > >MQTT---HiveMQ原始碼詳解(九)Netty-Codec

MQTT---HiveMQ原始碼詳解(九)Netty-Codec

MQTT交流群:221405150

codec無外乎就是encoder和decoder,無外乎就是把客戶端發過來的mqtt位元組碼轉換成mqtt訊息的物件,把服務端發出去的mqtt物件成位元組碼。所以我們只是列個兩個簡單的類圖即可。

encoders

這裡寫圖片描述

MqttMessageEncoder持有上述所有*MessageEncdoer,根據message型別呼叫不同的類去講訊息轉換成位元組碼

decoders

這裡寫圖片描述

MqttMessageDecoder持有上述所有*MessageDecoder,根據mqtt固定表頭,確定是不同的訊息,呼叫不同的*MessageDecoder去講位元組碼轉換成mqtt message物件。
因為由兩個版本,所以ConnectMessageDecoder分別使用不同版本的MessageDecoder去處理。

相關推薦

MQTT---HiveMQ原始碼()Netty-Codec

MQTT交流群:221405150 codec無外乎就是encoder和decoder,無外乎就是把客戶端發過來的mqtt位元組碼轉換成mqtt訊息的物件,把服務端發出去的mqt

MQTT---HiveMQ原始碼(十三)Netty-MQTT訊息、事件處理(原始碼舉例解讀)

MQTT交流群:221405150 前言 由於上一篇講的都是大致的流程,所以這一篇我們抽取流程中的一步,給大家介紹Authentication部分的原始碼,讓大家對上一節的理解更深。 MqttConnectHandler

MQTT---HiveMQ原始碼(十二)Netty-MQTT訊息、事件處理(流程)

MQTT交流群:221405150 簡介 前面這些章節,講的基本上都是屬於netty對MQTT周邊的一些處理,由於MQTT協議總共目前可用的訊息型別有14個,如果再加上對應的事件處理載入一起那就估計大概有14*3個handler,如果每

MQTT---HiveMQ原始碼(十四)Persistence-LocalPersistence

MQTT交流群:221405150 簡介 HiveMQ的Persistence提供配置包括File和Memory,以解決不同場景的不同需求,使用者可以自行配置六種資訊的Pers

MQTT---HiveMQ原始碼(二十)Cluster-Replicate/VectorClock

MQTT交流群:221405150 17章中我們講解了整個HiveMQ的Cluster的原理以及實現方式,值得一提的當然是資料的Replicate,以及當Replicate資料與

MQTT---HiveMQ原始碼(十八)Cluster-kryo與Serializer

MQTT交流群:221405150 既然是Cluster,node之間肯定是需要互動的,那麼肯定是需要序列化和反序列化,HiveMQ是採用kryo來進行序列化的,具體為什麼採用k

【轉】JDK的Parser來解析Java原始碼

轉自:https://www.jb51.net/article/92989.htm 這篇文章主要介紹了JDK的Parser來解析Java原始碼的相關資料,需要的朋友可以參考下 在JDK中,自帶了一套相關的編譯API,可以在Java中發起編譯流程,解析Java原始檔然後獲取其語法樹,在JDK的

Map容器家族(HashMap原始碼)

一、在Map集合家族的位置及描述         HashMap子類繼承自AbstractMap抽象類,實現了Map,Serializable,Cloneable介面,AbstractMap實現了Map介面的一部分方法,減輕了其子類的負擔。

zxing開源庫工作流程原始碼

程式碼獲取 作為移動客戶端開發者來說,對二維碼識別或二維碼生成相關的開發需求肯定並不陌生,Android開發二維碼相關的功能通常都會使用或參考大名鼎鼎的zxing庫。而本文則主要是通過原始碼分析一下該開源庫掃描二維碼的工作流程,對這塊能有個更深的瞭解。 首先使用git將專案程式碼clone到本地,新建專案

Collection容器家族(LinkedHashSet原始碼

一、在Collection集合體系中的位置及概述         LinkedHashSet 是非同步的有序的,分別是插入順序和訪問順序,LinkedHashSet的有序性可參考LinkedHashMap的有序性,繼承於HashSet,內部基

Collection容器家族(HashSet原始碼

一、在Collection集合體系中的位置及概述         HashSet繼承自AbstractSet抽象類,實現了Cloneable、Serializable介面,顯示的實現了Set介面。至於為什麼顯示的實現Set介面,我前面的文章講過。

Map容器家族(TreeMap原始碼)

一、在Map集合家族的位置及概述         TreeMap是一個有序的key-value集合,它內部是通過紅-黑樹實現的。TreeMap繼承與AbstractMap,實現了NavigableMap介面,意味著它支援一系列的導航方法

Map容器家族(LinkedHashMap原始碼)

一、在Map集合家族的位置及描述                                    Li

OkHttp原始碼之二完結篇

1. 請大家思考幾個問題 在開始本文之前,請大家思考如下幾個問題。並請大家帶著這幾個問題,去本文尋找答案。如果你對下面幾個問題的答案瞭如指掌那本文可以略過不看 在瀏覽器中輸入一個網址,按回車後發生了什麼? Okhttp的TCP連線建立發生在什麼時候? Okht

OkHttp原始碼之Okio原始碼

請在電腦上閱讀,效果更佳 本文將從兩個技術點講解OkHttp 1. 講解Okio,因為Okhttp的IO操作都是基於Okio,拋開Okio的OkHttp講解是不完美的 2. 講解OkHttp原始碼 Okio 1. Okio簡介 引用官方的一段介紹 Okio是一個補

wordcount 原始碼

1.原始碼解釋 package org.apache.hadoop.examples;import java.io.IOException;import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;import

openTSDB原始碼之rowKey生成

openTSDB原始碼詳解之rowKey生成 openTSDB的一個非常好的設計就是其rowKey的生成。下面詳細介紹一下。 1.相關處理類 openTSDB往hbase中寫入資料的處理過程,我之前就已經分析過,主要涉及的類有: addPointInternal(

openTSDB原始碼之Deferred類簡單示例2

openTSDB原始碼詳解之Deferred類簡單示例2 1.示例2 1.1 程式碼 程式程式碼如下: public static void test2() { try { //注意這個時候由 dfd -> dfd List(lstDfd)。但是其型

openTSDB原始碼之Deferred類程式碼簡單示例1

openTSDB原始碼詳解之Deferred類程式碼簡單示例1 1.示例1 1.1 程式碼 /** * simplest with only 1 defer * 最簡單的,僅僅只有1個defer */ public static void test

openTSDB 原始碼之寫入資料到 tsdb-uid 表

openTSDB 原始碼詳解之寫入資料到tsdb-uid表 1.方法入口messageReceived public void messageReceived(final ChannelHandlerContext ctx,