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

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

La classe Binding gère l'état des communications pour le compte d'une entité d'application à l'aide de Weave.

Résumé

Lorsqu'une application souhaite utiliser Weave pour communiquer avec une entité distante, il existe de nombreuses options. La classe Binding corre ces options et les organise de manière à faciliter les choses et les plus difficiles à exploiter. Les options disponibles sont les suivantes:

  • une communication UDP unicast avec un nœud pair connu.
  • Diffusion UDP avec "n'importe quel" nœud.
  • une communication WRMP unicast avec un nœud pair connu.
  • les communications TCP avec un nœud pair connu.
  • les communications TCP avec un point de terminaison de service connu à l'aide d'une instance de gestionnaire de service pour la configuration.
  • les communications TCP basées sur une connexion préétablie.

Constructeurs et destructeurs

Binding(void)
Constructeur par défaut pour les objets Binding.
~Binding(void)
Destructeur des objets Binding.

Types publics

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
enum
Ensemble des états de l'objet Binding.

Attributs publics

mAuthMode
WeaveAuthMode
Mode d'authentification Weave à utiliser.
mConnection
Pointeur vers la connexion Weave actuellement utilisée dans cette liaison.
mEngine
Pointeur vers l'objet ProtocolEngine associé à cette liaison.
mPeerNodeId
uint64_t
ID de nœud de 64 bits de la cible de liaison.
mServiceMgr
Pointeur vers l'objet ServiceManager (facultatif) à utiliser pour effectuer cette liaison.
mState
uint8_t
État actuel de l'objet Binding.
mTransport
uint8_t
Transport à utiliser pour effectuer cette liaison.

Fonctions publiques

CompleteConfirm(WeaveConnection *aConnection)
void
Gérer la confirmation d'une requête de liaison
CompleteConfirm(StatusReport & aReport)
void
Gérer l'échec d'une requête de liaison
CompleteConfirm(void)
void
Gérer la confirmation d'une requête de liaison
CompleteRequest(ProtocolEngine *aEngine)
Demander la finalisation d'une liaison.
Connect(WeaveConnection *aConnection)
Effectuez une liaison TCP en fournissant une connexion terminée.
Finalize(void)
void
« Incomplète » une liaison et la libérer.
Finalize(WEAVE_ERROR aErr)
void
« Incomplète » une liaison et la libérer.
Free(void)
void
Effacez l'état de liaison.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Produisez un objet ExchangeContext à partir d'une liaison.
IncompleteIndication(StatusReport & aReport)
void
Gérer l'échec d'une liaison
Init(const uint64_t & aPeerNodeId)
Initialisez une liaison avec seulement un ID de nœud.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Initialisez un objet Binding en fonction de l'ID d'appairage et du transport.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Initialisez un objet Liaison sur un point de terminaison de service.
Init(WeaveConnection *aConnection)
Initialisez un objet Binding avec une WeaveConnection.
IsComplete(void)
bool
Vérifiez si une liaison est terminée.
IsFree(void)
bool
Vérifiez qu'une liaison est sans frais.
UncompleteRequest(void)
void
Entraîne l'incapacité d'une liaison.
UncompleteRequest(WEAVE_ERROR aErr)
void
Entraîne l'incapacité d'une liaison.

Types publics

@165

 @165

Ensemble des états de l'objet Binding.

Propriétés
kState_Complete

État d'une liaison terminée et prête à l'emploi.

kState_Completing

État d'une liaison en cours d'exécution.

kState_Incomplete

État initial (et final) d'une liaison.

Attributs publics

mAuthMode

WeaveAuthMode mAuthMode

Mode d'authentification Weave à utiliser.

(LECTURE_SEULE)

Il s'agit du mode d'authentification utilisé dans toutes les communications régies par cette liaison.

mConnection

WeaveConnection * mConnection

Pointeur vers la connexion Weave actuellement utilisée dans cette liaison.

(LECTURE SEULE)

Les liaisons TCP peuvent être initialisées avec une connexion dès le départ ou en allouant une au moment de la finalisation.

mEngine

ProtocolEngine * mEngine

Pointeur vers l'objet ProtocolEngine associé à cette liaison.

Une liaison est généralement réalisée par rapport à un moteur de protocole particulier, principalement utilisé pour accéder à MessageLayer. C'est ici que nous en assurons le suivi.

mPeerNodeId

uint64_t mPeerNodeId

ID de nœud de 64 bits de la cible de liaison.

(LECTURE SEULE)

