nl::Weave::Profiles::DataManagement_Legacy::Binding

#include <src/lib/profiles/data-management/Legacy/Binding.h>

Die Klasse Binding verwaltet mithilfe von Weave den Kommunikationsstatus im Namen einer Anwendungseinheit.

Zusammenfassung

Wenn eine Anwendung Weave für die Kommunikation mit einer Remote-Entität verwenden möchte, gibt es eine Vielzahl von Optionen. Die Klasse Binding verknüpft diese Optionen und ordnet sie so an, dass die einfachen Dinge einfach sind und die schwierigeren Dinge zumindest handhabbar sind. Folgende Optionen werden berücksichtigt:

  • Unicast-UDP-Kommunikation mit einem bekannten Peer-Knoten.
  • UDP-Broadcast mit einem beliebigen Knoten.
  • Unicast-WRMP-Kommunikation mit einem bekannten Peer-Knoten.
  • TCP-Kommunikation mit einem bekannten Peer-Knoten.
  • TCP-Kommunikation mit einem bekannten Dienstendpunkt unter Verwendung einer Dienstmanagerinstanz zum Einrichten.
  • TCP-Kommunikation basierend auf einer vorab hergestellten Verbindung.

Konstruktoren und Zerstörer

Binding(void)
Der Standardkonstruktor für Binding-Objekte.
~Binding(void)
Der Destruktor für Binding-Objekte.

Öffentliche Typen

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
enum
Der Satz der Objektzustände Binding.

Öffentliche Attribute

mAuthMode
WeaveAuthMode
Der zu verwendende Weave-Authentifizierungsmodus.
mConnection
Ein Zeiger auf die Weave-Verbindung, die derzeit in dieser Bindung verwendet wird.
mEngine
Ein Verweis auf das ProtocolEngine-Objekt, das sich auf dieses Binding bezieht.
mPeerNodeId
uint64_t
Die 64-Bit-Knoten-ID des Bindungsziels.
mServiceMgr
Ein Zeiger auf das (optionale) ServiceManager-Objekt, der zum Fertigstellen dieser Bindung verwendet werden soll.
mState
uint8_t
Der aktuelle Objektstatus des Typs Binding.
mTransport
uint8_t
Der Transport, der beim Abschließen dieser Binding verwendet werden soll.

Öffentliche Funktionen

CompleteConfirm(WeaveConnection *aConnection)
void
Verarbeitet die Bestätigung einer Bindungsanfrage.
CompleteConfirm(StatusReport & aReport)
void
Behandelt den Fehler bei einer Bindungsanfrage.
CompleteConfirm(void)
void
Verarbeitet die Bestätigung einer Bindungsanfrage.
CompleteRequest(ProtocolEngine *aEngine)
Fordern Sie den Abschluss einer Bindung an.
Connect(WeaveConnection *aConnection)
Schließen Sie eine TCP-Bindung ab, indem Sie eine hergestellte Verbindung angeben.
Finalize(void)
void
„Unvollständige“ Bindung und geben Sie sie kostenlos.
Finalize(WEAVE_ERROR aErr)
void
„Unvollständige“ Bindung und geben Sie sie kostenlos.
Free(void)
void
Löschen Sie den Bindungsstatus.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Erzeugt ein ExchangeContext-Objekt aus einer Binding.
IncompleteIndication(StatusReport & aReport)
void
Behandeln Sie den Fehler einer Bindung.
Init(const uint64_t & aPeerNodeId)
Initialisieren Sie eine Binding nur mit einer Knoten-ID.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Initialisieren Sie ein Binding-Objekt anhand der Peer-ID und des Transports.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Initialisieren Sie ein Binding-Objekt zu einem Dienstendpunkt.
Init(WeaveConnection *aConnection)
Initialisieren Sie ein Binding-Objekt mit WeaveConnection.
IsComplete(void)
bool
Prüfen Sie, ob eine Bindung abgeschlossen ist.
IsFree(void)
bool
Die Prüfung einer Bindung ist kostenlos.
UncompleteRequest(void)
void
Verursacht, dass eine Bindung unvollständig ist.
UncompleteRequest(WEAVE_ERROR aErr)
void
Verursacht, dass eine Bindung unvollständig ist.

