nl::Weave::WeaveMessageLayer

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

他の Weave ノードとの通信を管理する WeaveMessageLayer クラスの定義。

まとめ

複数の 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
[読み取り専用] 関連付けられている WeaveFabricState オブジェクト。
IncomingConIdleTimeout
uint32_t
受信接続のデフォルトのアイドル タイムアウト(ミリ秒単位)。
Inet
InetLayer *
[読み取り専用] 関連付けられている InetLayer オブジェクト。
IsListening
bool
[読み取り専用] 受信接続/メッセージをリッスンしている場合は 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)
指定した 2 つの 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 メッセージ レイヤのヘッダーを PacketBuffer にエンコードします。
EphemeralUDPPortEnabled(void) const
bool
ローカルで開始された Weave UDP 交換をエフェメラル UDP 送信元ポートから送信する必要があるかどうかを確認します。
GetConnectionPoolStats(nl::Weave::System::Stats::count_t & aOutInUse) const
void
使用中の WeaveConnections の数とプールのサイズを取得します。
IPv4ListenEnabled(void) const
bool
IPv4 経由での着信通信をリッスンするように WeaveMessageLayer が設定されているかどうかを確認します。
IPv6ListenEnabled(void) const
bool
IPv4 経由での着信通信をリッスンするように WeaveMessageLayer が設定されているかどうかを確認します。
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)
WeaveMessageLayer をシャットダウンします。
TCPListenEnabled(void) const
bool
受信 TCP 接続をリッスンするように WeaveMessageLayer が設定されているかどうかを確認します。
UDPListenEnabled(void) const
bool
受信 UDP メッセージをリッスンするよう WeaveMessageLayer が設定されているかどうかを確認します。
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 が発生した。

コールバック RemoveFunct

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)

この関数は、メッセージ レイヤ アクティビティの変更を報告するためのアプリケーション コールバックです。

オープン エクスチェンジまたは保留中のメッセージ カウンタの同期リクエストが 1 つ以上ある場合、メッセージ レイヤはアクティブとみなされます。

詳細
パラメータ
[in] messageLayerIsActive
メッセージ レイヤがアクティブかどうかを示すブール値。

MessageReceiveFunct

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

この関数は、UDP を介して Weave メッセージを受信すると呼び出される上位レイヤのコールバックです。

詳細
パラメータ
[in] msgLayer
WeaveMessageLayer オブジェクトへのポインタ。
[in] msgInfo
WeaveMessageInfo オブジェクトへのポインタ。
[in] payload
受信したトンネル パケットを含む PacketBuffer メッセージへのポインタ。

受信エラー操作

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

この関数は、エラーが発生したときに呼び出される上位レイヤのコールバックです。

詳細
パラメータ
[in] msgLayer
WeaveMessageLayer オブジェクトへのポインタ。
[in] err
データの受信時に発生した WEAVE_ERROR
[in] pktInfo
IPPacketInfo オブジェクトへの読み取り専用ポインタ。

状態

 State

WeaveMessageLayer の状態。

Properties
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

アプリケーション固有の状態オブジェクトへのポインタ。

Exchange Manager

WeaveExchangeManager * ExchangeMgr

[読み取り専用] 関連付けられている WeaveExchangeManager オブジェクト。

ファブリックの状態

WeaveFabricState * FabricState

[読み取り専用] 関連付けられている WeaveFabricState オブジェクト。

IncomingConIdleTimeout

uint32_t IncomingConIdleTimeout

受信接続のデフォルトのアイドル タイムアウト(ミリ秒単位)。

イネット

InetLayer * Inet

[読み取り専用] 関連付けられている InetLayer オブジェクト。

IsListening

bool IsListening

[読み取り専用] 受信接続/メッセージをリッスンしている場合は true、それ以外の場合は false。

OnAcceptError

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
)

CloseEndpoints

WEAVE_ERROR CloseEndpoints(
  void
)

