nl::Weave::WeaveMessageLayer

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

Die Definition der Klasse WeaveMessageLayer, die die Kommunikation mit anderen Weave-Knoten verwaltet.

Zusammenfassung

Es verwendet einen der InetLayer-Endpunkte, um einen Kommunikationskanal mit anderen Weave-Knoten herzustellen.

Konstruktoren und Zerstörer

WeaveMessageLayer(void)
Der Konstruktor der Weave-Nachrichtenschicht.

Öffentliche Typen

AcceptErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err) typedef
void(*
Diese Funktion ist der Callback der höheren Schicht, um einen Fehler bei der Verarbeitung einer eingehenden TCP-Verbindung zu melden.
CallbackRemovedFunct)(void *listenerState) typedef
void(*
Diese Funktion wird aufgerufen, um einen Rückruf zu entfernen.
ConnectionReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveConnection *con) typedef
void(*
Diese Funktion ist der Callback der höheren Schicht für die Verarbeitung einer eingehenden TCP-Verbindung.
MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive) typedef
void(*
Diese Funktion ist der Anwendungs-Callback zum Melden von Änderungen der Aktivität auf Nachrichtenebene.
MessageReceiveFunct)(WeaveMessageLayer *msgLayer, WeaveMessageInfo *msgInfo, PacketBuffer *payload) typedef
void(*
Diese Funktion ist der Callback der höheren Schicht, der beim Empfang einer Weave-Nachricht über UDP aufgerufen wird.
ReceiveErrorFunct)(WeaveMessageLayer *msgLayer, WEAVE_ERROR err, const IPPacketInfo *pktInfo) typedef
void(*
Diese Funktion ist der Rückruf der höheren Schicht, der bei einem Fehler aufgerufen wird.
State{
  kState_NotInitialized = 0,
  kState_Initializing = 1,
  kState_Initialized = 2
}
enum
Der Status von WeaveMessageLayer.
TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload) typedef
void(*
Diese Funktion ist der Rückruf der höheren Schicht, der beim Empfang eines getunnelten Pakets über einen lokalen UDP-Tunnel aufgerufen wird.

Öffentliche Attribute

AppState
void *
Ein Verweis auf ein anwendungsspezifisches Statusobjekt.
ExchangeMgr
[LESENUR] Das verknüpfte WeaveExchangeManager-Objekt.
FabricState
[LESENUR] Das verknüpfte WeaveFabricState-Objekt.
IncomingConIdleTimeout
uint32_t
Standardzeitlimit bei Inaktivität (in Millisekunden) für eingehende Verbindungen.
Inet
InetLayer *
[READ ONLY] Das zugehörige InetLayer-Objekt.
IsListening
bool
[LESENUR] „True“, wenn auf eingehende Verbindungen/Nachrichten gewartet wird, andernfalls „false“.
OnAcceptError
OnConnectionReceived
OnMessageReceived
OnReceiveError
OnUDPTunneledMessageReceived
SecurityMgr
[READ ONLY] Das zugehörige Objekt WeaveSecurityManager.
State
uint8_t
[LESENUR] Der Status des WeaveMessageLayer-Objekts.
SystemLayer
mDropMessage
bool
Nur zur internen Verwendung und zur Fehlerbehebung. Wenn diese Option festgelegt ist, verwirft WeaveMessageLayer die Nachricht und gibt sie zurück.

Öffentliche Funktionen

ClearUnsecuredConnectionListener(ConnectionReceiveFunct oldOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved)
CloseEndpoints(void)
Schließen Sie alle offenen TCP- und UDP-Endpunkte.
CreateTunnel(WeaveConnectionTunnel **tunPtr, WeaveConnection & conOne, WeaveConnection & conTwo, uint32_t inactivityTimeoutMS)
Erstellen Sie einen WeaveConnectionTunnel, indem Sie zwei angegebene WeaveConnections miteinander koppeln.
DecodeHeader(PacketBuffer *msgBuf, WeaveMessageInfo *msgInfo, uint8_t **payloadStart)
Entschlüsselt einen Weave-Nachrichtenschicht-Header aus einer empfangenen Weave-Nachricht.
EncodeMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf, WeaveConnection *con, uint16_t maxLen, uint16_t reserve)
Codieren Sie einen WeaveMessageLayer-Header in einen PacketBuffer.
EncodeMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntId, WeaveMessageInfo *msgInfo, PacketBuffer *payload)
Codiert einen Weave-Nachrichtenschicht-Header in einen PacketBuffer.
EphemeralUDPPortEnabled(void) const
bool
Prüfen Sie, ob lokal initiierte Weave-UDP-Austausche von einem sitzungsspezifischen UDP-Quellport gesendet werden sollen.
GetConnectionPoolStats(nl::Weave::System::Stats::count_t & aOutInUse) const
void
Ruft die Anzahl der verwendeten WeaveConnections und die Größe des Pools ab.
IPv4ListenEnabled(void) const
bool
Prüfen Sie, ob WeaveMessageLayer so konfiguriert ist, dass eingehende Kommunikation über IPv4 überwacht wird.
IPv6ListenEnabled(void) const
bool
Prüfen Sie, ob die WeaveMessageLayer so konfiguriert ist, dass sie auf eingehende Kommunikation über IPv4 wartet.
Init(InitContext *context)
Initialisieren Sie das Weave-Objekt der Nachrichtenschicht.
IsBoundToLocalIPv4Address(void) const
bool
Prüfen Sie, ob die WeaveMessageLayer an eine lokale IPv4-Adresse gebunden ist.
IsBoundToLocalIPv6Address(void) const
bool
Prüfen Sie, ob die WeaveMessageLayer an eine lokale IPv6-Adresse gebunden ist.
IsMessageLayerActive(void)
bool
NewConnection(void)
Erstellen Sie ein neues WeaveConnection-Objekt aus einem Pool.
NewConnectionTunnel(void)
Erstellen Sie ein neues WeaveConnectionTunnel-Objekt aus einem Pool.
ReEncodeMessage(PacketBuffer *buf)
RefreshEndpoints(void)
Aktualisieren Sie die InetLayer-Endpunkte basierend auf dem aktuellen Status der Netzwerkschnittstellen des Systems.
ResendMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Eine codierte Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt noch einmal senden.
ResendMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Eine codierte Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt noch einmal senden.
ResendMessage(const IPAddress & destAddr, uint16_t destPort, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Eine codierte Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt noch einmal senden.
ResendMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId interfaceId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Eine codierte Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt noch einmal senden.
SendMessage(WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Senden Sie eine Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt, nachdem Sie sie codiert haben.
SendMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Senden Sie eine Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt, nachdem Sie sie codiert haben.
SendMessage(const IPAddress & destAddr, uint16_t destPort, InterfaceId sendIntfId, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Senden Sie eine Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt, nachdem Sie sie codiert haben.
SendUDPTunneledMessage(const IPAddress & destAddr, WeaveMessageInfo *msgInfo, PacketBuffer *msgBuf)
Funktion zum Senden eines getunnelten Pakets über einen lokalen UDP-Tunnel.
SetSignalMessageLayerActivityChanged(MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler)
void
Legen Sie einen Anwendungs-Handler fest, der jedes Mal aufgerufen wird, wenn sich die Aktivität der Nachrichtenschicht ändert.
SetTCPListenEnabled(bool val)
void
Aktivieren oder deaktivieren Sie das Warten auf eingehende TCP-Verbindungen in der WeaveMessageLayer.
SetUDPListenEnabled(bool val)
void
Aktivieren oder deaktivieren Sie das Warten auf eingehende UDP-Nachrichten in WeaveMessageLayer.
SetUnsecuredConnectionListener(ConnectionReceiveFunct newOnUnsecuredConnectionReceived, CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved, bool force, void *listenerState)
Shutdown(void)
Fahren Sie WeaveMessageLayer herunter.
TCPListenEnabled(void) const
bool
Prüfen Sie, ob die WeaveMessageLayer so konfiguriert ist, dass sie auf eingehende TCP-Verbindungen wartet.
UDPListenEnabled(void) const
bool
Prüfen Sie, ob die WeaveMessageLayer so konfiguriert ist, dass sie auf eingehende UDP-Nachrichten wartet.
UnsecuredListenEnabled(void) const
bool
Aktivieren oder deaktivieren Sie das Initiieren von Weave-UDP-Austauschen über einen sitzungsspezifischen UDP-Quellport.

Öffentliche statische Funktionen

GetMaxWeavePayloadSize(const PacketBuffer *msgBuf, bool isUDP, uint32_t udpMTU)
uint32_t
Die maximale Weave-Nutzlastgröße für eine Nachrichtenkonfiguration und einen bereitgestellten PacketBuffer abrufen
GetPeerDescription(char *buf, size_t bufSize, uint64_t nodeId, const IPAddress *addr, uint16_t port, InterfaceId interfaceId, const WeaveConnection *con)
void
Erstellt einen String, der einen Peer-Knoten und die zugehörigen Adress-/Verbindungsinformationen beschreibt.
GetPeerDescription(char *buf, size_t bufSize, const WeaveMessageInfo *msgInfo)
void
Erstellt einen String, der einen Peer-Knoten beschreibt, basierend auf den Informationen, die mit einer vom Peer empfangenen Nachricht verknüpft sind.

Klassen

nl::Weave::WeaveMessageLayer::InitContext

Die Definition der Klasse InitContext.

Öffentliche Typen

AcceptErrorFunct

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

Diese Funktion ist der Callback der höheren Schicht, um einen Fehler bei der Verarbeitung einer eingehenden TCP-Verbindung zu melden.

Details
Parameter
[in] msgLayer
Ein Zeiger auf das WeaveMessageLayer-Objekt.
[in] err
Der Fehler WEAVE_ERROR ist beim Verarbeiten einer eingehenden TCP-Verbindung aufgetreten.

CallbackRemovedFunct

void(* CallbackRemovedFunct)(void *listenerState)

Diese Funktion wird aufgerufen, um einen Rückruf zu entfernen.

Details
Parameter
[in] listenerState
Ein Verweis auf das Anwendungsstatusobjekt.

ConnectionReceiveFunct

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

Diese Funktion ist der Callback der höheren Ebene für die Verarbeitung einer eingehenden TCP-Verbindung.

Details
Parameter
[in] msgLayer
Ein Zeiger auf das WeaveMessageLayer-Objekt.
[in] con
Ein Verweis auf das WeaveConnection-Objekt.

MessageLayerActivityChangeHandlerFunct

void(* MessageLayerActivityChangeHandlerFunct)(bool messageLayerIsActive)

Diese Funktion ist der Anwendungs-Callback zum Melden von Änderungen der Aktivität auf Nachrichtenebene.

Die Nachrichtenebene gilt als aktiv, wenn es mindestens eine Anfrage für einen offenen Austausch oder eine ausstehende Anfrage zur Synchronisierung von Nachrichtenzählern gibt.

Details
Parameter
[in] messageLayerIsActive
Ein boolescher Wert, der angibt, ob die Nachrichtenebene aktiv ist oder nicht.

MessageReceiveFunct

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

Diese Funktion ist der Callback der höheren Schicht, der beim Empfang einer Weave-Nachricht über UDP aufgerufen wird.

Details
Parameter
[in] msgLayer
Ein Verweis auf das WeaveMessageLayer-Objekt.
[in] msgInfo
Ein Verweis auf das WeaveMessageInfo-Objekt.
[in] payload
Verweis auf PacketBuffer-Nachricht mit empfangenem getunnelten Paket.

ReceiveErrorFunct

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

Diese Funktion ist der Rückruf der höheren Schicht, der bei einem Fehler aufgerufen wird.

Details
Parameter
[in] msgLayer
Ein Verweis auf das WeaveMessageLayer-Objekt.
[in] err
Der WEAVE_ERROR, der beim Empfangen von Daten aufgetreten ist.
[in] pktInfo
Ein schreibgeschützter Zeiger auf das IPPacketInfo-Objekt.

Status

 State

Der Status von WeaveMessageLayer.

Attribute
kState_Initialized

Gibt an, wann die WeaveMessageLayer initialisiert wird.

kState_Initializing

Gibt an, ob die WeaveMessageLayer gerade initialisiert wird.

kState_NotInitialized

Status, wenn die WeaveMessageLayer nicht initialisiert ist.

TunneledMsgReceiveFunct

void(* TunneledMsgReceiveFunct)(WeaveMessageLayer *msgLayer, PacketBuffer *payload)

Diese Funktion ist der Rückruf der höheren Schicht, der beim Empfang eines getunnelten Pakets über einen lokalen UDP-Tunnel aufgerufen wird.

Details
Parameter
[in] msgLayer
Ein Verweis auf das WeaveMessageLayer-Objekt.
[in] payload
Zeiger auf die PacketBuffer-Nachricht mit dem empfangenen getunnelten Paket.

Öffentliche Attribute

AppState

void * AppState

Ein Zeiger auf ein anwendungsspezifisches Statusobjekt.

ExchangeMgr

WeaveExchangeManager * ExchangeMgr

[READ ONLY] Das zugehörige WeaveExchangeManager-Objekt.

FabricState

WeaveFabricState * FabricState

[READ ONLY] Das zugehörige Objekt WeaveFabricState.

IncomingConIdleTimeout

uint32_t IncomingConIdleTimeout

Standardzeitlimit bei Inaktivität (in Millisekunden) für eingehende Verbindungen.

Inet

InetLayer * Inet

[LESENUR] Das zugehörige InetLayer-Objekt.

IsListening

bool IsListening

[LESENUR] „True“, wenn auf eingehende Verbindungen/Nachrichten gewartet wird, andernfalls „false“.

OnAcceptError

AcceptErrorFunct OnAcceptError

OnConnectionReceived

ConnectionReceiveFunct OnConnectionReceived

OnMessageReceived

MessageReceiveFunct OnMessageReceived

OnReceiveError

ReceiveErrorFunct OnReceiveError

OnUDPTunneledMessageReceived

TunneledMsgReceiveFunct OnUDPTunneledMessageReceived

SecurityMgr

WeaveSecurityManager * SecurityMgr

[READ ONLY] Das zugehörige Objekt WeaveSecurityManager.

Status

uint8_t State

[LESENUR] Der Status des WeaveMessageLayer-Objekts.

SystemLayer

System::Layer * SystemLayer

mDropMessage

bool mDropMessage

Nur zur internen Verwendung und zur Fehlerbehebung. Wenn diese Option festgelegt ist, verwirft WeaveMessageLayer die Nachricht und gibt sie zurück.

Öffentliche Funktionen

ClearUnsecuredConnectionListener

WEAVE_ERROR ClearUnsecuredConnectionListener(
  ConnectionReceiveFunct oldOnUnsecuredConnectionReceived,
  CallbackRemovedFunct newOnUnsecuredConnectionCallbacksRemoved
)

CloseEndpoints

WEAVE_ERROR CloseEndpoints(
  void
)

Schließen Sie alle offenen TCP- und UDP-Endpunkte.

Brechen Sie dann alle offenen WeaveConnections ab und fahren Sie alle geöffneten WeaveConnectionTunnel-Objekte herunter.

Weitere Informationen:
Shutdown().

CreateTunnel

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

Erstellen Sie einen WeaveConnectionTunnel, indem Sie zwei angegebene WeaveConnections zusammenkoppeln.

Nach erfolgreicher Erstellung werden die TCP-Endpunkte, die den Komponentenobjekten WeaveConnection entsprechen, an den WeaveConnectionTunnel übergeben. Andernfalls werden die Weave-Verbindungen geschlossen.

Details
Parameter
[out] tunPtr
Ein Verweis auf einen Verweis auf ein WeaveConnectionTunnel-Objekt.
[in] conOne
Ein Verweis auf das erste WeaveConnection-Objekt.
[in] conTwo
Ein Verweis auf das zweite WeaveConnection-Objekt.
[in] inactivityTimeoutMS
Die maximale Zeit in Millisekunden, während der der Weave-Verbindungstunnel inaktiv sein darf.
Rückgabewerte
WEAVE_NO_ERROR
wird nach dem erfolgreichen Erstellen des WeaveConnectionTunnel ausgegeben.
WEAVE_ERROR_INCORRECT_STATE
wenn die WeaveConnection-Objekte der Komponente WeaveConnectionTunnel nicht den richtigen Status haben.
WEAVE_ERROR_NO_MEMORY
Wenn kein neues WeaveConnectionTunnel-Objekt erstellt werden kann.

DecodeHeader

WEAVE_ERROR DecodeHeader(
  PacketBuffer *msgBuf,
  WeaveMessageInfo *msgInfo,
  uint8_t **payloadStart
)

Entschlüsselt einen Weave-Nachrichtenschicht-Header aus einer empfangenen Weave-Nachricht.

Details
Parameter
[in] msgBuf
Ein Verweis auf das PacketBuffer-Objekt, das die Weave-Nachricht enthält.
[in] msgInfo
Ein Verweis auf ein WeaveMessageInfo-Objekt, das Informationen zur Nachricht erhält.
[out] payloadStart
Ein Zeiger auf einen Zeiger auf die Position im Nachrichtenpuffer nach Abschluss der Decodierung.
Rückgabewerte
WEAVE_NO_ERROR
Nach erfolgreicher Decodierung des Nachrichtenheaders.
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
Wenn der übergebene Nachrichtenpuffer eine ungültige Länge hat.
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
Wenn die Version des Weave-Nachrichten-Header-Formats nicht unterstützt wird.

EncodeMessage

WEAVE_ERROR EncodeMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf,
  WeaveConnection *con,
  uint16_t maxLen,
  uint16_t reserve
)

Codiert eine WeaveMessageLayer-Kopfzeile in einen PacketBuffer.

Details
Parameter
[in] msgInfo
Ein Verweis auf ein WeaveMessageInfo-Objekt mit Informationen zur zu codierenden Nachricht.
[in] msgBuf
Ein Verweis auf das PacketBuffer-Objekt, das die Weave-Nachricht enthält.
[in] con
Ein Verweis auf das WeaveConnection-Objekt.
[in] maxLen
Die maximale Länge der codierten Weave-Nachricht.
[in] reserve
Der reservierte Bereich vor der Nutzlast für den Weave-Nachrichtenheader.
Rückgabewerte
WEAVE_NO_ERROR
nach erfolgreicher Codierung der Nachricht.
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
wenn die Version des Weave-Nachrichten-Header-Formats nicht unterstützt wird.
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
wenn die Nutzlastlänge im Nachrichtenpuffer null ist.
WEAVE_ERROR_UNSUPPORTED_ENCRYPTION_TYPE
wenn der Verschlüsselungstyp im Nachrichtenheader nicht unterstützt wird.
WEAVE_ERROR_MESSAGE_TOO_LONG
Die codierte Nachricht wäre länger als die angeforderte maximale Anzahl.
WEAVE_ERROR_BUFFER_TOO_SMALL
wenn vor oder nach der Nachrichtennutzlast nicht genügend Platz vorhanden ist.
other
Fehler, die vom Fabric-Statusobjekt beim Abrufen des Sitzungsstatus generiert wurden.

EncodeMessage

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

Codiert einen Weave-Nachrichtenschicht-Header in einen PacketBuffer.

Details
Parameter
[in] destAddr
Die Ziel-IP-Adresse.
[in] destPort
Der Zielport.
[in] sendIntId
Die Schnittstelle, über die die Weave-Nachricht gesendet werden soll.
[in] msgInfo
Ein Verweis auf ein WeaveMessageInfo-Objekt.
[in] payload
Ein Verweis auf das PacketBuffer-Objekt, das die Weave-Nachricht enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach erfolgreicher Codierung der Weave-Nachricht.
WEAVE_ERROR_UNSUPPORTED_MESSAGE_VERSION
wenn die Weave Message-Version nicht unterstützt wird.
WEAVE_ERROR_INVALID_MESSAGE_LENGTH
wenn die Nutzlastlänge im Nachrichtenpuffer null ist.
WEAVE_ERROR_UNSUPPORTED_ENCRYPTION_TYPE
wenn der Verschlüsselungstyp nicht unterstützt wird.
WEAVE_ERROR_MESSAGE_TOO_LONG
wenn die codierte Nachricht länger als das angeforderte Maximum ist.
WEAVE_ERROR_BUFFER_TOO_SMALL
wenn vor oder nach der Nachrichtennutzlast nicht genügend Platz vorhanden ist.
other
Fehler, die vom Fabric-Statusobjekt beim Abrufen des Sitzungsstatus generiert werden.

EphemeralUDPPortEnabled

bool EphemeralUDPPortEnabled(
  void
) const 

Prüfen Sie, ob lokal initiierte Weave-UDP-Austausche von einem sitzungsspezifischen UDP-Quellport gesendet werden sollen.

GetConnectionPoolStats

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

Ruft die Anzahl der verwendeten WeaveConnections und die Größe des Pools ab.

Details
Parameter
[out] aOutInUse
Verweis auf size_t, in dem die Anzahl der verwendeten Verbindungen gespeichert ist.

IPv4ListenEnabled

bool IPv4ListenEnabled(
  void
) const 

Prüfen Sie, ob die WeaveMessageLayer so konfiguriert ist, dass sie auf eingehende Kommunikation über IPv4 wartet.

IPv6ListenEnabled

bool IPv6ListenEnabled(
  void
) const 

Prüfen Sie, ob die WeaveMessageLayer so konfiguriert ist, dass sie auf eingehende Kommunikation über IPv4 wartet.

Init

WEAVE_ERROR Init(
  InitContext *context
)

Initialisieren Sie das Weave-Objekt der Nachrichtenschicht.

Details
Parameter
[in] context
Ein Verweis auf das InitContext-Objekt.
Rückgabewerte
WEAVE_NO_ERROR
nach erfolgreicher Initialisierung.
WEAVE_ERROR_INVALID_ARGUMENT
wenn das übergebene InitContext-Objekt NULL ist.
WEAVE_ERROR_INCORRECT_STATE
Der Status des WeaveMessageLayer-Objekts ist falsch.
other
Fehler, die während der Endpunkterstellung von der unteren Inet-Ebene generiert wurden.

IsBoundToLocalIPv4Address

bool IsBoundToLocalIPv4Address(
  void
) const 

Prüfen Sie, ob die WeaveMessageLayer an eine lokale IPv4-Adresse gebunden ist.

IsBoundToLocalIPv6Address

bool IsBoundToLocalIPv6Address(
  void
) const 

Prüfen Sie, ob die WeaveMessageLayer an eine lokale IPv6-Adresse gebunden ist.

IsMessageLayerActive

bool IsMessageLayerActive(
  void
)

NewConnection

WeaveConnection * NewConnection(
  void
)

Erstellen Sie ein neues WeaveConnection-Objekt aus einem Pool.

Details
Rückgabe
Einen Zeiger auf das neu erstellte WeaveConnection-Objekt, falls erfolgreich, andernfalls NULL.

NewConnectionTunnel

WeaveConnectionTunnel * NewConnectionTunnel(
  void
)

Erstellen Sie ein neues WeaveConnectionTunnel-Objekt aus einem Pool.

Details
Rückgabe
Ein Verweis auf das neu erstellte WeaveConnectionTunnel-Objekt, falls erfolgreich, andernfalls NULL.

ReEncodeMessage

WEAVE_ERROR ReEncodeMessage(
  PacketBuffer *buf
)

RefreshEndpoints

WEAVE_ERROR RefreshEndpoints(
  void
)

Aktualisieren Sie die InetLayer-Endpunkte anhand des aktuellen Status der Netzwerkschnittstellen des Systems.

Details
Rückgabewerte
WEAVE_NO_ERROR
über die erfolgreiche Aktualisierung von Endpunkten.
InetLayer
Fehler aufgrund von Aufrufen zum Erstellen von TCP/UDP-Endpunkten.

ResendMessage

WEAVE_ERROR ResendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Eine codierte Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt noch einmal senden.

Details
Parameter
[in] msgInfo
Ein Verweis auf das WeaveMessageInfo-Objekt.
[in] payload
Ein Zeiger auf das PacketBuffer-Objekt, das die codierte Weave-Nachricht enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach dem erfolgreichen Senden der Nachricht an die Netzwerkschicht.
errors
werden beim Senden vom UDP-Endpunkt der niedrigeren Ebene generiert.

ResendMessage

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

Eine codierte Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt noch einmal senden.

Details
Parameter
[in] destAddr
Die Ziel-IP-Adresse.
[in] msgInfo
Ein Verweis auf das WeaveMessageInfo-Objekt.
[in] payload
Ein Verweis auf das PacketBuffer-Objekt, das die codierte Weave-Nachricht enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach dem erfolgreichen Senden der Nachricht an die Netzwerkschicht.
errors
werden beim Senden vom UDP-Endpunkt der niedrigeren Ebene generiert.

ResendMessage

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

Eine codierte Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt noch einmal senden.

Details
Parameter
[in] destAddr
Die Ziel-IP-Adresse.
[in] destPort
Der Zielport.
[in] msgInfo
Ein Verweis auf das WeaveMessageInfo-Objekt.
[in] payload
Ein Zeiger auf das PacketBuffer-Objekt, das die codierte Weave-Nachricht enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach dem erfolgreichen Senden der Nachricht an die Netzwerkschicht.
errors
werden beim Senden vom UDP-Endpunkt der niedrigeren Ebene generiert.

ResendMessage

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

Eine codierte Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt noch einmal senden.

Hinweis:Wenn die Zieladresse nicht angegeben wurde, versuchen Sie, sie anhand der Knotenkennung im Nachrichtenheader zu ermitteln. Andernfalls wird ein Fehler ausgegeben. – Wenn die Zieladresse eine Fabric-Adresse für die lokale Fabric ist und der Aufrufer die Zielknoten-ID nicht angegeben hat, wird sie aus der Zieladresse extrahiert.

Details
Parameter
[in] aDestAddr
Die Ziel-IP-Adresse.
[in] destPort
Der Zielport.
[in] interfaceId
Die Schnittstelle, über die die Weave-Nachricht gesendet werden soll.
[in] msgInfo
Ein Verweis auf das WeaveMessageInfo-Objekt.
[in] payload
Ein Verweis auf das PacketBuffer-Objekt, das die codierte Weave-Nachricht enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach dem erfolgreichen Senden der Nachricht an die Netzwerkschicht.
errors
wird vom UDP-Endpunkt der unteren Inet-Schicht während des Sendens generiert.

SendMessage

WEAVE_ERROR SendMessage(
  WeaveMessageInfo *msgInfo,
  PacketBuffer *msgBuf
)

Senden Sie nach der Codierung eine Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt.

Details
Parameter
[in] msgInfo
Ein Zeiger auf ein WeaveMessageInfo-Objekt, das Informationen zur zu sendenden Nachricht enthält.
[in] payload
Ein Verweis auf das PacketBuffer-Objekt, das die codierte Weave-Nachricht enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach dem erfolgreichen Senden der Nachricht an die Netzwerkschicht.
errors
wird vom UDP-Endpunkt der unteren Inet-Schicht während des Sendens generiert.

SendMessage

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

Senden Sie eine Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt, nachdem Sie sie codiert haben.

Hinweis: Der verwendete Zielport ist WEAVE_PORT. – Wenn die Zieladresse nicht angegeben wurde, versuchen Sie, sie anhand der Knoten-ID im Nachrichtenheader zu ermitteln. Andernfalls wird ein Fehler ausgegeben.

– Wenn die Zieladresse eine Fabric-Adresse für die lokale Fabric ist und der Aufrufer die Zielknoten-ID nicht angegeben hat, wird sie aus der Zieladresse extrahiert.

Details
Parameter
[in] destAddr
Die Ziel-IP-Adresse.
[in] msgInfo
Ein Verweis auf ein WeaveMessageInfo-Objekt mit Informationen zur zu sendenden Nachricht.
[in] payload
Ein Zeiger auf das PacketBuffer-Objekt, das die codierte Weave-Nachricht enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach dem erfolgreichen Senden der Nachricht an die Netzwerkschicht.
errors
wird vom UDP-Endpunkt der unteren Inet-Schicht während des Sendens generiert.

SendMessage

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

Senden Sie nach der Codierung eine Weave-Nachricht über den zugrunde liegenden Inetlayer-UDP-Endpunkt.

Hinweis: Wenn die Zieladresse nicht angegeben wurde, versuchen Sie, sie anhand der Knoten-ID im Nachrichtenheader zu ermitteln. Andernfalls wird ein Fehler ausgegeben. – Wenn die Zieladresse eine Fabric-Adresse für die lokale Fabric ist und der Aufrufer die Zielknoten-ID nicht angegeben hat, wird sie aus der Zieladresse extrahiert.

Details
Parameter
[in] aDestAddr
Die Ziel-IP-Adresse.
[in] destPort
Der Zielport.
[in] sendIntfId
Die Schnittstelle, über die die Weave-Nachricht gesendet werden soll.
[in] msgInfo
Ein Zeiger auf ein WeaveMessageInfo-Objekt, das Informationen zur zu sendenden Nachricht enthält.
[in] payload
Ein Verweis auf das PacketBuffer-Objekt, das die codierte Weave-Nachricht enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach dem erfolgreichen Senden der Nachricht an die Netzwerkschicht.
WEAVE_ERROR_INVALID_ADDRESS
wenn die Zieladresse nicht angegeben ist oder nicht anhand der Zielknoten-ID ermittelt werden kann.
errors
wird vom UDP-Endpunkt der unteren Inet-Schicht während des Sendens generiert.

SendUDPTunneledMessage

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

Funktion zum Senden eines getunnelten Pakets über einen lokalen UDP-Tunnel.

Eine getunnelte IPv6-Datennachricht über UDP senden.

Details
Parameter
[in] msgInfo
Ein Verweis auf ein WeaveMessageInfo-Objekt.
[in] destAddr
IP-Adresse des UDP-Tunnelziels.
[in] msgBuf
Ein Verweis auf das PacketBuffer-Objekt, das das zu sendende Paket enthält.
Rückgabewerte
WEAVE_NO_ERROR
nach dem erfolgreichen Senden der Nachricht an die Netzwerkschicht.
WEAVE_ERROR_INVALID_ADDRESS
wenn die Zieladresse nicht angegeben ist oder nicht anhand der Zielknoten-ID ermittelt werden kann.
errors
wird vom UDP-Endpunkt der unteren Inet-Schicht während des Sendens generiert.

SetSignalMessageLayerActivityChanged

void SetSignalMessageLayerActivityChanged(
  MessageLayerActivityChangeHandlerFunct messageLayerActivityChangeHandler
)

Legen Sie einen Anwendungs-Handler fest, der jedes Mal aufgerufen wird, wenn sich die Aktivität der Nachrichtenschicht ändert.

Insbesondere wird der Antrag jedes Mal benachrichtigt, wenn

  • sich die Anzahl der geöffneten Unterhaltungen ändert.
  • die Anzahl der ausstehenden Anfragen zur Synchronisierung des Nachrichtenzählers von null auf mindestens eins und wieder auf null wechselt. Der Handler dient als allgemeines Signal, das angibt, ob es laufende Weave-Unterhaltungen oder ausstehende Antworten gibt. Der Handler muss festgelegt werden, nachdem WeaveMessageLayer initialisiert wurde. Durch Herunterfahren von WeaveMessageLayer wird der aktuelle Handler gelöscht.

Details
Parameter
[in] messageLayerActivityChangeHandler
Ein Verweis auf eine Funktion, die aufgerufen wird, wenn sich die Aktivität der Nachrichtenebene ändert.
Rückgabewerte
None.

SetTCPListenEnabled

void SetTCPListenEnabled(
  bool val
)

Aktivieren oder deaktivieren Sie das Warten auf eingehende TCP-Verbindungen in der WeaveMessageLayer.

HINWEIS: RefreshEndpoints() muss aufgerufen werden, nachdem der TCP-Wartestatus geändert wurde.

SetUDPListenEnabled

void SetUDPListenEnabled(
  bool val
)

Aktivieren oder deaktivieren Sie das Zuhören auf eingehende UDP-Nachrichten in der WeaveMessageLayer.

HINWEIS: RefreshEndpoints() muss aufgerufen werden, nachdem der UDP-Lauschtand geändert wurde.

SetUnsecuredConnectionListener

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

Herunterfahren

WEAVE_ERROR Shutdown(
  void
)

Fahren Sie die WeaveMessageLayer herunter.

Schließen Sie alle offenen Endpunkte der Inet-Schicht, setzen Sie alle Callbacks, Mitgliedsvariablen und Objekte der höheren Schicht zurück. Durch einen Aufruf von Shutdown() wird das WeaveMessageLayer-Objekt beendet.

TCPListenEnabled

bool TCPListenEnabled(
  void
) const 

Prüfen Sie, ob die WeaveMessageLayer so konfiguriert ist, dass sie auf eingehende TCP-Verbindungen wartet.

UDPListenEnabled

bool UDPListenEnabled(
  void
) const 

Prüfen Sie, ob WeaveMessageLayer so konfiguriert ist, dass eingehende UDP-Nachrichten abgehört werden.

UnsecuredListenEnabled

bool UnsecuredListenEnabled(
  void
) const 

Aktivieren oder deaktivieren Sie das Initiieren von Weave-UDP-Austauschen über einen sitzungsspezifischen UDP-Quellport.

HINWEIS: RefreshEndpoints() muss aufgerufen werden, nachdem der Status des sitzungsspezifischen Ports geändert wurde. Prüfen Sie, ob die ungesicherte Wiedergabe aktiviert ist.

WeaveMessageLayer

 WeaveMessageLayer(
  void
)

Der Konstruktor der Weave-Nachrichtenschicht.

Öffentliche statische Funktionen

GetMaxWeavePayloadSize

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

Die maximale Weave-Nutzlastgröße für eine Nachrichtenkonfiguration und einen bereitgestellten PacketBuffer abrufen

Die zurückgegebene maximale Nutzlastgröße überschreitet nicht den verfügbaren Speicherplatz für eine Nutzlast im bereitgestellten PacketBuffer.

Wenn die Nachricht UDP ist, führt die zurückgegebene maximale Nutzlastgröße nicht zu einer Weave-Nachricht, die nicht die angegebene UDP-MTU überläuft.

Die zurückgegebene maximale Nutzlastgröße führt nicht zu einer Weave-Nachricht, die die maximale Weave-Nachrichtengröße überschreitet.

Details
Parameter
[in] msgBuf
Ein Verweis auf den PacketBuffer, in den die Nachrichtennutzlast geschrieben wird.
[in] isUDP
„True“, wenn es sich um eine UDP-Nachricht handelt.
[in] udpMTU
Die Größe der UDP-MTU. Wird ignoriert, wenn „isUDP“ auf „false“ gesetzt ist.
Rückgabe
die maximale Weave-Nutzlastgröße.

GetPeerDescription

void GetPeerDescription(
  char *buf,
  size_t bufSize,
  uint64_t nodeId,
  const IPAddress *addr,
  uint16_t port,
  InterfaceId interfaceId,
  const WeaveConnection *con
)

Erstellt einen String, der einen Peer-Knoten und die zugehörigen Adress-/Verbindungsinformationen beschreibt.

Der generierte String hat folgendes Format:

 ([]:%, con )

Details
Parameter
[in] buf
Ein Zeiger auf einen Puffer, in den der String geschrieben werden soll. Der bereitgestellte Puffer sollte mindestens so groß sein wie kWeavePeerDescription_MaxLength. Wenn ein kleinerer Puffer angegeben wird, wird die Zeichenfolge abgeschnitten. Die Ausgabe enthält in jedem Fall ein NUL-Endzeichen.
[in] bufSize
Die Größe des Zwischenspeichers, auf den der Puffer verweist.
[in] nodeId
Die Knoten-ID, die gedruckt werden soll.
[in] addr
Ein Zeiger auf eine IP-Adresse, die gedruckt werden soll; oder NULL, wenn keine IP-Adresse gedruckt werden soll.
[in] port
Eine IP-Portnummer, die gedruckt werden soll. Wenn "addr" NULL ist, wird keine Portnummer ausgegeben.
[in] interfaceId
Eine InterfaceId, die die auszudruckende Schnittstelle identifiziert. Der Ausgabestring enthält den Namen der Schnittstelle, wie er dem zugrunde liegenden Netzwerkstack bekannt ist. Wenn interfaceId INET_NULL_INTERFACEID ist oder addr NULL ist, wird kein Schnittstellenname ausgegeben.
[in] con
Ein Verweis auf ein WeaveConnection-Objekt, dessen Protokoll-ID ausgegeben werden soll, oder NULL, wenn keine Verbindungs-ID ausgegeben werden soll.

GetPeerDescription

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

Erstellt einen String, der einen Peer-Knoten beschreibt, basierend auf den Informationen, die mit einer vom Peer empfangenen Nachricht verknüpft sind.

Details
Parameter
[in] buf
Ein Zeiger auf einen Puffer, in den der String geschrieben werden soll. Der bereitgestellte Puffer sollte mindestens so groß sein wie kWeavePeerDescription_MaxLength. Wenn ein kleinerer Puffer angegeben wird, wird die Zeichenfolge abgeschnitten. Die Ausgabe enthält in jedem Fall ein NUL-Endzeichen.
[in] bufSize
Die Größe des Zwischenspeichers, auf den der Puffer verweist.
[in] msgInfo
Ein Verweis auf eine WeaveMessageInfo-Struktur mit Informationen zur Nachricht.