透過集合功能整理內容 你可以依據偏好儲存及分類內容。

nl::編織::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
[唯讀] 相關聯的 WeaveFabricState 物件。
IncomingConIdleTimeout
uint32_t
預設連線閒置閒置逾時情況 (以毫秒為單位)。
Inet
InetLayer *
[唯讀] 相關聯的 InetLayer 物件。
IsListening
bool
[READ ONLY] 監聽連入連線/訊息時為 true,否則傳回 false。
OnAcceptError
OnConnectionReceived
OnMessageReceived
OnReceiveError
OnUDPTunneledMessageReceived
SecurityMgr
[唯讀] 相關聯的 WeaveSecurityManager 物件。
State
uint8_t
[唯讀] WeaveMessageLayer 物件的狀態。
SystemLayer
mDropMessage
bool
僅限內部和偵錯;設定時,WeaveMessageLayer 會捨棄訊息並傳回。

公用函式

ClearUnsecuredConnectionListener(ConnectionReceiveFunct oldOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved)
CloseEndpoints(void)
關閉所有開啟的 TCP 和 UDP 端點。
CreateTunnel(WeaveConnectionTunnel **tunPtr, WeaveConnection & conOne, WeaveConnection & conTwo, uint32_t inactivityTimeoutMS)
將兩個指定的 WeaveConnection 結合在一起,以建立 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 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
取得訊息設定的最高 Weave 酬載大小,並提供 PacketBuffer。
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::編織::WeaveMessageLayer::InitContext

InitContext 類別的定義。

公開類型

AcceptErrorFunct

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

此函式屬於較高層回呼,可在處理收到的 TCP 連線期間回報錯誤。

詳情
參數
[in] msgLayer
指向 WeaveMessageLayer 物件的指標。
[in] err
處理連入 TCP 連線時發生 WEAVE_ERROR 問題。

回呼移除函式

void(* CallbackRemovedFunct)(void *listenerState)

叫用這個函式即可移除回呼。

詳情
參數
[in] listenerState
指向應用程式狀態物件的指標。

連線接收

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

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

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

MessageLayerActivityChangeHandlerFunct

void(* MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive)

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

只要有至少一個開放式廣告交易平台或待處理的訊息計數器同步處理要求,系統就會將訊息圖層視為有效。

詳情
參數
[in] messageLayerIsActive
表示訊息層是否啟用的布林值。

訊息接收

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 訊息指標。

公開屬性

應用程式狀態

void * AppState

指向應用程式特定狀態物件的指標。

廣告交易平台

WeaveExchangeManager * ExchangeMgr

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

Fabric 狀態

WeaveFabricState * FabricState

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

傳入 ConIdleTimeout

uint32_t IncomingConIdleTimeout

預設連線閒置閒置逾時情況 (以毫秒為單位)。

印度

InetLayer * Inet

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

聆聽中

bool IsListening

[READ ONLY] 監聽連入連線/訊息時為 true,否則傳回 false。

OnAccept 錯誤

AcceptErrorFunct OnAcceptError

已連線

ConnectionReceiveFunct OnConnectionReceived

收到訊息

MessageReceiveFunct OnMessageReceived

OnReceiveError

ReceiveErrorFunct OnReceiveError

OnUDPTunneledMessageReceived

TunneledMsgReceiveFunct OnUDPTunneledMessageReceived

安全性

WeaveSecurityManager * SecurityMgr

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

狀態

uint8_t State

[唯讀] WeaveMessageLayer 物件的狀態。

系統圖層

System::Layer * SystemLayer

mDropMessage

bool mDropMessage

僅限內部和偵錯;設定時,WeaveMessageLayer 會捨棄訊息並傳回。

公用函式

ClearUnsecureConnectionListener

WEAVE_ERROR ClearUnsecuredConnectionListener(
  ConnectionReceiveFunct oldOnUnsecuredConnectionReceived,
  CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved
)

關閉端點

WEAVE_ERROR CloseEndpoints(
  void
)

關閉所有開啟的 TCP 和 UDP 端點。

然後取消任何已開啟的 WeaveConnections,並關閉任何開啟的 WeaveConnectionTunnel 物件。

另請參閱:
Shutdown()

建立通道

