nl::Weave::WeaveExchangeManager

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

這個類別可用於管理與其他 Weave 節點的 ExchangeContexts。

摘要

此 API 可代表較高層、建立 ExchangeContexts,以及處理來路不明訊息處理常式的註冊/取消註冊作業。

建構函式和解構函式

WeaveExchangeManager(void)
WeaveExchangeManager 類別的建構函式。

公開類型

State{
  kState_NotInitialized = 0,
  kState_Initialized = 1
}
列舉

公開屬性

FabricState
[READ ONLY] 相關聯的 FabricState 物件。
MessageLayer
[READ ONLY] 相關聯的 WeaveMessageLayer 物件。
State
uint8_t
[READ ONLY] WeaveExchangeManager 物件的狀態。

公用函式

AllowUnsolicitedMessages(WeaveConnection *con)
void
允許透過指定連線接收來路不明的訊息。
ClearMsgCounterSyncReq(uint64_t peerNodeId)
void
針對傳送給該對等點的所有待處理訊息清除 MsgCounterSyncReq 標記。
FindContext(uint64_t peerNodeId, WeaveConnection *con, void *appState, bool isInitiator)
從符合指定參數的集區中找出 ExchangeContext
Init(WeaveMessageLayer *msgLayer)
初始化 WeaveExchangeManager 物件。
NewBinding(Binding::EventCallback eventCallback, void *appState)
使用提供的引數分配新的繫結
NewContext(const uint64_t & peerNodeId, void *appState)
使用對等節點 ID 指定的指定對等 Weave 節點,建立新的 ExchangeContext
NewContext(const uint64_t & peerNodeId, const IPAddress & peerAddr, void *appState)
使用對等節點 ID 和對等 IP 位址指定的指定點 Weave 節點,建立新的 ExchangeContext
NewContext(const uint64_t & peerNodeId, const IPAddress & peerAddr, uint16_t peerPort, InterfaceId sendIntfId, void *appState)
建立新的 ExchangeContext,並根據對等節點 ID、對等 IP 位址和目標通訊埠指定的同業 Weave 節點建立而成。
NewContext(WeaveConnection *con, void *appState)
針對指定的 WeaveConnection,建立新的 ExchangeContext,並指定同業 Weave 節點。
RegisterUnsolicitedMessageHandler(uint32_t profileId, ExchangeContext::MessageReceiveFunct handler, void *appState)
為指定的設定檔 ID 註冊來路不明的訊息處理常式。
RegisterUnsolicitedMessageHandler(uint32_t profileId, ExchangeContext::MessageReceiveFunct handler, bool allowDups, void *appState)
為指定的設定檔 ID 註冊來路不明的訊息處理常式。
RegisterUnsolicitedMessageHandler(uint32_t profileId, uint8_t msgType, ExchangeContext::MessageReceiveFunct handler, void *appState)
為指定的設定檔 ID 和訊息類型註冊來路不明的訊息處理常式。
RegisterUnsolicitedMessageHandler(uint32_t profileId, uint8_t msgType, ExchangeContext::MessageReceiveFunct handler, bool allowDups, void *appState)
為指定的設定檔 ID 和訊息類型註冊來路不明的訊息處理常式。
RegisterUnsolicitedMessageHandler(uint32_t profileId, uint8_t msgType, WeaveConnection *con, ExchangeContext::MessageReceiveFunct handler, void *appState)
為指定的 Weave 連線上,為指定的設定檔識別碼 (訊息類型) 註冊來路不明的訊息處理常式。
RegisterUnsolicitedMessageHandler(uint32_t profileId, uint8_t msgType, WeaveConnection *con, ExchangeContext::MessageReceiveFunct handler, bool allowDups, void *appState)
為指定的 Weave 連線上,為指定的設定檔識別碼 (訊息類型) 註冊來路不明的訊息處理常式。
Shutdown(void)
UnregisterUnsolicitedMessageHandler(uint32_t profileId)
為特定設定檔 ID 取消註冊來路不明的訊息處理常式。
UnregisterUnsolicitedMessageHandler(uint32_t profileId, uint8_t msgType)
為特定設定檔 ID 和訊息類型取消註冊來路不明的訊息處理常式。
UnregisterUnsolicitedMessageHandler(uint32_t profileId, uint8_t msgType, WeaveConnection *con)
為特定設定檔 ID、訊息類型和 Weave 連線取消註冊來路不明的訊息處理常式。

公開類型

狀態

 State
屬性
kState_Initialized

用來表示 WeaveExchangeManager 已初始化。

kState_NotInitialized

用於表示 WeaveExchangeManager 未初始化。

公開屬性

FabricState

WeaveFabricState * FabricState

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

MessageLayer

WeaveMessageLayer * MessageLayer

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

狀態

uint8_t State

[READ ONLY] WeaveExchangeManager 物件的狀態。

公用函式

AllowUnsolicitedMessages

void AllowUnsolicitedMessages(
  WeaveConnection *con
)

允許透過指定連線接收來路不明的訊息。

這個方法會根據指定的 Weave 連線設定訊息接收處理常式。

詳細說明
參數
[in] con
Weave 連線物件的指標。

