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

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

[僅供讀取] 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
如果 WeaveConnectionTunnelWeaveConnection 元件處於錯誤狀態,
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
擷取工作階段狀態時,布料狀態物件產生的錯誤。

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
指向 PacketBuffer 物件的指標,該物件會保留 Weave 訊息。
傳回值
WEAVE_NO_ERROR
成功編碼 Weave 訊息時,
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
不支援的 Weave Message 版本。
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 Message 層物件。

詳細資料
參數
[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
指向 PacketBuffer 物件的指標,該物件會保留已編碼的 Weave 訊息。
傳回值
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
指向 PacketBuffer 物件的指標,該物件會保留已編碼的 Weave 訊息。
傳回值
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
指向 PacketBuffer 物件的指標,該物件會保留已編碼的 Weave 訊息。
傳回值
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,請從目的地位址中擷取該 ID。

詳細資料
參數
[in] aDestAddr
目的地 IP 位址。
[in] destPort
目的地通訊埠。
[in] interfaceId
用於傳送 Weave 訊息的介面。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標。
[in] payload
指向 PacketBuffer 物件的指標,該物件會保留已編碼的 Weave 訊息。
傳回值
WEAVE_NO_ERROR
成功將訊息傳送至網路層。
errors
在傳送過程中產生的 Inet 層 UDP 端點

SendMessage

WEAVE_ERROR SendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

使用底層 Inetlayer UDP 端點傳送編碼後的 Weave 訊息。

詳細資料
參數
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,其中包含要傳送訊息的相關資訊。
[in] payload
指向 PacketBuffer 物件的指標,該物件會保留已編碼的 Weave 訊息。
傳回值
WEAVE_NO_ERROR
成功將訊息傳送至網路層。
errors
在傳送過程中產生的 Inet 層 UDP 端點

SendMessage

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

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

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

-如果目的地位址是本機結構體的結構體位址,且呼叫端未指定目的地節點 ID,請從目的地位址中擷取該 ID。

詳細資料
參數
[in] destAddr
目的地 IP 位址。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,內含要傳送的訊息相關資訊。
[in] payload
指向 PacketBuffer 物件的指標,該物件會保留已編碼的 Weave 訊息。
傳回值
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,請從目的地位址中擷取該 ID。

詳細資料
參數
[in] aDestAddr
目的地 IP 位址。
[in] destPort
目的地通訊埠。
[in] sendIntfId
用於傳送 Weave 訊息的介面。
[in] msgInfo
指向 WeaveMessageInfo 物件的指標,其中包含要傳送訊息的相關資訊。
[in] payload
指向 PacketBuffer 物件的指標,該物件會保留已編碼的 Weave 訊息。
傳回值
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
)

設定應用程式處理常式,每次訊息層級活動變更時就會呼叫。

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

  • 已開啟的往來次數有所變動。
  • 待處理的訊息計數器同步處理要求數量從零變為至少一則,然後又變回零。處理常式會做為一般信號,指出是否有任何持續進行的 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,傳回的最大酬載大小不會導致 Weave 訊息超出指定的 UDP MTU。

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

詳細資料
參數
[in] msgBuf
指向 PacketBuffer 的指標,系統會將訊息酬載寫入該 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
以 buf 指向的緩衝區大小。
[in] nodeId
要列印的節點 ID。
[in] addr
指向要列印的 IP 位址;如果不需要列印 IP 位址,則為 NULL。
[in] port
要列印的 IP 通訊埠編號。如果 addr 為空值,系統就不會列印通訊埠編號。
[in] interfaceId
可識別要列印的介面的 InterfaceId。輸出字串會包含底層網路堆疊所知的介面名稱。如果 interfaceId 是 INET_NULL_INTERFACEID,或是 addr 為空值,則不會列印介面名稱。
[in] con
指向 WeaveConnection 物件的指標,系統應會列印該物件的記錄 ID;如果系統不應列印連線 ID,則為 NULL。

GetPeerDescription

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

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

詳細資料
參數
[in] buf
指向緩衝區的指標,該緩衝區應寫入字串。提供的緩衝區至少應與 kWeavePeerDescription_MaxLength 一樣大。如果提供較小的緩衝區,字串會截斷以符合大小。在所有情況下,輸出內容都會包含 NUL 結束字元。
[in] bufSize
buf 指向的緩衝區大小。
[in] msgInfo
指向包含訊息相關資訊的 WeaveMessageInfo 結構的指標。