nl::Weave::WeaveMessageLayer

#include <src/lib/core/WeaveMessageLayer.h>

WeaveMessageLayer 類別的定義,用於管理與其他 Weave 節點的通訊。

摘要

它採用其中一個 InetLayer 端點,與其他 Weave 節點建立通訊管道。

建構函式和解構函式

WeaveMessageLayer(void)
Weave 訊息圖層建構函式。

公開類型

AcceptErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err) typedef
void(*
這個函式是較高層回呼,用於在處理傳入的 TCP 連線期間回報錯誤。
CallbackRemovedFunct)(void *listenerState) typedef
void(*
系統會叫用此函式來移除回呼。
ConnectionReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveConnection *con) typedef
void(*
這個函式是處理傳入的 TCP 連線的較高層回呼。
MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive) typedef
void(*
此函式是回報訊息層活動變更的應用程式回呼。
MessageReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload) typedef
void(*
此函式是較高階的回呼,會在收到透過 UDP 傳送 Weave 訊息時叫用。
ReceiveErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
發生錯誤時,會叫用此函式的較高層回呼。
State{
  kState_NotInitialized = 0,
  kState_Initializing = 1,
  kState_Initialized = 2
}
列舉
WeaveMessageLayer 的狀態。
TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload) typedef
void(*
這個函式是較高層回呼,系統會在透過本機 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::Weave::WeaveMessageLayer::InitContext

InitContext 類別的定義。

公開類型

AcceptErrorFunct

void(* AcceptErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err)

這個函式是較高層回呼,用於在處理傳入的 TCP 連線期間回報錯誤。

詳細說明
參數
[in] msgLayer
指向 WeaveMessageLayer 物件的指標。
[in] err
處理傳入的 TCP 連線時發生 WEAVE_ERROR。

CallbackRemovedFunct

void(* CallbackRemovedFunct)(void *listenerState)

系統會叫用此函式來移除回呼。

詳細說明
參數
[in] listenerState
應用程式狀態物件的指標。

ConnectionReceiveFunct

void(* ConnectionReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveConnection *con)

這個函式是處理傳入的 TCP 連線的較高層回呼。

詳細說明
參數
[in] msgLayer
指向 WeaveMessageLayer 物件的指標。
[in] con
指向 WeaveConnection 物件的指標。

MessageLayerActivityChangeHandlerFunct

void(* MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive)

此函式是回報訊息層活動變更的應用程式回呼。

如有至少一個開放式交換或待處理訊息計數器同步處理要求,郵件層就會視為有效。

詳細說明
參數
[in] messageLayerIsActive
布林值,指出訊息圖層是否啟用。

MessageReceiveFunct

void(* MessageReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload)

此函式是較高階的回呼,會在收到透過 UDP 傳送 Weave 訊息時叫用。

詳細說明
參數
[in] msgLayer
指向 WeaveMessageLayer 物件的指標。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] payload
指向包含通道封包的 PacketBuffer 訊息指標。

ReceiveErrorFunct

void(* ReceiveErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo)

發生錯誤時,會叫用此函式的較高層回呼。

詳細說明
參數
[in] msgLayer
指向 WeaveMessageLayer 物件的指標。
[in] err
接收資料時發生 WEAVE_ERROR。
[in] pktInfo
指向 IPPacketInfo 物件的唯讀指標。

狀態

 State

WeaveMessageLayer 的狀態。

屬性
kState_Initialized

WeaveMessageLayer 初始化時的狀態。

kState_Initializing

WeaveMessageLayer 在初始化程序期間的狀態。

kState_NotInitialized

WeaveMessageLayer 未初始化時的狀態。

TunneledMsgReceiveFunct

void(* TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload)

這個函式是較高層回呼,系統會在透過本機 UDP 通道接收通道封包時叫用該回呼。

詳細說明
參數
[in] msgLayer
指向 WeaveMessageLayer 物件的指標。
[in] payload
指向包含通道封包的 PacketBuffer 訊息指標。

公開屬性

AppState

void * AppState

指向應用程式專屬狀態物件的指標。

ExchangeMgr