ClearMsgCounterSyncReq

void ClearMsgCounterSyncReq(
  uint64_t peerNodeId
)

針對傳送給該對等點的所有待處理訊息清除 MsgCounterSyncReq 標記。

詳細說明
參數
[in] peerNodeId
目的地節點的節點 ID。

FindContext

ExchangeContext * FindContext(
  uint64_t peerNodeId,
  WeaveConnection *con,
  void *appState,
  bool isInitiator
)

從符合指定參數的集區中找出 ExchangeContext

詳細說明
參數
[in] peerNodeId
已設定 ExchangeContext 的對等節點節點 ID。
[in] con
指向代表與對等點的 TCP 連線的 WeaveConnection 物件指標。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
[in] isInitiator
指出本機節點是否為交換器的布林值。
傳回
指向與所提供參數相符的 ExchangeContext 物件指標,若未符合,則為 NULL。

Init

WEAVE_ERROR Init(
  WeaveMessageLayer *msgLayer
)

初始化 WeaveExchangeManager 物件。

在這個執行個體的生命週期內,系統會在物件建構完成後叫用此方法,直到呼叫關閉以終止執行個體為止。

詳細說明
參數
[in] msgLayer
指向 WeaveMessageLayer 物件的指標。
傳回值
WEAVE_ERROR_INCORRECT_STATE
如果狀態不等於 kState_NotInitialized。
WEAVE_NO_ERROR
成功時。

NewBinding

Binding * NewBinding(
  Binding::EventCallback eventCallback,
  void *appState
)

使用提供的引數分配新的繫結

詳細說明
參數
[in] eventCallback
用於事件回呼的函式指標
[in] appState
某項背景資訊的指標,稍後會在事件回呼中取用
傳回
新分配的 Binding 指標,如果集區已用盡,則為 NULL

NewContext

ExchangeContext * NewContext(
  const uint64_t & peerNodeId,
  void *appState
)

使用對等節點 ID 指定的指定對等 Weave 節點,建立新的 ExchangeContext

詳細說明
參數
[in] peerNodeId
正在設定 ExchangeContext 的對等點節點 ID。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回
指向成功建立 ExchangeContext 物件的指標。如果系統無法分配或沒有可用的物件,則為空值。

NewContext

ExchangeContext * NewContext(
  const uint64_t & peerNodeId,
  const IPAddress & peerAddr,
  void *appState
)

使用對等節點 ID 和對等 IP 位址指定的指定點 Weave 節點,建立新的 ExchangeContext

詳細說明
參數
[in] peerNodeId
正在設定 ExchangeContext 的對等點節點 ID。
[in] peerAddr
對等互連節點的 IP 位址。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回
指向成功建立 ExchangeContext 物件的指標。否則,如果沒有任何物件無法分配或可供使用,則為空值。

NewContext

ExchangeContext * NewContext(
  const uint64_t & peerNodeId,
  const IPAddress & peerAddr,
  uint16_t peerPort,
  InterfaceId sendIntfId,
  void *appState
)

建立新的 ExchangeContext,並根據對等節點 ID、對等 IP 位址和目標通訊埠指定的同業 Weave 節點建立而成。

詳細說明
參數
[in] peerNodeId
正在設定 ExchangeContext 的對等點節點 ID。
[in] peerAddr
對等互連節點的 IP 位址。
[in] peerPort
對等互連節點的通訊埠。
[in] sendIntfId
在此交換系統中用來傳送 Weave 訊息的介面。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回
指向成功建立 ExchangeContext 物件的指標。否則,如果沒有任何物件無法分配或可供使用,則為空值。

NewContext

ExchangeContext * NewContext(
  WeaveConnection *con,
  void *appState
)

針對指定的 WeaveConnection,建立新的 ExchangeContext,並指定同業 Weave 節點。

詳細說明
參數
[in] con
指向代表與對等點的 TCP 連線的 WeaveConnection 物件指標。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回
指向成功建立 ExchangeContext 物件的指標。否則,如果沒有任何物件無法分配或可供使用,則為空值。

RegisterUnsolicitedMessageHandler

WEAVE_ERROR RegisterUnsolicitedMessageHandler(
  uint32_t profileId,
  ExchangeContext::MessageReceiveFunct handler,
  void *appState
)

為指定的設定檔 ID 註冊來路不明的訊息處理常式。

系統會針對指定設定檔的所有訊息叫用這個處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
[in] handler
來路不明的訊息處理常式。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回值
WEAVE_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS
如果來路不明的訊息處理常式集區已滿,就無法分配新的訊息。
WEAVE_NO_ERROR
成功時。

RegisterUnsolicitedMessageHandler

WEAVE_ERROR RegisterUnsolicitedMessageHandler(
  uint32_t profileId,
  ExchangeContext::MessageReceiveFunct handler,
  bool allowDups,
  void *appState
)

為指定的設定檔 ID 註冊來路不明的訊息處理常式。

系統會針對指定設定檔的所有訊息叫用這個處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
[in] handler
來路不明的訊息處理常式。
[in] allowDups
布林值指標,指出特定設定檔是否允許重複的郵件。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回值
WEAVE_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS
如果來路不明的訊息處理常式集區已滿,就無法分配新的訊息。
WEAVE_NO_ERROR
成功時。