WEAVE_ERROR CreateTunnel(
  WeaveConnectionTunnel **tunPtr,
  WeaveConnection & conOne,
  WeaveConnection & conTwo,
  uint32_t inactivityTimeoutMS
)

將兩個指定的 WeaveConnection 結合在一起,以建立 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 Message 標頭格式。

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 Message 標頭格式)。
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
如果訊息緩衝區中的酬載長度為 0。
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
如果訊息緩衝區中的酬載長度為 0。
WEAVE_ERROR_UNSUPPORTED_ENCRYPTION_TYPE
如果不支援加密類型
WEAVE_ERROR_MESSAGE_TOO_LONG
編碼訊息會超出要求的最大值。
WEAVE_ERROR_BUFFER_TOO_SMALL
如果訊息載入或前後未有足夠的空間,
other
擷取工作階段狀態時由布料狀態物件產生的錯誤。

臨時 UDPPortEnabled

bool EphemeralUDPPortEnabled(
  void
) const 

檢查是否應從臨時的 UDP 來源通訊埠傳送本機啟動的 Weave UDP 交換作業。

取得連線集區統計資料

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 的傳入通訊。

初始

WEAVE_ERROR Init(
  InitContext *context
)

初始化 Weave Message 圖層物件。

詳情
參數
[in] context
指向 InitContext 物件的指標。
傳回值
WEAVE_NO_ERROR
順利完成初始化。
WEAVE_ERROR_INVALID_ARGUMENT
傳遞的 InitContext 物件為 NULL。
WEAVE_ERROR_INCORRECT_STATE
WeaveMessageLayer 物件的狀態不正確。
other
建立端點時,低於 Inet 層產生的錯誤。

是本機 IPv4 位址

bool IsBoundToLocalIPv4Address(
  void
) const 

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

是本機 IPv6 位址

bool IsBoundToLocalIPv6Address(
  void
) const 

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

IsMessageLayer 已啟用

bool IsMessageLayerActive(
  void
)

新連線

WeaveConnection * NewConnection(
  void
)

在集區中建立新的 WeaveConnection 物件。

詳情
傳回
如果成功,則指向新建立的 WeaveConnection 物件指標,否則為 NULL。

新連線通道

WeaveConnectionTunnel * NewConnectionTunnel(
  void
)

在集區中建立新的 WeaveConnectionTunnel 物件。

詳情
傳回
如果成功,則指向新建立的 WeaveConnectionTunnel 物件的指標,否則為 NULL。

ReEncodeMessage

WEAVE_ERROR ReEncodeMessage(
  PacketBuffer *buf
)

重新整理端點

WEAVE_ERROR RefreshEndpoints(
  void
)

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

詳情
傳回值
WEAVE_NO_ERROR
端點重新整理成功。
InetLayer
錯誤以建立 TCP/UDP 端點。

重新傳送

WEAVE_ERROR ResendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

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

詳情
參數
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] payload
指向保留已編碼 Weave 訊息的 PacketBuffer 物件的指標。
傳回值
WEAVE_NO_ERROR
成功傳送郵件至網路層。
errors

重新傳送

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

重新傳送

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

重新傳送

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

傳送訊息

WEAVE_ERROR SendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

使用基礎 Inetlayer UDP 端點進行編碼後,系統會傳送 Weave 訊息。

詳情
參數
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,其中包含要傳送的訊息的相關資訊。
[in] payload
指向保留已編碼 Weave 訊息的 PacketBuffer 物件的指標。
傳回值
WEAVE_NO_ERROR
成功傳送郵件至網路層。
errors

傳送訊息

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

使用基礎 Inetlayer UDP 端點進行編碼後,系統會傳送 Weave 訊息。

注意:使用的目的地通訊埠為 WEAVE_PORT。-如果未提供目的地地址,請嘗試以郵件標頭中的節點識別碼來決定。失敗時失敗。

- 如果目的地地址是本地佈料的布料地址,但來電者並未指定目的地節點 ID,請從目的地地址中擷取出來。

詳情
參數
[in] destAddr
目的地 IP 位址。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,其中包含要傳送的訊息的相關資訊。
[in] payload
指向保留已編碼 Weave 訊息的 PacketBuffer 物件的指標。
傳回值
WEAVE_NO_ERROR
成功傳送郵件至網路層。
errors

傳送訊息

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

傳送 UDPTunneledMessage

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

SetSignalMessageLayerActivity 已變更