Chaque liaison possède une entité cible, nommée ici. En plus de l'ID de nœud Weave, vous pouvez nommer un point de terminaison de service.

mServiceMgr

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

Pointeur vers l'objet ServiceManager (facultatif) à utiliser pour effectuer cette liaison.

(LECTURE SEULE)

Lors de la liaison au service Weave, un ID de point de terminaison de service 64 bits peut être fourni au moment de l'initialisation à la place de l'ID de nœud Weave. Dans ce cas, un objet ServiceManager est également requis pour effectuer la liaison. Les liaisons TCP ou WRMP normales ne nécessitent pas d'objet ServiceManager.

mState

uint8_t mState

État actuel de l'objet Binding.

Une seule opération "complete" peut être exécutée à la fois. Dans tous les cas, si vous demandez à terminer une liaison terminée, elle appelle immédiatement la fonction de confirmation. La variable d'état ci-dessous suit l'état actuel et agit comme un verrouillage.

mTransport

uint8_t mTransport

Transport à utiliser pour effectuer cette liaison.

(LECTURE SEULE)

Les valeurs possibles pour mTransport sont définies dans DMConstants.h.

Fonctions publiques

Liaison

 Binding(
  void
)

Constructeur par défaut pour les objets Binding.

Efface tout l'état interne.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Gérer la confirmation d'une requête de liaison

Détails
Paramètres
[in] aConnection
Pointeur vers un WeaveConnection actif vers la cible de la liaison.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Gérer l'échec d'une requête de liaison

Détails
Paramètres
[in] aReport
Référence à un objet StatusReport décrivant l'échec.

CompleteConfirm

void CompleteConfirm(
  void
)

Gérer la confirmation d'une requête de liaison

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Demander la finalisation d'une liaison.

L'achèvement d'une liaison, au moins pour les liaisons nécessitant TCP, est réalisé par rapport à un objet ProtocolEngine particulier, qui donne accès à une instance ExchangeManager.

Détails
Paramètres
[in] aEngine
Pointeur vers un objet ProtocolEngine au nom duquel la finalisation est effectuée.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_INCORRECT_STATE
si la liaison est déjà en cours.
WEAVE_ERROR_NO_MEMORY
Si une connexion est requise et qu'aucune n'est disponible
Renvoie
Sinon, toute erreur WEAVE_ERROR est renvoyée lors de la tentative de connexion.

Associer

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Effectuez une liaison TCP en fournissant une connexion terminée.

Une liaison TCP nouvellement initialisée ne peut pas être utilisée tant qu'elle n'est pas terminée. Normalement, cette opération est effectuée à la demande lorsque l'application tente d'utiliser la liaison pour envoyer des messages, mais elle peut également être explicitement effectuée en fournissant une connexion Weave.

Détails
Paramètres
[in] aConnection
Pointeur vers un élément WeaveConnection utilisé pour effectuer la liaison.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_INCORRECT_STATE
Si la liaison possède déjà une connexion.
WEAVE_ERROR_INVALID_ARGUMENT
Si la connexion est NULL.

Finaliser

void Finalize(
  void
)

« Incomplète » une liaison et la libérer.

Les liaisons peuvent avoir un état qui doit être nettoyé, par exemple une fermeture de connexion gérée par la méthode Uncomplete(), en plus d'un état qui est simplement rétabli à son état initial par la méthode Free(). Cette méthode, essentiellement par souci de commodité, invoque les deux.

Voir aussi:
Finalize(WEAVE_ERROR)

Finaliser

void Finalize(
  WEAVE_ERROR aErr
)

« Incomplète » une liaison et la libérer.

Les liaisons peuvent avoir un état qui doit être nettoyé, par exemple une fermeture de connexion gérée par la méthode Uncomplete(), en plus d'un état qui est simplement rétabli à son état initial par la méthode Free(). Cette méthode, essentiellement par souci de commodité, invoque les deux.

Détails
Paramètres
[in] aErr
Ce code d'erreur indique la cause de cette requête. Si la valeur n'est pas WEAVE_NO_ERROR, la connexion TCP peut être annulée.
Voir aussi:
Finalize(void)

Sans frais

void Free(
  void
)

Effacez l'état de liaison.

Renvoyer sans condition tous les états de liaison à leur état d'origine.

GetExchangeCtx

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

Produisez un objet ExchangeContext à partir d'une liaison.