WeaveExchangeManager * ExchangeMgr

[READ ONLY] 相關聯的 WeaveExchangeManager 物件。

FabricState

WeaveFabricState * FabricState

[READ ONLY] 相關聯的 WeaveFabricState 物件。

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

SecurityMgr

WeaveSecurityManager * SecurityMgr

[READ ONLY] 相關聯的 WeaveSecurityManager 物件。

狀態

uint8_t State

[READ ONLY] WeaveMessageLayer 物件的狀態。

SystemLayer

System::Layer * SystemLayer

mDropMessage

bool mDropMessage

僅供內部使用和針對偵錯;設定後,WeaveMessageLayer 會捨棄訊息並傳回。

公用函式

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 就會關閉。

詳細說明
參數
[out] tunPtr
指向 WeaveConnectionTunnel 物件的指標。
[in] conOne
第一個 WeaveConnection 物件的參照。
[in] conTwo
第二個 WeaveConnection 物件的參照。
[in] inactivityTimeoutMS
Weave 連線通道處於閒置狀態的時間上限 (以毫秒為單位)。
傳回值
WEAVE_NO_ERROR
成功建立 WeaveConnectionTunnel
WEAVE_ERROR_INCORRECT_STATE
如果 WeaveConnectionTunnel 的元件 WeaveConnection 物件未處於正確狀態,就會傳回這個錯誤。
WEAVE_ERROR_NO_MEMORY
無法建立新的 WeaveConnectionTunnel 物件。

DecodeHeader

WEAVE_ERROR DecodeHeader(
  PacketBuffer *msgBuf,
  WeaveMessageInfo *msgInfo,
  uint8_t **payloadStart
)

將收到的 Weave 訊息中的 Weave 郵件圖層標頭解碼。

詳細說明
參數
[in] msgBuf
指向包含 Weave 訊息的 PacketBuffer 物件指標。
[in] msgInfo
指向將接收訊息相關資訊的 WeaveMessageInfo 物件指標。
[out] payloadStart
解碼完成後,指向訊息緩衝區中位置的指標。
傳回值
WEAVE_NO_ERROR
成功解碼郵件標頭時。
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
如果傳遞的訊息緩衝區長度無效。
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
系統不支援 Weave 郵件標頭格式版本。

EncodeMessage

WEAVE_ERROR EncodeMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf,
  WeaveConnection *con,
  uint16_t maxLen,
  uint16_t reserve
)

WeaveMessageLayer 標頭編碼至 PacketBuffer。

詳細說明
參數
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,其中包含要編碼的訊息相關資訊。
[in] msgBuf
指向要保留 Weave 訊息的 PacketBuffer 物件指標。
[in] con
指向 WeaveConnection 物件的指標。
[in] maxLen
已編碼的 Weave 訊息長度上限。
[in] reserve
酬載之前的保留空間,以保存 Weave 訊息標頭。
傳回值
WEAVE_NO_ERROR
訊息編碼成功時
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
表示不支援 Weave 郵件標頭格式版本。
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
如果訊息緩衝區中的酬載長度為零
WEAVE_ERROR_UNSUPPORTED_ENCRYPTION_TYPE
表示系統不支援郵件標頭中的加密類型。
WEAVE_ERROR_MESSAGE_TOO_LONG
如果編碼訊息長度大於要求的最大值。
WEAVE_ERROR_BUFFER_TOO_SMALL
訊息酬載前後沒有足夠的空間。
other
擷取工作階段狀態時,fas 狀態物件產生的錯誤。

EncodeMessage

WEAVE_ERROR EncodeMessage(
  const IPAddress & destAddr,
  uint16_t destPort,
  InterfaceId sendIntId,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *payload
)

將 Weave 郵件層標頭編碼至 PacketBuffer。