void SetSignalMessageLayerActivityChanged(
  MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler
)

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

具體而言,系統每次都會通知您:

  • 開放式廣告交易平台的數量有所變更。
  • 待處理訊息計數器同步處理作業的次數從零變更為至少一個,並歸零。處理常式會以一般信號的形式,顯示是否有任何進行中的 Weave 對話或待處理的回應。必須在 WeaveMessageLayer 初始化後設定處理常式;關閉 WeaveMessageLayer 則會清除目前的處理常式。

詳情
參數
[in] messageLayerActivityChangeHandler
指示在訊息圖層活動變更時要呼叫的函式。
傳回值
None.

設定 TCPListenEnabled

void SetTCPListenEnabled(
  bool val
)

WeaveMessageLayer 中啟用或停用傳入 TCP 連線的監聽功能。

注意:在 TCP 監聽狀態變更之後,必須呼叫 RefreshEndpoints()

設定 UDPListenEnabled

void SetUDPListenEnabled(
  bool val
)

WeaveMessageLayer 中啟用或停用監聽 UDP 訊息的監聽功能。

注意:在變更 UDP 監聽狀態後,必須呼叫 RefreshEndpoints()

SetUnsecureConnectionListener

WEAVE_ERROR SetUnsecuredConnectionListener(
  ConnectionReceiveFunct newOnUnsecuredConnectionReceived,
  CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved,
  bool force,
  void *listenerState
)

關機

WEAVE_ERROR Shutdown(
  void
)

關閉 WeaveMessageLayer

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

TCPListenEnabled (已啟用 TCPListen)

bool TCPListenEnabled(
  void
) const 

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

UDPListenEnabled

bool UDPListenEnabled(
  void
) const 

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

無安全性清單啟用

bool UnsecuredListenEnabled(
  void
) const 

從臨時 UDP 來源通訊埠啟用或停用 Weave UDP 交換作業。

注意:在臨時通訊埠狀態變更之後,您必須呼叫 RefreshEndpoints()。檢查是否已啟用不安全的聆聽功能。

WeaveMessageLayer

 WeaveMessageLayer(
  void
)

Weave Message 圖層建構函式。

公開的靜態函式

取得最大支出類型

uint32_t GetMaxWeavePayloadSize(
  const PacketBuffer *msgBuf,
  bool isUDP,
  uint32_t udpMTU
)

取得訊息設定的最高 Weave 酬載大小,並提供 PacketBuffer。

傳回的酬載大小上限不會超過所提供 PacketBuffer 酬載的可用空間。

如果訊息是 UDP,則傳回的酬載大小上限不會導致 Weave 訊息溢出指定的 UDP MTU。

最後,傳回的最大酬載大小不會導致超出 Weave 訊息大小上限的 Weave 訊息。

詳情
參數
[in] msgBuf
指向訊息寫入酬載的 PacketBuffer 指標。
[in] isUDP
如果訊息是 UDP 訊息,則傳回 True。
[in] udpMTU
UDP MTU 的大小。如果 isUDP 為 false,系統會忽略此值。
傳回
Weave 最大酬載大小。

取得同類應用程式說明

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 位址指標;如果不需要列印 IP 位址,則為 NULL。
[in] port
要列印的 IP 通訊埠編號。如果新增子值為 NULL,系統就不會列印任何通訊埠號碼。
[in] interfaceId
用於識別要列印介面的 InterfaceId。輸出字串會包含基礎網路堆疊已知的介面名稱。如果介面 ID 為 INET_NULL_INTERFACEID 或 Addr 為 NULL,系統就不會列印任何介面名稱。
[in] con
指向應列印記錄 ID 的 WeaveConnection 物件;如果沒有列印連線 ID,則指向 NULL。

取得同類應用程式說明

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

根據對等點接收的訊息相關資訊,建構與對等互連節點相關的字串。

詳情
參數
[in] buf
指向字串應寫入的緩衝區指標。提供的緩衝區不得小於 kWeavePeerDescription_MaxLength。如果指定較小的緩衝區,字串會遭到截斷以配合。在任何情況下,輸出結果都會包含 NUL 終止字元。
[in] bufSize
buf 指向的緩衝區大小。
[in] msgInfo
指向 WeaveMessageInfo 結構的指標,指向訊息的相關資訊。