nl:: Weave:: WeaveMessageLayer
#include <src/lib/core/WeaveMessageLayer.h>
WeaveMessageLayer 類別的定義,用於管理與其他 Weave 節點的通訊。
摘要
它會使用其中一個 InetLayer 端點,與其他 Weave 節點建立通訊管道。
建構函式和解構函式 |
|
---|---|
WeaveMessageLayer(void)
Weave Message 圖層建構函式。
|
公開類型 |
|
---|---|
AcceptErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err)
|
typedefvoid(*
此函式是在處理傳入的 TCP 連線期間回報錯誤的較高層回呼。 |
CallbackRemovedFunct)(void *listenerState)
|
typedefvoid(*
系統會叫用此函式來移除回呼。 |
ConnectionReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveConnection *con)
|
typedefvoid(*
此函式是處理傳入 TCP 連線的較高層回呼。 |
MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive)
|
typedefvoid(*
這個函式是回報訊息層活動變更的應用程式回呼。 |
MessageReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload)
|
typedefvoid(*
此函式為透過 UDP 收到 Weave 訊息時叫用的較高層回呼。 |
ReceiveErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo)
|
typedefvoid(*
這個函式是在發生錯誤時叫用的較高層回呼。 |
State{
|
列舉 WeaveMessageLayer 的狀態。 |
TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload)
|
typedefvoid(*
此函式是在收到本機 UDP 通道的通道封包時,叫用的較高層回呼。 |
公開屬性 |
|
---|---|
AppState
|
void *
應用程式特定狀態物件的指標。
|
ExchangeMgr
|
[唯讀] 相關聯的 WeaveExchangeManager 物件。
|
FabricState
|
[READ ONLY] 相關聯的 WeaveFabricState 物件。
|
IncomingConIdleTimeout
|
uint32_t
連入連線的預設閒置逾時 (以毫秒為單位)。
|
Inet
|
InetLayer *
[READ ONLY] 相關的 InetLayer 物件。
|
IsListening
|
bool
[READ ONLY] 監聽傳入連線/訊息時為 true,否則傳回 false。
|
OnAcceptError
|
|
OnConnectionReceived
|
|
OnMessageReceived
|
|
OnReceiveError
|
|
OnUDPTunneledMessageReceived
|
|
SecurityMgr
|
[唯讀] 相關聯的 WeaveSecurityManager 物件。
|
State
|
uint8_t
[READ ONLY] WeaveMessageLayer 物件的狀態。
|
SystemLayer
|
|
mDropMessage
|
bool
僅供內部使用;僅限偵錯;設定後,WeaveMessageLayer 會捨棄訊息並傳回。
|
公開函式 |
|
---|---|
ClearUnsecuredConnectionListener(ConnectionReceiveFunct oldOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved)
|
|
CloseEndpoints(void)
|
關閉所有開放的 TCP 和 UDP 端點。
|
CreateTunnel(WeaveConnectionTunnel **tunPtr, WeaveConnection & conOne, WeaveConnection & conTwo, uint32_t inactivityTimeoutMS)
|
將兩個指定的 WeaveConnections 結合在一起,建立 WeaveConnectionTunnel。
|
DecodeHeader(PacketBuffer *msgBuf, WeaveMessageInfo *msgInfo, uint8_t **payloadStart)
|
將收到的 Weave 訊息中的 Weave Message 圖層標頭解碼。
|
EncodeMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf, WeaveConnection *con, uint16_t maxLen, uint16_t reserve)
|
將 WeaveMessageLayer 標頭編碼至 PacketBuffer。
|
EncodeMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntId, WeaveMessageInfo *msgInfo, PacketBuffer *payload)
|
將 Weave Message 圖層標頭編碼至 PacketBuffer。
|
EphemeralUDPPortEnabled(void) const
|
bool
檢查是否應透過臨時 UDP 來源通訊埠傳送本機啟動的 Weave UDP 資料流。
|
GetConnectionPoolStats(nl::Weave::System::Stats::count_t & aOutInUse) const
|
void
取得使用中的 WeaveConnections 數量,以及集區大小。
|
IPv4ListenEnabled(void) const
|
bool
檢查 WeaveMessageLayer 是否設為監聽透過 IPv4 的傳入通訊。
|
IPv6ListenEnabled(void) const
|
bool
檢查 WeaveMessageLayer 是否設為監聽透過 IPv4 的傳入通訊。
|
Init(InitContext *context)
|
初始化 Weave 訊息圖層物件。
|
IsBoundToLocalIPv4Address(void) const
|
bool
檢查 WeaveMessageLayer 是否繫結至本機 IPv4 位址。
|
IsBoundToLocalIPv6Address(void) const
|
bool
檢查 WeaveMessageLayer 是否繫結至本機 IPv6 位址。
|
IsMessageLayerActive(void)
|
bool
|
NewConnection(void)
|
從集區建立新的 WeaveConnection 物件。
|
NewConnectionTunnel(void)
|
從集區建立新的 WeaveConnectionTunnel 物件。
|
ReEncodeMessage(PacketBuffer *buf)
|
|
RefreshEndpoints(void)
|
根據系統網路介面的目前狀態重新整理 InetLayer 端點。
|
ResendMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
使用基礎的 Inetlayer UDP 端點,重新傳送已編碼的 Weave 訊息。
|
ResendMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
使用基礎的 Inetlayer UDP 端點,重新傳送已編碼的 Weave 訊息。
|
ResendMessage(const IPAddress & destAddr, uint16_t destPort, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
使用基礎的 Inetlayer UDP 端點,重新傳送已編碼的 Weave 訊息。
|
ResendMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId interfaceId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
使用基礎的 Inetlayer UDP 端點,重新傳送已編碼的 Weave 訊息。
|
SendMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
編碼後,使用基礎的 Inetlayer UDP 端點傳送 Weave 訊息。
|
SendMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
編碼後,使用基礎的 Inetlayer UDP 端點傳送 Weave 訊息。
|
SendMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntfId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
編碼後,使用基礎的 Inetlayer UDP 端點傳送 Weave 訊息。
|
SendUDPTunneledMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
|
透過本機 UDP 通道傳送通道封包的函式。
|
SetSignalMessageLayerActivityChanged(MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler)
|
void
設定應用程式處理常式,該處理常式將在每次訊息層的活動變更時呼叫。
|
SetTCPListenEnabled(bool val)
|
void
啟用或停用 WeaveMessageLayer 中的傳入 TCP 連線。
|
SetUDPListenEnabled(bool val)
|
void
啟用或停用 WeaveMessageLayer 中的傳入 UDP 訊息。
|
SetUnsecuredConnectionListener(ConnectionReceiveFunct newOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved, bool force, void *listenerState)
|
|
Shutdown(void)
|
|
TCPListenEnabled(void) const
|
bool
檢查 WeaveMessageLayer 是否設為監聽傳入 TCP 連線。
|
UDPListenEnabled(void) const
|
bool
檢查 WeaveMessageLayer 是否已設為監聽傳入 UDP 訊息。
|
UnsecuredListenEnabled(void) const
|
bool
啟用或停用從臨時 UDP 來源通訊埠啟動編織 UDP 交換庫的功能。
|
公開的靜態函式 |
|
---|---|
GetMaxWeavePayloadSize(const PacketBuffer *msgBuf, bool isUDP, uint32_t udpMTU)
|
uint32_t
取得訊息設定和提供的 PacketBuffer 的 Weave 酬載大小上限。
|
GetPeerDescription(char *buf, size_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, InterfaceId interfaceId, const WeaveConnection *con)
|
void
建構用來說明對等節點及其關聯位址 / 連線資訊的字串。
|
GetPeerDescription(char *buf, size_t bufSize, const WeaveMessageInfo *msgInfo)
|
void
根據從對等點收到的訊息相關資訊,建構描述同點節點的字串。
|
類別 |
|
---|---|
nl:: |
InitContext 類別的定義。 |
公開類型
AcceptErrorFunct
void(* AcceptErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err)
此函式是在處理傳入的 TCP 連線期間回報錯誤的較高層回呼。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
CallbackRemovedFunct
void(* CallbackRemovedFunct)(void *listenerState)
系統會叫用此函式來移除回呼。
詳細資料 | |||
---|---|---|---|
參數 |
|
ConnectionReceiveFunct
void(* ConnectionReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveConnection *con)
此函式是處理傳入 TCP 連線的較高層回呼。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
MessageLayerActivityChangeHandlerFunct
void(* MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive)
這個函式是回報訊息層活動變更的應用程式回呼。
如有至少一個開放式廣告交易平台或待處理的訊息計數器同步處理要求,系統會將訊息層視為有效。
詳細資料 | |||
---|---|---|---|
參數 |
|
MessageReceiveFunct
void(* MessageReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload)
此函式為透過 UDP 收到 Weave 訊息時叫用的較高層回呼。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
ReceiveErrorFunct
void(* ReceiveErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo)
這個函式是在發生錯誤時叫用的較高層回呼。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
州
State
WeaveMessageLayer 的狀態。
屬性 | |
---|---|
kState_Initialized
|
WeaveMessageLayer 初始化時的狀態。 |
kState_Initializing
|
WeaveMessageLayer 處於初始化程序的狀態。 |
kState_NotInitialized
|
WeaveMessageLayer 未初始化的狀態。 |
TunneledMsgReceiveFunct
void(* TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload)
此函式是在收到本機 UDP 通道的通道封包時,叫用的較高層回呼。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
公開屬性
AppState
void * AppState
應用程式特定狀態物件的指標。
IncomingConIdleTimeout
uint32_t IncomingConIdleTimeout
連入連線的預設閒置逾時 (以毫秒為單位)。
Inet
InetLayer * Inet
[READ ONLY] 相關的 InetLayer 物件。
IsListening
bool IsListening
[READ ONLY] 監聽傳入連線/訊息時為 true,否則傳回 false。
OnAcceptError
AcceptErrorFunct OnAcceptError
OnConnectionReceived
ConnectionReceiveFunct OnConnectionReceived
OnMessageReceived
MessageReceiveFunct OnMessageReceived
OnReceiveError
ReceiveErrorFunct OnReceiveError
OnUDPTunneledMessageReceived
TunneledMsgReceiveFunct OnUDPTunneledMessageReceived
SystemLayer
System::Layer * SystemLayer
公開函式
ClearUnsecuredConnectionListener
WEAVE_ERROR ClearUnsecuredConnectionListener( ConnectionReceiveFunct oldOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved )
CloseEndpoints
WEAVE_ERROR CloseEndpoints( void )
CreateTunnel
WEAVE_ERROR CreateTunnel( WeaveConnectionTunnel **tunPtr, WeaveConnection & conOne, WeaveConnection & conTwo, uint32_t inactivityTimeoutMS )
將兩個指定的 WeaveConnections 結合在一起,建立 WeaveConnectionTunnel。
建立成功後,與元件 WeaveConnection 物件相對應的 TCPEndPoints 會轉移至 WeaveConnectionTunnel,否則 WeaveConnections 會關閉。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
DecodeHeader
WEAVE_ERROR DecodeHeader( PacketBuffer *msgBuf, WeaveMessageInfo *msgInfo, uint8_t **payloadStart )
將收到的 Weave 訊息中的 Weave Message 圖層標頭解碼。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
EncodeMessage
WEAVE_ERROR EncodeMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf, WeaveConnection *con, uint16_t maxLen, uint16_t reserve )
將 WeaveMessageLayer 標頭編碼至 PacketBuffer。
詳細資料 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||
傳回值 |
|
EncodeMessage
WEAVE_ERROR EncodeMessage( const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntId, WeaveMessageInfo *msgInfo, PacketBuffer *payload )
將 Weave Message 圖層標頭編碼至 PacketBuffer。
詳細資料 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||
傳回值 |
|
EphemeralUDPPortEnabled
bool EphemeralUDPPortEnabled( void ) const
檢查是否應透過臨時 UDP 來源通訊埠傳送本機啟動的 Weave UDP 資料流。
GetConnectionPoolStats
void GetConnectionPoolStats( nl::Weave::System::Stats::count_t & aOutInUse ) const
取得使用中的 WeaveConnections 數量,以及集區大小。
詳細資料 | |||
---|---|---|---|
參數 |
|
Init
WEAVE_ERROR Init( InitContext *context )
初始化 Weave 訊息圖層物件。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
IsBoundToLocalIPv4Address
bool IsBoundToLocalIPv4Address( void ) const
檢查 WeaveMessageLayer 是否繫結至本機 IPv4 位址。
IsBoundToLocalIPv6Address
bool IsBoundToLocalIPv6Address( void ) const
檢查 WeaveMessageLayer 是否繫結至本機 IPv6 位址。
IsMessageLayerActive
bool IsMessageLayerActive( void )
NewConnection
WeaveConnection * NewConnection( void )
NewConnectionTunnel
WeaveConnectionTunnel * NewConnectionTunnel( void )
ReEncodeMessage
WEAVE_ERROR ReEncodeMessage( PacketBuffer *buf )
RefreshEndpoints
WEAVE_ERROR RefreshEndpoints( void )
根據系統網路介面的目前狀態重新整理 InetLayer 端點。
詳細資料 | |||||
---|---|---|---|---|---|
傳回值 |
|
ResendMessage
WEAVE_ERROR ResendMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用基礎的 Inetlayer UDP 端點,重新傳送已編碼的 Weave 訊息。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
ResendMessage
WEAVE_ERROR ResendMessage( const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用基礎的 Inetlayer UDP 端點,重新傳送已編碼的 Weave 訊息。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
ResendMessage
WEAVE_ERROR ResendMessage( const IPAddress & destAddr, uint16_t destPort, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用基礎的 Inetlayer UDP 端點,重新傳送已編碼的 Weave 訊息。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
ResendMessage
WEAVE_ERROR ResendMessage( const IPAddress & destAddr, uint16_t destPort, InterfaceId interfaceId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用基礎的 Inetlayer UDP 端點,重新傳送已編碼的 Weave 訊息。
注意:-如果尚未提供目的地地址,請嘗試根據郵件標頭中的節點 ID 判斷目的地地址。如果無法完成這項操作,則代表失敗。 -如果目的地地址是當地織布的布料地址,且呼叫端並未指定目的地節點 ID,請從目的地位址擷取。
詳細資料 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
SendMessage
WEAVE_ERROR SendMessage( WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
編碼後,使用基礎的 Inetlayer UDP 端點傳送 Weave 訊息。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回值 |
|
SendMessage
WEAVE_ERROR SendMessage( const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
編碼後,使用基礎的 Inetlayer UDP 端點傳送 Weave 訊息。
注意:-使用的目的地通訊埠是 WEAVE_PORT。 -如果尚未提供目的地地址,請嘗試根據郵件標頭中的節點 ID 來判斷目的地地址。如果無法完成這項操作,則代表失敗。
-如果目的地地址是當地織布的布料地址,且呼叫端並未指定目的地節點 ID,請從目的地位址擷取。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
SendMessage
WEAVE_ERROR SendMessage( const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntfId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
編碼後,使用基礎的 Inetlayer UDP 端點傳送 Weave 訊息。
注意:-如果尚未提供目的地地址,請嘗試根據郵件標頭中的節點 ID 判斷目的地地址。如果無法完成這項操作,則代表失敗。 -如果目的地地址是當地織布的布料地址,且呼叫端並未指定目的地節點 ID,請從目的地位址擷取。
詳細資料 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
SendUDPTunneledMessage
WEAVE_ERROR SendUDPTunneledMessage( const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
透過本機 UDP 通道傳送通道封包的函式。
透過 UDP 傳送通道 IPv6 資料訊息。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
SetSignalMessageLayerActivityChanged
void SetSignalMessageLayerActivityChanged( MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler )
設定應用程式處理常式,該處理常式將在每次訊息層的活動變更時呼叫。
具體來說,應用程式每次都會收到通知:
- 開啟的廣告交易平台變更數量
- 待處理的訊息計數器同步處理要求數,從 0 變成至少 1,然後再調回零。並將處理常式視為一般信號,指出是否有進行中的 Weave 對話或待處理回應。處理常式必須在 WeaveMessageLayer 初始化後設定。關閉 WeaveMessageLayer 後,系統會清除目前的處理常式。
詳細資料 | |||
---|---|---|---|
參數 |
|
||
傳回值 |
|
SetTCPListenEnabled
void SetTCPListenEnabled( bool val )
啟用或停用 WeaveMessageLayer 中的傳入 TCP 連線。
注意:在 TCP 監聽狀態變更後,必須呼叫 RefreshEndpoints()
。
SetUDPListenEnabled
void SetUDPListenEnabled( bool val )
啟用或停用 WeaveMessageLayer 中的傳入 UDP 訊息。
注意: 在 UDP 聆聽狀態變更之後,必須呼叫 RefreshEndpoints()
。
SetUnsecuredConnectionListener
WEAVE_ERROR SetUnsecuredConnectionListener( ConnectionReceiveFunct newOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved, bool force, void *listenerState )
關閉
WEAVE_ERROR Shutdown( void )
關閉所有開放的 Inet 層端點,重設所有較高層的回呼、成員變數和物件。呼叫 Shutdown() 會終止 WeaveMessageLayer 物件。
UnsecuredListenEnabled
bool UnsecuredListenEnabled( void ) const
啟用或停用從臨時 UDP 來源通訊埠啟動編織 UDP 交換庫的功能。
注意:臨時通訊埠狀態變更之後,您必須呼叫 RefreshEndpoints()
。檢查是否已啟用不安全的聆聽功能。
WeaveMessageLayer
WeaveMessageLayer( void )
Weave Message 圖層建構函式。
公開的靜態函式
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const PacketBuffer *msgBuf, bool isUDP, uint32_t udpMTU )
取得訊息設定和提供的 PacketBuffer 的 Weave 酬載大小上限。
傳回的酬載大小上限不會超過所提供 PacketBuffer 內酬載的可用空間。
如果訊息為 UDP,傳回的酬載大小上限不會導致 Weave 訊息不會溢位指定的 UDP MTU。
最後,傳回的酬載大小上限不會導致 Weave 訊息無法超出 Weave 訊息大小上限。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回 |
Weave 酬載大小上限
|
GetPeerDescription
void GetPeerDescription( char *buf, size_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, InterfaceId interfaceId, const WeaveConnection *con )
建構用來說明對等節點及其關聯位址 / 連線資訊的字串。
產生的字串格式如下:
([ ]: % , con )
詳細資料 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
GetPeerDescription
void GetPeerDescription( char *buf, size_t bufSize, const WeaveMessageInfo *msgInfo )
根據從對等點收到的訊息相關資訊,建構描述同點節點的字串。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|