詳細說明
參數
[in] destAddr
目的地 IP 位址。
[in] destPort
目標通訊埠。
[in] sendIntId
用於傳送 Weave 訊息的介面。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] payload
指向要保留 Weave 訊息的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
Weave 訊息編碼成功時
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
表示不支援 Weave 訊息版本
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
如果訊息緩衝區中的酬載長度為零
WEAVE_ERROR_UNSUPPORTED_ENCRYPTION_TYPE
表示系統不支援該加密類型。
WEAVE_ERROR_MESSAGE_TOO_LONG
如果編碼訊息長度大於要求的最大值。
WEAVE_ERROR_BUFFER_TOO_SMALL
訊息酬載前後沒有足夠的空間。
other
擷取工作階段狀態時,fas 狀態物件產生的錯誤。

EphemeralUDPPortEnabled

bool EphemeralUDPPortEnabled(
  void
) const 

檢查是否應透過臨時的 UDP 來源通訊埠傳送本機啟動的 Weave UDP 廣告交易平台。

GetConnectionPoolStats

void GetConnectionPoolStats(
  nl::Weave::System::Stats::count_t & aOutInUse
) const 

取得使用的 WeaveConnections 數量和集區大小。

詳細說明
參數
[out] aOutInUse
參照 size_t,其中儲存使用中的連線數量。

IPv4ListenEnabled

bool IPv4ListenEnabled(
  void
) const 

檢查 WeaveMessageLayer 是否設為允許透過 IPv4 監聽傳入通訊。

IPv6ListenEnabled

bool IPv6ListenEnabled(
  void
) const 

檢查 WeaveMessageLayer 是否設為允許透過 IPv4 監聽傳入通訊。

Init

WEAVE_ERROR Init(
  InitContext *context
)

初始化 Weave 訊息圖層物件。

詳細說明
參數
[in] context
InitContext 物件的指標。
傳回值
WEAVE_NO_ERROR
才會順利進行
WEAVE_ERROR_INVALID_ARGUMENT
如果傳遞的 InitContext 物件為空值。
WEAVE_ERROR_INCORRECT_STATE
WeaveMessageLayer 物件的狀態不正確。
other
以下 Inet 層在端點建立期間產生的錯誤。

IsBoundToLocalIPv4Address

bool IsBoundToLocalIPv4Address(
  void
) const 

檢查 WeaveMessageLayer 是否繫結至本機 IPv4 位址。

IsBoundToLocalIPv6Address

bool IsBoundToLocalIPv6Address(
  void
) const 

檢查 WeaveMessageLayer 是否繫結至本機 IPv6 位址。

IsMessageLayerActive

bool IsMessageLayerActive(
  void
)

NewConnection

WeaveConnection * NewConnection(
  void
)

從集區建立新的 WeaveConnection 物件。

詳細說明
傳回
如果成功,會指向新建立的 WeaveConnection 物件,否則為 NULL。

NewConnectionTunnel

WeaveConnectionTunnel * NewConnectionTunnel(
  void
)

從集區建立新的 WeaveConnectionTunnel 物件。

詳細說明
傳回
如果成功,會指向新建立的 WeaveConnectionTunnel 物件,否則為 NULL。

ReEncodeMessage

WEAVE_ERROR ReEncodeMessage(
  PacketBuffer *buf
)

RefreshEndpoints

WEAVE_ERROR RefreshEndpoints(
  void
)

根據系統網路介面的目前狀態重新整理 InetLayer 端點。

詳細說明
傳回值
WEAVE_NO_ERROR
會在成功重新整理端點時提供
InetLayer
基於建立 TCP/UDP 端點的呼叫而發生的頻率。

ResendMessage

WEAVE_ERROR ResendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

使用基礎 Inetlayer UDP 端點重新傳送已編碼的 Weave 訊息。

詳細說明
參數
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] payload
指向包含編碼 Weave 訊息的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
順利將訊息向下傳送至網路層
errors
由較低 Inet 層 UDP 端點產生的 UDP。

ResendMessage

WEAVE_ERROR ResendMessage(
  const IPAddress & destAddr,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

使用基礎 Inetlayer UDP 端點重新傳送已編碼的 Weave 訊息。

詳細說明
參數
[in] destAddr
目的地 IP 位址。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] payload
指向包含編碼 Weave 訊息的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
順利將訊息向下傳送至網路層
errors
由較低 Inet 層 UDP 端點產生的 UDP。

ResendMessage