Öffentliche Typen

@165

 @165

Der Satz der Objektzustände Binding.

Attribute
kState_Complete

Der Status einer Binding, die abgeschlossen und einsatzbereit ist.

kState_Completing

Der Status einer Binding, die gerade abgeschlossen wird.

kState_Incomplete

Der anfängliche (und endgültige) Zustand einer Binding.

Öffentliche Attribute

mAuthMode

WeaveAuthMode mAuthMode

Der zu verwendende Weave-Authentifizierungsmodus.

(NUR_READ_ONLY)

Das ist der Authentifizierungsmodus, der für die gesamte Kommunikation verwendet wird, die dieser Bindung unterliegt.

mConnection

WeaveConnection * mConnection

Ein Zeiger auf die Weave-Verbindung, die derzeit in dieser Bindung verwendet wird.

(SCHREIBGESCHÜTZT)

TCP-Bindungen können sofort mit einer Verbindung initialisiert werden, oder sie können eine nach Abschluss zuweisen.

mEngine

ProtocolEngine * mEngine

Ein Verweis auf das ProtocolEngine-Objekt, das sich auf dieses Binding bezieht.

Eine Bindung wird im Allgemeinen in Bezug auf eine bestimmte Protokoll-Engine abgeschlossen, die meistens für den Zugriff auf MessageLayer verwendet wird. Hier behalten wir es im Auge.

mPeerNodeId

uint64_t mPeerNodeId

Die 64-Bit-Knoten-ID des Bindungsziels.

(SCHREIBGESCHÜTZT)

Jede Binding hat eine Zielentität, die hier benannt ist. Zusätzlich zu einer Weave-Knoten-ID kann dieser einen Dienstendpunkt benennen.

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

Ein Zeiger auf das (optionale) ServiceManager-Objekt, der zum Fertigstellen dieser Bindung verwendet werden soll.

(SCHREIBGESCHÜTZT)

Beim Binden an den Weave-Dienst kann bei der Initialisierung eine 64-Bit-Dienstendpunkt-ID anstelle einer Weave-Knoten-ID bereitgestellt werden. In diesem Fall ist zum Abschließen der Bindung zusätzlich ein ServiceManager-Objekt erforderlich. Normale TCP- oder WRMP-Bindungen erfordern kein ServiceManager-Objekt.

mState

uint8_t mState

Der aktuelle Objektstatus des Typs Binding.

Es kann jeweils nur ein „complete“-Vorgang auf einmal ausgeführt werden. Wenn Sie eine abgeschlossene Bindung abschließen möchten, wird in jedem Fall sofort die Bestätigungsfunktion aufgerufen. Die folgende Variable für den Status verfolgt den aktuellen Status und fungiert als Sperrfunktion.

mTransport

uint8_t mTransport

Der Transport, der beim Abschließen dieser Binding verwendet werden soll.

(SCHREIBGESCHÜTZT)

Mögliche Werte für mTransport sind in DMConstants.h definiert.

Öffentliche Funktionen

Bindung

 Binding(
  void
)

Der Standardkonstruktor für Binding-Objekte.

Löscht den gesamten internen Status.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Verarbeitet die Bestätigung einer Bindungsanfrage.

Details
Parameter
[in] aConnection
Ein Zeiger auf eine aktive WeaveConnection zum Bindungsziel.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Behandelt den Fehler bei einer Bindungsanfrage.

Details
Parameter
[in] aReport
Ein Verweis auf ein StatusReport-Objekt, das den Fehler beschreibt.

CompleteConfirm

void CompleteConfirm(
  void
)

Verarbeitet die Bestätigung einer Bindungsanfrage.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Fordern Sie den Abschluss einer Bindung an.

Die Bindung wird zumindest für Bindungen, die TCP erfordern, in Bezug auf ein bestimmtes ProtocolEngine-Objekt durchgeführt, das Zugriff auf eine ExchangeManager-Instanz gewährt.

