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
|
[唯讀] 相關聯的 WeaveExchangeManager 物件。
|
FabricState
|
[READ ONLY] 相關聯的 WeaveFabricState 物件。
|
IncomingConIdleTimeout
|
uint32_t
針對傳入連線的預設閒置逾時時間 (以毫秒為單位)。
|
Inet
|
InetLayer *
[READ ONLY] 相關的 InetLayer 物件。
|
IsListening
|
bool
[唯讀] 如果正在監聽傳入的連線/訊息,則為 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 訊息層標頭。
|
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 Message 層物件。
|
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
針對傳入連線的預設閒置逾時時間 (以毫秒為單位)。
Inet
InetLayer * Inet
[唯讀] 相關聯的 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 )
關閉所有開啟的 TCP 和 UDP 端點。
然後終止任何已開啟的 WeaveConnections,並關閉任何已開啟的 WeaveConnectionTunnel 物件。
另請參閱:Shutdown()。
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 Message 層物件。
詳細資料 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||
傳回值 |
|
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,請從目的地位址中擷取該 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,請從目的地位址中擷取該 ID。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
SendMessage
WEAVE_ERROR SendMessage( const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntfId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
使用底層 Inetlayer UDP 端點傳送編碼後的 Weave 訊息。
注意:-如果未提供目的地地址,請嘗試從訊息標頭中的節點 ID 判斷。如果無法執行此操作,則會失敗。-如果目的地位址是本機結構體的結構體位址,且呼叫端未指定目的地節點 ID,請從目的地位址中擷取該 ID。
詳細資料 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||
傳回值 |
|
SendUDPTunneledMessage
WEAVE_ERROR SendUDPTunneledMessage( const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf )
透過本機 UDP 通道傳送封包的函式。
透過 UDP 傳送通道 IPv6 資料訊息。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
SetSignalMessageLayerActivityChanged
void SetSignalMessageLayerActivityChanged( MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler )
設定應用程式處理常式,每次訊息層級活動變更時就會呼叫。
具體來說,應用程式每次都會收到通知:
- 已開啟的往來次數有所變動。
- 待處理的訊息計數器同步處理要求數量從零變為至少一則,然後又變回零。處理常式會做為一般信號,指出是否有任何持續進行的 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,傳回的最大酬載大小不會導致 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 )
根據與從對等端收到的訊息相關聯的資訊,建構描述對等節點的字串。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|