WEAVE_ERROR ResendMessage(
  const IPAddress & destAddr,
  uint16_t destPort,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

使用基礎 Inetlayer UDP 端點重新傳送已編碼的 Weave 訊息。

詳細說明
參數
[in] destAddr
目的地 IP 位址。
[in] destPort
目標通訊埠。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] payload
指向包含編碼 Weave 訊息的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
順利將訊息向下傳送至網路層
errors
由較低 Inet 層 UDP 端點產生的 UDP。

ResendMessage

WEAVE_ERROR ResendMessage(
  const IPAddress & destAddr,
  uint16_t destPort,
  InterfaceId interfaceId,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

使用基礎 Inetlayer UDP 端點重新傳送已編碼的 Weave 訊息。

注意:如果尚未提供目的地地址,請嘗試根據郵件標頭中的節點 ID 判斷該地址。如果無法完成這項操作,則失敗。- 如果目的地地址是當地佈料的織布地址,而呼叫端未指定目的地節點 ID,請從目的地地址擷取此資訊。

詳細說明
參數
[in] aDestAddr
目的地 IP 位址。
[in] destPort
目標通訊埠。
[in] interfaceId
用於傳送 Weave 訊息的介面。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] payload
指向包含編碼 Weave 訊息的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
順利將訊息向下傳送至網路層
errors
由較低 Inet 層 UDP 端點產生的 UDP。

SendMessage

WEAVE_ERROR SendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

完成編碼後,使用基礎 Inetlayer UDP 端點傳送 Weave 訊息。

詳細說明
參數
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,其中包含要傳送的訊息相關資訊。
[in] payload
指向包含編碼 Weave 訊息的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
順利將訊息向下傳送至網路層
errors
由較低 Inet 層 UDP 端點產生的 UDP。

SendMessage

