nl::Weave::WeaveMessageLayer

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

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

摘要

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

建構函式和解構函式

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

公開類型

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
[唯讀] 相關聯的 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::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

[唯讀] 相關聯的 WeaveExchangeManager 物件。

FabricState

WeaveFabricState * FabricState

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

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

SecurityMgr

WeaveSecurityManager * SecurityMgr

[唯讀] 相關聯的 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 Message 圖層標頭解碼。

詳細資料
參數
[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
擷取工作階段狀態時,布料狀態物件產生的錯誤。

EncodeMessage

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

將 Weave Message 圖層標頭編碼至 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
擷取工作階段狀態時,布料狀態物件產生的錯誤。

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 物件為 NULL。
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 端點

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 端點

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 端點

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 端點

SendMessage

WEAVE_ERROR SendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

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

詳細資料
參數
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,內含要傳送的訊息相關資訊。
[in] payload
指向保存已編碼 Weave 訊息的 PacketBuffer 物件的指標。
傳回值
WEAVE_NO_ERROR
,將訊息成功向下傳送到網路層。
errors
在傳送過程中產生的 Inet 層 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 端點

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
表示 destAddr 未指定,或無法從目的地節點 ID 判斷。
errors
在傳送過程中產生的 Inet 層 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
表示 destAddr 未指定,或無法從目的地節點 ID 判斷。
errors
在傳送過程中產生的 Inet 層 UDP 端點

SetSignalMessageLayerActivityChanged

void SetSignalMessageLayerActivityChanged(
  MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler
)

設定應用程式處理常式,該處理常式將在每次訊息層的活動變更時呼叫。

具體來說,應用程式每次都會收到通知:

  • 開啟的廣告交易平台變更數量
  • 待處理的訊息計數器同步處理要求數,從 0 變成至少 1,然後再調回零。並將處理常式視為一般信號,指出是否有進行中的 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 來源通訊埠啟動編織 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 訊息大小上限。

詳細資料
參數
[in] msgBuf
要寫入訊息酬載的 PacketBuffer 指標。
[in] isUDP
如果訊息是 UDP 訊息,則為「true」。
[in] udpMTU
UDP MTU 的大小。如果 UDP 為 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
以 buf 指向的緩衝區大小。
[in] nodeId
要列印的節點 ID。
[in] addr
指向要列印的 IP 位址的指標;空值則會傳回 NULL。
[in] port
要列印的 IP 通訊埠編號,如果新增器為空值,系統就不會輸出任何通訊埠編號。
[in] interfaceId
用於識別要列印介面的 InterfaceId。輸出字串會包含基礎網路堆疊已知的介面名稱。如果介面 Id 為 INET_NULL_INTERFACEID,或 addr 為 NULL,系統就不會顯示介面名稱。
[in] con
指向應列印記錄 ID 的 WeaveConnection 物件的指標;否則傳回 NULL。

GetPeerDescription

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

根據從對等點收到的訊息相關資訊,建構描述同點節點的字串。

詳細資料
參數
[in] buf
指向應寫入字串的緩衝區指標。提供的緩衝區至少應為 kWeavePeerDescription_MaxLength。如果提供的緩衝區較小,字串將截斷以符合尺寸。所有案例的輸出內容都會包含 NUL 終止字元。
[in] bufSize
以 buf 指向的緩衝區大小。
[in] msgInfo
指向包含訊息相關資訊的 WeaveMessageInfo 結構的指標。