RegisterUnsolicitedMessageHandler

WEAVE_ERROR RegisterUnsolicitedMessageHandler(
  uint32_t profileId,
  uint8_t msgType,
  ExchangeContext::MessageReceiveFunct handler,
  void *appState
)

為指定的設定檔 ID 和訊息類型註冊來路不明的訊息處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
[in] msgType
對應設定檔的訊息類型。
[in] handler
來路不明的訊息處理常式。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回值
WEAVE_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS
如果來路不明的訊息處理常式集區已滿,就無法分配新的訊息。
WEAVE_NO_ERROR
成功時。

RegisterUnsolicitedMessageHandler

WEAVE_ERROR RegisterUnsolicitedMessageHandler(
  uint32_t profileId,
  uint8_t msgType,
  ExchangeContext::MessageReceiveFunct handler,
  bool allowDups,
  void *appState
)

為指定的設定檔 ID 和訊息類型註冊來路不明的訊息處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
[in] msgType
對應設定檔的訊息類型。
[in] handler
來路不明的訊息處理常式。
[in] allowDups
指出特定設定檔 ID 和訊息類型是否允許重複訊息的布林值指標。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回值
WEAVE_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS
如果來路不明的訊息處理常式集區已滿,就無法分配新的訊息。
WEAVE_NO_ERROR
成功時。

RegisterUnsolicitedMessageHandler

WEAVE_ERROR RegisterUnsolicitedMessageHandler(
  uint32_t profileId,
  uint8_t msgType,
  WeaveConnection *con,
  ExchangeContext::MessageReceiveFunct handler,
  void *appState
)

為指定的 Weave 連線上,為指定的設定檔識別碼 (訊息類型) 註冊來路不明的訊息處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
[in] msgType
對應設定檔的訊息類型。
[in] con
指向代表與對等點的 TCP 連線的 WeaveConnection 物件指標。
[in] handler
來路不明的訊息處理常式。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回值
WEAVE_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS
如果來路不明的訊息處理常式集區已滿,就無法分配新的訊息。
WEAVE_NO_ERROR
成功時。

RegisterUnsolicitedMessageHandler

WEAVE_ERROR RegisterUnsolicitedMessageHandler(
  uint32_t profileId,
  uint8_t msgType,
  WeaveConnection *con,
  ExchangeContext::MessageReceiveFunct handler,
  bool allowDups,
  void *appState
)

為指定的 Weave 連線上,為指定的設定檔識別碼 (訊息類型) 註冊來路不明的訊息處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
[in] msgType
對應設定檔的訊息類型。
[in] con
指向代表與對等點的 TCP 連線的 WeaveConnection 物件指標。
[in] handler
來路不明的訊息處理常式。
[in] allowDups
布林值指標,指出特定設定檔 ID、訊息類型在指定 Weave 連線中是否允許重複訊息。
[in] appState
指向保留結構定義狀態的較高圖層物件指標。
傳回值
WEAVE_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS
如果來路不明的訊息處理常式集區已滿,就無法分配新的訊息。
WEAVE_NO_ERROR
成功時。

關機

WEAVE_ERROR Shutdown(
  void
)

關閉 WeaveExchangeManager

這會終止這個物件的例項,並釋放所有保留的資源。

詳細說明
傳回
無條件提供 WEAVE_NO_ERROR

UnregisterUnsolicitedMessageHandler

WEAVE_ERROR UnregisterUnsolicitedMessageHandler(
  uint32_t profileId
)

為特定設定檔 ID 取消註冊來路不明的訊息處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
傳回值
WEAVE_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER
如果找不到相符的來路不明的訊息處理常式。
WEAVE_NO_ERROR
成功時。

UnregisterUnsolicitedMessageHandler

WEAVE_ERROR UnregisterUnsolicitedMessageHandler(
  uint32_t profileId,
  uint8_t msgType
)

為特定設定檔 ID 和訊息類型取消註冊來路不明的訊息處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
[in] msgType
對應設定檔的訊息類型。
傳回值
WEAVE_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER
如果找不到相符的來路不明的訊息處理常式。
WEAVE_NO_ERROR
成功時。

UnregisterUnsolicitedMessageHandler

WEAVE_ERROR UnregisterUnsolicitedMessageHandler(
  uint32_t profileId,
  uint8_t msgType,
  WeaveConnection *con
)

為特定設定檔 ID、訊息類型和 Weave 連線取消註冊來路不明的訊息處理常式。

詳細說明
參數
[in] profileId
所接收訊息的設定檔 ID。
[in] msgType
對應設定檔的訊息類型。
[in] con
指向代表與對等點的 TCP 連線的 WeaveConnection 物件指標。
傳回值
WEAVE_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER
如果找不到相符的來路不明的訊息處理常式。
WEAVE_NO_ERROR
成功時。

WeaveExchangeManager

 WeaveExchangeManager(
  void
)

WeaveExchangeManager 類別的建構函式。

它會將狀態設為 kState_NotInitialized。