Details
Parameter
[in] aEngine
Ein Zeiger auf ein ProtocolEngine-Objekt, in dessen Namen die Vervollständigung ausgeführt wird.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_INCORRECT_STATE
wenn die Bindung bereits abgeschlossen ist.
WEAVE_ERROR_NO_MEMORY
Wenn eine Verbindung erforderlich ist und keine verfügbar ist
Rückgabe
Andernfalls werden alle WEAVE_ERROR-Fehler beim Verbindungsaufbau zurückgegeben.

Verbinden

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Schließen Sie eine TCP-Bindung ab, indem Sie eine hergestellte Verbindung angeben.

Eine neu initialisierte TCP-Bindung kann erst verwendet werden, wenn sie abgeschlossen ist. Normalerweise geschieht dies bei Bedarf, wenn die Anwendung versucht, die Bindung zum Senden von Nachrichten zu nutzen. Es kann jedoch auch explizit durch Bereitstellen einer Weave-Verbindung abgeschlossen werden.

Details
Parameter
[in] aConnection
Ein Zeiger auf eine WeaveConnection, der zum Abschließen der Bindung verwendet wird.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_INCORRECT_STATE
Wenn die Bindung bereits eine Verbindung hat.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn die Verbindung NULL ist.

Abschließen

void Finalize(
  void
)

„Unvollständige“ Bindung und geben Sie sie kostenlos.

Bindungen können einen Status haben, der eine Bereinigung erfordert, z.B. die Verbindungsschließung, die von der Methode Uncomplete() zusätzlich zu einem Zustand verarbeitet wird, der einfach durch die Methode Free() in den Ausgangszustand zurückgesetzt wird. Bei dieser Methode wird, hauptsächlich aus Gründen der Bequemlichkeit, beide aufgerufen.

Weitere Informationen:
Finalize(WEAVE_ERROR)

Abschließen

void Finalize(
  WEAVE_ERROR aErr
)

„Unvollständige“ Bindung und geben Sie sie kostenlos.

Bindungen können einen Status haben, der eine Bereinigung erfordert, z.B. die Verbindungsschließung, die von der Methode Uncomplete() zusätzlich zu einem Zustand verarbeitet wird, der einfach durch die Methode Free() in den Ausgangszustand zurückgesetzt wird. Bei dieser Methode wird, hauptsächlich aus Gründen der Bequemlichkeit, beide aufgerufen.

Details
Parameter
[in] aErr
Dieser Fehlercode gibt die Ursache dieser Anfrage an. Wenn nicht WEAVE_NO_ERROR, könnte die TCP-Verbindung abgebrochen werden.
Weitere Informationen:
Finalize(void)

Kostenlos

void Free(
  void
)

Löschen Sie den Bindungsstatus.

Alle Bindungsstatus werden unbedingt auf ihren ursprünglichen Zustand zurückgesetzt.

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

Erzeugt ein ExchangeContext-Objekt aus einer Binding.

Details
Parameter
[in] aExchangeMgr
Ein Verweis auf den Anzeigenplattform-Manager, von dem ein Kontext angefordert werden soll.
[in] aAppState
Ein ungültiger Verweis auf ein Anwendungsstatusobjekt, das zur späteren Verwendung im Austauschkontext gespeichert wird.
Rückgabe
Ein Zeiger auf ein ExchangeContext-Objekt oder NULL bei einem Fehler.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Behandeln Sie den Fehler einer Bindung.

Diese Methode wird aufgerufen und ruft wiederum Handler höherer Ebenen auf, wenn die Bindung NACH dem Abschluss fehlschlägt, d.h. nachdem CompleteConfirm() mit einem Status aufgerufen wurde, der einen Erfolg angibt.