Détails
Paramètres
[in] aExchangeMgr
Pointeur vers le gestionnaire de place de marché à partir duquel demander un contexte.
[in] aAppState
Pointeur vide vers un objet d'état de l'application à stocker dans le contexte de l'échange pour une utilisation ultérieure.
Renvoie
un pointeur vers un objet ExchangeContext, ou la valeur NULL en cas d'échec.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Gérer l'échec d'une liaison

Cette méthode est appelée et, à son tour, appelle des gestionnaires de couche supérieure lorsque la liaison échoue APRÈS l'achèvement, c'est-à-dire après l'appel de CompleteConfirm() dont l'état indique la réussite.

Détails
Paramètres
[in] aReport
Référence à un StatusReport décrivant le problème.
Voir aussi:
CompleteConfirm(StatusReport &aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Initialisez une liaison avec seulement un ID de nœud.

Cela se traduit par une liaison avec le transport par défaut configuré.

Détails
Paramètres
[in] aPeerNodeId
Une référence à l'ID 64 bits de la cible de la liaison.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_INVALID_ARGUMENT
Si la liaison est sous-spécifiée.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Initialisez un objet Binding en fonction de l'ID d'appairage et du transport.

Détails
Paramètres
[in] aPeerNodeId
Référence à l'identifiant de nœud de 64 bits de la cible de la liaison.
[in] aTransport
Spécification de transport, de WeaveTransportOption.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_INVALID_ARGUMENT
Si la liaison est sous-spécifiée.

Init

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

Initialisez un objet Liaison sur un point de terminaison de service.

Il vous permet de vous associer à un point de terminaison spécifique dans le service Nest. Une liaison de ce type nécessite un processus d'exécution en plusieurs étapes, qui peut inclure le remplissage ou la mise à jour du cache du répertoire de services local. La plupart du temps, ce processus est masqué pour l'application, mais cela signifie que les erreurs survenant plus tard dans le processus peuvent être transmises, normalement via le rappel de confirmation approprié, après, parfois longtemps après, la requête initiale pour utiliser (et terminer) la liaison.

Détails
Paramètres
[in] aServiceEpt
Référence à l'identifiant 64 bits du point de terminaison du service Weave concerné.
[in] aServiceMgr
Pointeur vers l'instance du gestionnaire de services à utiliser pour rechercher un niveau de service et vous y connecter.
[in] aAuthMode
Mode d'authentification à utiliser pour la connexion.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_INVALID_ARGUMENT
Si la liaison est sous-spécifiée.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Initialisez un objet Binding avec une WeaveConnection.

Détails
Paramètres
[in] aConnection
Pointeur vers une classe WeaveConnection à utiliser comme base pour la liaison.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_INVALID_ARGUMENT
Si la liaison est sous-spécifiée.

IsComplete

bool IsComplete(
  void
)

Vérifiez si une liaison est terminée.

Détails
Renvoie
"true" s'il est terminé, "false" dans le cas contraire.
Voir aussi:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Vérifiez qu'une liaison est sans frais.

Dans ce contexte, "Sans frais" signifie simplement "dispose d'un ID de nœud pair défini". IsFree() doit être considéré comme un message indiquant que Free() a été appelé et n'a pas été utilisé depuis.

Détails
Renvoie
"true" si la liaison est libre, ou "false" dans le cas contraire.

UncompleteRequest

void UncompleteRequest(
  void
)

Entraîne l'incapacité d'une liaison.

Fondamentalement, une liaison doit être à l'état "incomplet" après que cette méthode a été appelée sur elle, mais, plus subtilement, tout état pertinent ne figurant pas dans la liaison elle-même, par exemple une connexion TCP, doit également être nettoyé. Les applications peuvent envisager d'appeler UncompleteRequest() dans le cadre du nettoyage en cas d'erreur.

Voir aussi:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Entraîne l'incapacité d'une liaison.

Fondamentalement, une liaison doit être à l'état "incomplet" après que cette méthode a été appelée sur elle, mais, plus subtilement, tout état pertinent ne figurant pas dans la liaison elle-même, par exemple une connexion TCP, doit également être nettoyé. Les applications peuvent envisager d'appeler UncompleteRequest() dans le cadre du nettoyage en cas d'erreur.

Détails
Paramètres
[in] aErr
Si la valeur n'est pas WEAVE_NO_ERROR, la connexion existante, le cas échéant, sera abandonnée au lieu d'être fermée normalement.
Voir aussi:
UncompleteRequest(void)

~Liaison

virtual  ~Binding(
  void
)

Destructeur des objets Binding.

Efface tout l'état interne ET, si nécessaire, ferme les connexions ouvertes.