開いているすべての TCP エンドポイントと UDP エンドポイントを閉じます。

次に、開いている WeaveConnections を中止し、開いている WeaveConnectionTunnel オブジェクトをシャットダウンします。

関連項目:
Shutdown()

トンネルの作成

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

指定した 2 つの WeaveConnections を結合して WeaveConnectionTunnel を作成します。

正常に作成されると、WeaveConnection オブジェクトに対応する TCPEndPoint が WeaveConnectionTunnel に渡され、そうでないと WeaveConnections が終了します。

詳細
パラメータ
[out] tunPtr
WeaveConnectionTunnel オブジェクトのポインタへのポインタ。
[in] conOne
最初の WeaveConnection オブジェクトへの参照です。
[in] conTwo
2 つ目の WeaveConnection オブジェクトへの参照です。
[in] inactivityTimeoutMS
Weave 接続トンネルがアイドル状態になる最大時間(ミリ秒)。
戻り値
WEAVE_NO_ERROR
WeaveConnectionTunnel を正常に作成したとき。
WEAVE_ERROR_INCORRECT_STATE
WeaveConnectionTunnel のコンポーネント WeaveConnection オブジェクトが正しい状態でない場合。
WEAVE_ERROR_NO_MEMORY
新しい WeaveConnectionTunnel オブジェクトを作成できない場合。

デコード ヘッダー

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 メッセージ ヘッダー形式のバージョンがサポートされていない場合。

エンコード メッセージ

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
セッション状態の取得時にファブリック状態オブジェクトによって生成されるエラー。

エンコード メッセージ

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_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(エフェメラル UDP ポートの有効化)

bool EphemeralUDPPortEnabled(
  void
) const 

ローカルで開始された Weave UDP 交換をエフェメラル UDP 送信元ポートから送信する必要があるかどうかを確認します。

GetConnectionPoolStats

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

使用中の WeaveConnections の数とプールのサイズを取得します。

詳細
パラメータ
[out] aOutInUse
使用中の接続数が保存される、size_t への参照。

IPv4ListenEnabled(IPv4 接続の有効化)

bool IPv4ListenEnabled(
  void
) const 

IPv4 経由での着信通信をリッスンするように WeaveMessageLayer が設定されているかどうかを確認します。

IPv6ListenEnabled

bool IPv6ListenEnabled(
  void
) const 

IPv4 経由での着信通信をリッスンするように WeaveMessageLayer が設定されているかどうかを確認します。

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
)

新しい接続の作成

WeaveConnection * NewConnection(
  void
)

プールから新しい WeaveConnection オブジェクトを作成します。

詳細
戻り値
成功した場合は、新しく作成された WeaveConnection オブジェクトへのポインタ。それ以外の場合は NULL。

NewConnectionTunnel

WeaveConnectionTunnel * NewConnectionTunnel(
  void
)

プールから新しい WeaveConnectionTunnel オブジェクトを作成します。

詳細
戻り値
成功した場合は、新しく作成された WeaveConnectionTunnel オブジェクトへのポインタ。それ以外の場合は NULL。

再エンコード メッセージ

WEAVE_ERROR ReEncodeMessage(
  PacketBuffer *buf
)

RefreshEndpoints

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
下位の UDP エンドポイントから生成された UDP エンドポイント。

メッセージを再送信

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
下位の UDP エンドポイントから生成された UDP エンドポイント。

メッセージを再送信

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
下位の UDP エンドポイントから生成された UDP エンドポイント。

メッセージを再送信

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

基盤となる Inetlayer UDP エンドポイントを使用して、エンコードされた Weave メッセージを再送信します。

注: 宛先アドレスが指定されていない場合は、メッセージ ヘッダーのノード識別子から宛先アドレスを判別してみてください。この処理ができなかった場合は失敗します。- 宛先アドレスがローカル ファブリックのファブリック アドレスで、呼び出し元が宛先ノード ID を指定していない場合は、宛先アドレスから抽出します。