Details
Parameter
[in] aReport
Ein Verweis auf einen StatusReport, der beschreibt, was schiefgelaufen ist.
Weitere Informationen finden Sie unter
CompleteConfirm(StatusReport &aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Initialisieren Sie eine Binding nur mit einer Knoten-ID.

Dies führt zu einer Bindung mit dem konfigurierten Standardtransport.

Details
Parameter
[in] aPeerNodeId
Ein Verweis auf die 64-Bit-ID des Bindungsziels.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn die Bindung zu wenig angegeben ist.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Initialisieren Sie ein Binding-Objekt anhand der Peer-ID und des Transports.

Details
Parameter
[in] aPeerNodeId
Ein Verweis auf die 64-Bit-Knotenkennung des Bindungsziels.
[in] aTransport
Die Transportspezifikation von WeaveTransportOption.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn die Bindung zu wenig angegeben ist.

Init

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

Initialisieren Sie ein Binding-Objekt zu einem Dienstendpunkt.

So binden Sie eine Bindung an einen bestimmten Endpunkt des Nest-Dienstes. Eine Bindung dieser Art erfordert einen mehrstufigen Abschlussprozess, der das Ausfüllen oder Aktualisieren des lokalen Dienstverzeichnisses beinhalten kann. Dieser Vorgang ist in der Anwendung größtenteils verborgen. Fehler, die später auftreten, werden jedoch möglicherweise über den entsprechenden „Confirm“-Callback übermittelt, und zwar manchmal nach der ursprünglichen Anfrage zur Verwendung (und zum Abschluss) der Bindung.

Details
Parameter
[in] aServiceEpt
Ein Verweis auf die 64-Bit-Kennung für den entsprechenden Weave-Dienstendpunkt.
[in] aServiceMgr
Ein Zeiger auf die Dienstmanagerinstanz, mit der eine Dienststufe gesucht und eine Verbindung zu ihr hergestellt wird.
[in] aAuthMode
Der Authentifizierungsmodus, der für die Verbindung verwendet werden soll.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn die Bindung zu wenig angegeben ist.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Initialisieren Sie ein Binding-Objekt mit WeaveConnection.

Details
Parameter
[in] aConnection
Ein Zeiger auf eine WeaveConnection, die als Grundlage für die Bindung verwendet werden soll.
Rückgabewerte
WEAVE_NO_ERROR
Bei Erfolg.
WEAVE_ERROR_INVALID_ARGUMENT
Wenn die Bindung zu wenig angegeben ist.

IsComplete

bool IsComplete(
  void
)

Prüfen Sie, ob eine Bindung abgeschlossen ist.

Details
Rückgabe
TRUE, wenn er vollständig ist, andernfalls FALSE.
Weitere Informationen:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Die Prüfung einer Bindung ist kostenlos.

"Kostenlos" bedeutet in diesem Kontext einfach "verfügt über eine definierte Peer-Knoten-ID". IsFree() bedeutet, dass Free() aufgerufen wurde und seitdem nicht mehr verwendet wurde.

Details
Rückgabe
„true“, wenn die Bindung kostenlos ist, andernfalls „false“.

UncompleteRequest

void UncompleteRequest(
  void
)

Verursacht, dass eine Bindung unvollständig ist.

Grundsätzlich erhält eine Bindung den Status „Unvollständig“, nachdem diese Methode aufgerufen wurde. Genauer gesagt sollten alle relevanten Status, die nicht in der Bindung selbst enthalten sind, z. B. die TCP-Verbindung, ebenfalls bereinigt werden. Für Anwendungen kann im Rahmen der Bereinigung bei einem Fehler UncompleteRequest() aufgerufen werden.

Weitere Informationen:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Verursacht, dass eine Bindung unvollständig ist.

Grundsätzlich erhält eine Bindung den Status „Unvollständig“, nachdem diese Methode aufgerufen wurde. Genauer gesagt sollten alle relevanten Status, die nicht in der Bindung selbst enthalten sind, z. B. die TCP-Verbindung, ebenfalls bereinigt werden. Für Anwendungen kann im Rahmen der Bereinigung bei einem Fehler UncompleteRequest() aufgerufen werden.

Details
Parameter
[in] aErr
Wenn nicht WEAVE_NO_ERROR, wird die vorhandene Verbindung, falls vorhanden, abgebrochen und nicht ordnungsgemäß geschlossen.
Weitere Informationen:
UncompleteRequest(void)

~Bindung

virtual  ~Binding(
  void
)

Der Destruktor für Binding-Objekte.

Löscht alle internen Status UND schließt, falls erforderlich, offene Verbindungen.