WEAVE_ERROR SendMessage(
  const IPAddress & destAddr,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

完成編碼後,使用基礎 Inetlayer UDP 端點傳送 Weave 訊息。

注意:- 使用的目的地通訊埠為 WEAVE_PORT。-如果尚未提供目的地地址,請嘗試根據郵件標頭中的節點 ID 判斷該地址。如果無法完成這項操作,則失敗。

- 如果目的地地址是當地佈料的織布地址,而呼叫端未指定目的地節點 ID,請從目的地地址擷取此資訊。

詳細說明
參數
[in] destAddr
目的地 IP 位址。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,其中包含要傳送的訊息相關資訊。
[in] payload
指向包含編碼 Weave 訊息的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
順利將訊息向下傳送至網路層
errors
由較低 Inet 層 UDP 端點產生的 UDP。

SendMessage

WEAVE_ERROR SendMessage(
  const IPAddress & destAddr,
  uint16_t destPort,
  InterfaceId sendIntfId,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

完成編碼後,使用基礎 Inetlayer UDP 端點傳送 Weave 訊息。

注意:如果尚未提供目的地地址,請嘗試根據郵件標頭中的節點 ID 判斷該地址。如果無法完成這項操作,則失敗。- 如果目的地地址是當地佈料的織布地址,而呼叫端未指定目的地節點 ID,請從目的地地址擷取此資訊。

詳細說明
參數
[in] aDestAddr
目的地 IP 位址。
[in] destPort
目標通訊埠。
[in] sendIntfId
用於傳送 Weave 訊息的介面。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,其中包含要傳送的訊息相關資訊。
[in] payload
指向包含編碼 Weave 訊息的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
順利將訊息向下傳送至網路層
WEAVE_ERROR_INVALID_ADDRESS
如未指定 estAddr,或無法從目的地節點 ID 判斷,則系統會傳回空值。
errors
由較低 Inet 層 UDP 端點產生的 UDP。

SendUDPTunneledMessage

WEAVE_ERROR SendUDPTunneledMessage(
  const IPAddress & destAddr,
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

用於透過本機 UDP 通道傳送通道封包的函式。

透過 UDP 傳送通道 IPv6 資料訊息。

詳細說明
參數
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] destAddr
UDP 通道目的地的 IP 位址。
[in] msgBuf
指向要傳送的封包的 PacketBuffer 物件指標。
傳回值
WEAVE_NO_ERROR
順利將訊息向下傳送至網路層
WEAVE_ERROR_INVALID_ADDRESS
如未指定 estAddr,或無法從目的地節點 ID 判斷,則系統會傳回空值。
errors
由較低 Inet 層 UDP 端點產生的 UDP。

SetSignalMessageLayerActivityChanged

void SetSignalMessageLayerActivityChanged(
  MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler
)

設定應用程式處理常式。每當訊息層的活動有所變更,系統就會呼叫這個處理常式。

具體來說,應用程式會在每次以下時間收到通知:

  • 已開啟的交換次數變動
  • 待處理訊息計數器同步要求的數量從 0 變更為至少一,再變回零。處理常式可做為一般信號,指出是否有任何進行中的 Weave 對話或待處理的回應。您必須在 WeaveMessageLayer 初始化後才設定處理常式;關閉 WeaveMessageLayer 將清除目前的處理常式。

詳細說明
參數
[in] messageLayerActivityChangeHandler
每當訊息層活動變更時要呼叫的函式指標。
傳回值
None.

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
)

關閉 WeaveMessageLayer

關閉所有開啟的 Inet 層端點,並重設所有較高層的回呼、成員變數和物件。呼叫 Shutdown() 會終止 WeaveMessageLayer 物件。

TCPListenEnabled

bool TCPListenEnabled(
  void
) const 

檢查 WeaveMessageLayer 是否已設為監聽傳入 TCP 連線。

UDPListenEnabled

bool UDPListenEnabled(
  void
) const 

檢查 WeaveMessageLayer 是否已設為監聽傳入 UDP 訊息。

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 訊息大小上限。

詳細說明
參數
[in] msgBuf
要寫入訊息酬載的 PacketBuffer 指標。
[in] isUDP
如果訊息是 UDP 訊息,則為「true」。
[in] udpMTU
UDP MTU 的大小。如果 isUDP 為 false,則會忽略。
傳回
Weave 酬載大小上限

GetPeerDescription

void GetPeerDescription(
  char *buf,
  size_t bufSize,
  uint64_t nodeId,
  const IPAddress *addr,
  uint16_t port,
  InterfaceId interfaceId,
  const WeaveConnection *con
)

建構說明對等節點及其相關位址 / 連線資訊的字串。

產生的字串格式如下:

 ([]:%, con )

詳細說明
參數
[in] buf
指向應寫入字串的緩衝區指標。提供的緩衝區至少應和 kWeavePeerDescription_MaxLength 一樣大。如果指定的緩衝區越小,字串就會被截斷,以符合大小。在任何情況下,輸出結果都會包含一個 NUL 終止字元。
[in] bufSize
緩衝區指向的緩衝區大小。
[in] nodeId
要列印的節點 ID。
[in] addr
指向要列印的 IP 位址的指標;如未顯示 IP 位址,則為 NULL。
[in] port
要列印的 IP 通訊埠編號。如果 addr 為 NULL,則不會列印任何通訊埠編號。
[in] interfaceId
識別要列印的介面的 InterfaceId。輸出字串會包含介面名稱,也稱為基礎網路堆疊。如果 interfaceId 為 INET_NULL_INTERFACEID,或是 addr 為 NULL,則不會列印介面名稱。
[in] con
指向應列印記錄 ID 的 WeaveConnection 物件指標;如果沒有列印連線 ID,則為空值。

GetPeerDescription

void GetPeerDescription(
  char *buf,
  size_t bufSize,
  const WeaveMessageInfo *msgInfo
)

根據從對等點收到的訊息相關資訊,建構用來說明對等節點的字串。

詳細說明
參數
[in] buf
指向應寫入字串的緩衝區指標。提供的緩衝區至少應和 kWeavePeerDescription_MaxLength 一樣大。如果指定的緩衝區越小,字串就會被截斷,以符合大小。在任何情況下,輸出結果都會包含一個 NUL 終止字元。
[in] bufSize
緩衝區指向的緩衝區大小。
[in] msgInfo
指向包含訊息相關資訊的 WeaveMessageInfo 結構指標。