詳細
パラメータ
[in] aDestAddr
宛先 IP アドレス。
[in] destPort
宛先ポート。
[in] interfaceId
Weave メッセージの送信インターフェース。
[in] msgInfo
WeaveMessageInfo オブジェクトへのポインタ。
[in] payload
エンコードされた Weave メッセージを保持する PacketBuffer オブジェクトへのポインタ。
戻り値
WEAVE_NO_ERROR
ネットワーク層にメッセージを正常に送信する
errors
下位の UDP エンドポイントから生成された UDP エンドポイント。

メッセージを送信

WEAVE_ERROR SendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

基盤となる Inetlayer UDP エンドポイントを使用してエンコードした後、Weave メッセージを送信します。

詳細
パラメータ
[in] msgInfo
送信するメッセージに関する情報を含む WeaveMessageInfo オブジェクトへのポインタ。
[in] payload
エンコードされた Weave メッセージを保持する PacketBuffer オブジェクトへのポインタ。
戻り値
WEAVE_NO_ERROR
ネットワーク層にメッセージを正常に送信する
errors
下位の UDP エンドポイントから生成された UDP エンドポイント。

メッセージを送信

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
下位の UDP エンドポイントから生成された UDP エンドポイント。

メッセージを送信

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

基盤となる Inetlayer UDP エンドポイントを使用してエンコードした後、Weave メッセージを送信します。

注: 宛先アドレスが指定されていない場合は、メッセージ ヘッダーのノード識別子から宛先アドレスを判別してみてください。この処理ができなかった場合は失敗します。- 宛先アドレスがローカル ファブリックのファブリック アドレスで、呼び出し元が宛先ノード 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
下位の UDP エンドポイントから生成された UDP エンドポイント。

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
下位の UDP エンドポイントから生成された UDP エンドポイント。

SetSignalMessageLayerActivityChanged

void SetSignalMessageLayerActivityChanged(
  MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler
)

メッセージ レイヤのアクティビティが変更されるたびに呼び出されるアプリケーション ハンドラを設定します。

具体的には、申請のたびに次のタイミングで通知されます。

  • 開いているエクスチェンジの数。
  • 保留中のメッセージ カウンタ同期リクエストの数が 0 から少なくとも 1 に変化し、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() を呼び出す必要があります。

SetUnsecureConnectionListener

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

シャットダウン

WEAVE_ERROR Shutdown(
  void
)

WeaveMessageLayer をシャットダウンします。

開いているすべての Inet レイヤ エンドポイントを閉じ、上位レイヤのコールバック、メンバー変数、オブジェクトをすべてリセットします。Shutdown() を呼び出すと、WeaveMessageLayer オブジェクトが終了されます。

TCPListenEnabled

bool TCPListenEnabled(
  void
) const 

受信 TCP 接続をリッスンするように WeaveMessageLayer が設定されているかどうかを確認します。

UDPListenEnabled(UDP リッスンの有効化)

bool UDPListenEnabled(
  void
) const 

受信 UDP メッセージをリッスンするよう WeaveMessageLayer が設定されているかどうかを確認します。

UnsecureListenEnabled

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
buf が指すバッファのサイズ。
[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 を出力しない場合は NULL。

GetPeerDescription

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

ピアから受信したメッセージに関連する情報に基づいて、ピアノードを記述する文字列を作成します。

詳細
パラメータ
[in] buf
文字列が書き込まれるバッファへのポインタ。バッファは、少なくとも kWeavePeerDescription_MaxLength と同じ大きさにする必要があります。これより小さいバッファを指定すると、文字列は切り捨てられます。いずれの場合も、出力には NUL 終端文字が含まれます。
[in] bufSize
buf が指すバッファのサイズ。
[in] msgInfo
メッセージに関する情報を含む WeaveMessageInfo 構造へのポインタ。