nl:: Weave:: WeaveMessageLayer
#include <src/lib/core/WeaveMessageLayer.h>
WeaveMessageLayer 類別的定義,用於管理與其他 Weave 節點的通訊。
摘要
它採用其中一個 InetLayer 端點,與其他 Weave 節點建立通訊管道。
建構函式和解構函式 |
|
---|---|
WeaveMessageLayer(void)
Weave 訊息圖層建構函式。
|
公開類型 |
|
---|---|
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
|
[READ ONLY] 相關聯的 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
|
[READ ONLY] 相關聯的 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 郵件圖層標頭解碼。
|
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 郵件層標頭編碼至 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 來源通訊埠啟動 Weave 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
連入連線的預設閒置逾時時間 (以毫秒為單位)。
內特
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 郵件圖層標頭解碼。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
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 郵件層標頭編碼至 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 變更為至少一,再變回零。處理常式可做為一般信號,指出是否有任何進行中的 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 來源通訊埠啟動 Weave UDP 廣告交易平台。
注意:臨時通訊埠狀態變更之後,您必須呼叫 RefreshEndpoints()
。檢查是否啟用不安全的聆聽功能。
WeaveMessageLayer
WeaveMessageLayer( void )
Weave 訊息圖層建構函式。
公開的靜態函式
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const PacketBuffer *msgBuf, bool isUDP, uint32_t udpMTU )
取得訊息設定和提供的 PacketBuffer 的 Weave 酬載大小上限。
傳回的酬載大小上限不會超過所附 PacketBuffer 中酬載的可用空間。
如果訊息是 UDP,則傳回的酬載大小上限不會產生不會溢位指定的 UDP MTU 的 Weave 訊息。
最後,傳回的酬載大小上限不會導致 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 )
根據從對等點收到的訊息相關資訊,建構用來說明對等節點的字串。
詳細說明 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|