nl::Weave::Binding

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

Capture la cible prévue d'une communication Weave et les informations de configuration associées.

Résumé

Un objet Binding identifie la cible visée d'une communication Weave (également appelée "pair"), ainsi qu'un ensemble de paramètres de configuration décrivant le mode de communication avec le pair. Les liaisons sont indépendantes du protocole d'application parlé entre les deux parties. En tant que tels, ils capturent le « qui » et le "comment" d'une communication, mais pas le « quoi ».

Configuration

Les applications doivent configurer une liaison avec des paramètres spécifiques au type de canal de communication souhaité. Les liaisons sont compatibles avec divers transports réseau, y compris TCP, UDP, UDP avec Weave Reliable Messaging, et Weave sur BLE (WoBLE). Les applications peuvent également demander l'utilisation de mécanismes de sécurité spécifiques pour protéger les messages échangés entre les parties. Il s'agit par exemple des sessions CASE et PASE, ainsi que des clés de groupe d'applications. L'interface de configuration d'une liaison utilise un style d'API déclaratif qui permet aux applications d'indiquer leurs exigences de communication en termes simples.

Pour en savoir plus, consultez la documentation sur Binding::Configuration.

Préparation

Avant que la communication n'ait lieu, une liaison doit être "préparée". La préparation d'une liaison implique d'établir l'état nécessaire à la communication. Cela peut inclure des éléments tels que la résolution de l'adresse réseau du pair, l'établissement d'une connexion réseau et la négociation des clés de sécurité. Une fois configurée par l'application, la liaison se charge de toutes les étapes nécessaires pour préparer la communication et rappelle l'application une fois le processus terminé. De cette façon, les liaisons masquent le mécanisme de communication, ce qui permet aux applications de se concentrer sur les interactions de haut niveau.

Communication

Une fois qu'une liaison a été préparée, elle peut être utilisée. Dans cet état, les applications (ou, plus souvent, le code de couche de protocole travaillant pour le compte d'une application) demandent la liaison pour allouer un contexte d'échange Weave. Le contexte d'échange qui en résulte est préconfiguré pour la communication, ce qui permet à l'application d'initier immédiatement un échange Weave avec le pair. L'application peut continuer à demander des contextes d'échange à partir de la liaison jusqu'à ce que la liaison soit fermée ou jusqu'à ce qu'un événement, comme une défaillance du réseau, mette fin au canal de communication sous-jacent.

Changements d'état des liaisons

Au cours de son utilisation, une liaison fournira des événements d'API à l'application pour l'informer des changements d'état de la liaison. Par exemple, une fois la préparation réussie, l'application reçoit un événement l'informant que la liaison est prête à l'emploi. De même, si le canal de communication sous-jacent échoue, un événement est envoyé à l'application pour l'informer que la liaison n'est plus à l'état "prêt".

Les événements de l'API sont transmis à l'application via une fonction de rappel d'événement fournie lorsque la liaison est allouée.

Durée de vie de Binding

Les liaisons sont comptabilisées pour permettre une utilisation partagée entre plusieurs composants logiciels. Lorsqu'une liaison est allouée, une seule référence à la liaison est créée. L'application est responsable de la publication de cette référence à un moment donné afin que la liaison soit libre pour une réutilisation ultérieure.

Lorsqu'une application est exécutée avec une liaison, elle peut appeler Close() sur la liaison. La référence de l'application à la liaison est alors libérée et toute autre diffusion d'événements d'API est bloquée. Lorsque la dernière référence à une liaison est libérée, elle est automatiquement fermée.

Types publics

@23{
  kGetPeerDescription_MaxLength = nl::Weave::kWeavePeerDescription_MaxLength
}
énum
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
EventType{
  kEvent_ConnectionEstablished = 1,
  kEvent_BindingReady = 2,
  kEvent_PrepareFailed = 3,
  kEvent_BindingFailed = 4,
  kEvent_PrepareRequested = 5,
  kEvent_PASEParametersRequested = 6,
  kEvent_TAKEParametersRequested = 7,
  kEvent_DefaultCheck = 100
}
énum
State énum

Attributs publics

AppState
void *

Fonctions publiques

AddRef(void)
void
Réservez une référence à l'objet de liaison.
AdjustResponseTimeout(ExchangeContext *apExchangeContext) const
Reconfigurez un contexte Exchange existant pour ajuster le délai avant expiration de la réponse.
AllocateRightSizedBuffer(PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize)
BeginConfiguration()
Processus de configuration de la liaison.
CanBePrepared(void) const
bool
Close(void)
void
Fermez l'objet de liaison et libérez une référence.
GetConnection() const
Permet d'obtenir l'objet de connexion Weave associé à la liaison.
GetDefaultResponseTimeout() const
uint32_t
Obtenez le délai avant expiration de la réponse de l'échange par défaut à utiliser lors de la communication avec le pair.
GetDefaultWRMPConfig(void) const
const WRMPConfig &
Obtenez la configuration WRMP par défaut à utiliser lors de la communication avec le pair.
GetEncryptionType(void) const
uint8_t
Récupérez le type de chiffrement des messages à utiliser lors du chiffrement des messages vers/depuis le pair.
GetEventCallback() const
EventCallback
Récupérez la fonction qui sera appelée lorsqu'un événement d'API se produit pour la liaison.
GetExchangeManager() const
GetKeyId(void) const
uint32_t
Récupérez l'identifiant de la clé de chiffrement des messages à utiliser lors du chiffrement des messages vers/depuis le pair.
GetLogId(void) const
uint16_t
Obtenez un ID unique pour la liaison.
GetMaxWeavePayloadSize(const System::PacketBuffer *msgBuf)
uint32_t
Permet d'obtenir la taille maximale de la charge utile Weave pouvant tenir dans le PacketBuffer fourni.
GetPeerDescription(char *buf, uint32_t bufSize) const
void
Construit une chaîne décrivant le nœud pair et les informations de connexion / adresse associées.
GetPeerIPAddress(nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const
void
Récupérez les informations d'adresse IP du pair, le cas échéant.
GetPeerNodeId(void) const
uint64_t
Récupère l'ID du nœud du pair de liaison.
GetProtocolLayerCallback(EventCallback & callback, void *& state) const
void
GetState(void) const
State
Récupérez l'état actuel de la liaison.
IsAuthenticMessageFromPeer(const WeaveMessageInfo *msgInfo)
bool
Déterminez si un message entrant donné provient du pair configuré et s'il est correctement authentifié.
IsConnectionTransport() const
bool
IsPreparing(void) const
bool
IsReady(void) const
bool
IsUDPTransport() const
bool
IsUnreliableUDPTransport() const
bool
IsWRMTransport() const
bool
NewExchangeContext(ExchangeContext *& appExchangeContext)
Allouez un nouveau contexte Exchange pour communiquer avec le pair qui est la cible de la liaison.
Release(void)
void
Libérez une référence à l'objet de liaison.
RequestPrepare()
Demandez à l'application de configurer et de préparer la liaison.
Reset(void)
void
Rétablissez la liaison à un état non configuré.
SetDefaultResponseTimeout(uint32_t msec)
void
Définissez le délai avant expiration de la réponse de l'échange par défaut à utiliser lors de la communication avec le pair.
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
void
Définissez la configuration WRMP à utiliser par défaut lors de la communication avec le pair.
SetEventCallback(EventCallback aEventCallback)
void
Définissez la fonction définie par l'application à appeler lorsqu'un événement d'API se produit pour la liaison.
SetProtocolLayerCallback(EventCallback callback, void *state)
void
Définissez une fonction de rappel d'événement pour le code de couche de protocole à l'aide de la liaison pour le compte d'une application.

Fonctions statiques publiques

DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
Gestionnaire par défaut pour la liaison d'événements d'API

Classes

nl::Weave::Binding::Configuration

Fournit une interface de style déclarative pour configurer et préparer un objet Binding.

Structs

nl::Weave::Binding::InEventParam

Paramètres d'entrée à un événement d'API Binding.

nl::Weave::Binding::OutEventParam

Paramètres de sortie à un événement d'API Binding.

Types publics

@23

 @23
Propriétés
kGetPeerDescription_MaxLength

Longueur maximale de la chaîne (caractère NUL compris) renvoyée par GetPeerDescription().

EventCallback

void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

EventType

 EventType
Propriétés
kEvent_BindingFailed

La liaison a échoué et ne peut plus être utilisée pour communiquer avec le pair.

kEvent_BindingReady

L'action de préparation de la liaison a réussi, et la liaison peut maintenant être utilisée pour communiquer avec le pair.

kEvent_ConnectionEstablished

La connexion Weave demandée a été établie.

kEvent_DefaultCheck

Permet de vérifier que la gestion des événements par défaut est correcte dans l'application.

kEvent_PASEParametersRequested

L'application est invitée à fournir les paramètres à utiliser lors de l'établissement d'une session PASE.

kEvent_PrepareFailed

Échec de l'action de préparation de la liaison.

kEvent_PrepareRequested

L'application doit configurer et préparer la liaison en vue de son utilisation par la pile réseau.

kEvent_TAKEParametersRequested

L'application est invitée à fournir les paramètres à utiliser lors de l'établissement d'une session Take.

État

 State

Attributs publics

AppState

void * AppState

Fonctions publiques

AddRef

void AddRef(
  void
)

Réservez une référence à l'objet de liaison.

AdjustResponseTimeout

WEAVE_ERROR AdjustResponseTimeout(
  ExchangeContext *apExchangeContext
) const 

Reconfigurez un contexte Exchange existant pour ajuster le délai avant expiration de la réponse.

Détails
Paramètres
[in] apExchangeContext
Un pointeur vers un objet de contexte Exchange à reconfigurer

AllocateRightSizedBuffer

WEAVE_ERROR AllocateRightSizedBuffer(
  PacketBuffer *& buf,
  const uint32_t desiredSize,
  const uint32_t minSize,
  uint32_t & outMaxPayloadSize
)

BeginConfiguration

Configuration BeginConfiguration()

Processus de configuration de la liaison.

Les applications doivent appeler BeginConfiguration() pour configurer la liaison avant de la préparer pour la communication avec le pair.

Détails
Renvoie
Un objet Binding::Configuration qui peut être utilisé pour configurer la liaison.

CanBePrepared

bool CanBePrepared(
  void
) const 

Fermer

void Close(
  void
)

Fermez l'objet de liaison et libérez une référence.

Lorsqu'elle est appelée, cette méthode fait passer la liaison à l'état "Fermée". Toutes les actions de préparation en cours pour la liaison sont annulées et toutes les ressources de communication externes détenues par la liaison sont libérées.

L'appel de Close() décrémente le nombre de références associé à la liaison, ce qui libère l'objet si le nombre de références passe à zéro.

GetConnection

WeaveConnection * GetConnection() const 

Permet d'obtenir l'objet de connexion Weave associé à la liaison.

Détails
Renvoie
Pointeur vers un objet WeaveConnection, ou valeur NULL si aucune connexion n'est associée à la liaison.

GetDefaultResponseTimeout

uint32_t GetDefaultResponseTimeout() const 

Obtenez le délai avant expiration de la réponse de l'échange par défaut à utiliser lors de la communication avec le pair.

Détails
Renvoie
Délai avant expiration de la réponse en ms.

GetDefaultWRMPConfig

const WRMPConfig & GetDefaultWRMPConfig(
  void
) const 

Obtenez la configuration WRMP par défaut à utiliser lors de la communication avec le pair.

Détails
Renvoie
Référence à une structure WRMPConfig contenant les valeurs de configuration par défaut.

GetEncryptionType

uint8_t GetEncryptionType(
  void
) const 

Récupérez le type de chiffrement des messages à utiliser lors du chiffrement des messages vers/depuis le pair.

GetEventCallback

EventCallback GetEventCallback() const 

Récupérez la fonction qui sera appelée lorsqu'un événement d'API se produit pour la liaison.

Détails
Renvoie
Pointeur vers la fonction de rappel.

GetExchangeManager

WeaveExchangeManager * GetExchangeManager() const 

GetKeyId

uint32_t GetKeyId(
  void
) const 

Récupérez l'identifiant de la clé de chiffrement des messages à utiliser lors du chiffrement des messages vers/depuis le pair.

GetLogId

uint16_t GetLogId(
  void
) const 

Obtenez un ID unique pour la liaison.

GetMaxWeavePayloadSize

uint32_t GetMaxWeavePayloadSize(
  const System::PacketBuffer *msgBuf
)

Permet d'obtenir la taille maximale de la charge utile Weave pouvant tenir dans le PacketBuffer fourni.

Pour UDP, y compris UDP avec WRM, la taille maximale de la charge utile renvoyée garantit que le message Weave résultant ne dépassera pas la MTU UDP configurée.

De plus, cette méthode garantit que la charge utile Weave ne dépassera pas le PacketBuffer fourni.

Détails
Paramètres
[in] msgBuf
Pointeur vers le PacketBuffer dans lequel la charge utile du message sera écrite.
Renvoie
Taille maximale de la charge utile Weave.

GetPeerDescription

void GetPeerDescription(
  char *buf,
  uint32_t bufSize
) const 

Construit une chaîne décrivant le nœud pair et les informations de connexion / adresse associées.

Détails
Paramètres
[in] buf
Pointeur vers un tampon dans lequel la chaîne doit être écrite. La taille du tampon fourni doit être au moins égale à kGetPeerDescription_MaxLength. Si un tampon plus petit est fourni, la chaîne sera tronquée pour s'adapter. Le résultat inclut un caractère de fin NUL dans tous les cas.
[in] bufSize
Taille du tampon indiqué par le tampon.

GetPeerIPAddress

void GetPeerIPAddress(
  nl::Inet::IPAddress & address,
  uint16_t & port,
  InterfaceId & interfaceId
) const 

Récupérez les informations d'adresse IP du pair, le cas échéant.

La disponibilité des informations sur l'adresse IP du pair dépend de l'état et de la configuration de la liaison. Les informations sur les adresses IP ne sont disponibles que lors de l'utilisation d'un transport basé sur l'adresse IP (TCP, UDP ou UDP avec WRMP). Avant le début de la préparation, les informations d'adresse ne sont disponibles que si elles ont été définies expressément par l'application lors de la configuration. Pendant la phase de préparation, les informations sur les adresses sont disponibles une fois la préparation de l'adresse terminée (par exemple, une fois la résolution DNS terminée). Une fois la liaison prête, les informations d'adresse restent disponibles jusqu'à ce que la liaison soit réinitialisée.

Détails
Paramètres
[out] address
Référence à un objet IPAddress qui recevra l'adresse IP du pair. Si les informations sur l'adresse IP du pair ne sont pas disponibles, cette valeur est définie sur IPAddress::Any.
[out] port
Référence à un entier qui recevra le numéro de port du pair. Si les informations sur l'adresse IP du pair ne sont pas disponibles, cette valeur n'est pas définie.
[out] interfaceId
Référence à un entier qui reçoit l'identifiant de l'interface réseau via laquelle le pair peut être atteint. Si les informations sur l'adresse IP du pair ne sont pas disponibles, cette valeur n'est pas définie.

GetPeerNodeId

uint64_t GetPeerNodeId(
  void
) const 

Récupère l'ID du nœud du pair de liaison.

Valide uniquement une fois que l'objet de liaison a été préparé.

Détails
Renvoie
ID du nœud Weave du pair

GetProtocolLayerCallback

void GetProtocolLayerCallback(
  EventCallback & callback,
  void *& state
) const 

GetState

State GetState(
  void
) const 

Récupérez l'état actuel de la liaison.

Détails
Renvoie
État de liaison.

IsAuthenticMessageFromPeer

bool IsAuthenticMessageFromPeer(
  const WeaveMessageInfo *msgInfo
)

Déterminez si un message entrant donné provient du pair configuré et s'il est correctement authentifié.

Cette méthode permet de confirmer les détails suivants concernant le message donné:

  • Le message provient du nœud pair de la liaison
  • Le message a été reçu sur le même type de transport que la liaison. Si le message a été reçu sur une connexion, la méthode confirme également qu'il a été reçu sur la connexion exacte associée à la liaison.
  • La clé et le type de chiffrement utilisés pour chiffrer le message correspondent à ceux configurés dans la liaison. Pour les liaisons configurées sans utilisation de sécurité, la méthode confirme que le message entrant n'est PAS chiffré.

Cette méthode est destinée à être utilisée dans des protocoles tels que WDM, où les pairs peuvent lancer spontanément des échanges vers le nœud local après un échange initial du nœud au pair. Dans ce cas, la méthode permet au nœud local de confirmer que le message entrant non sollicité a été envoyé par le pair associé. (Bien sûr, pour les liaisons configurées sans utiliser le chiffrement des messages, cette assertion ne fournit aucune valeur du point de vue de la sécurité. Il confirme simplement que l'ID du nœud expéditeur et les types de transport correspondent.)

Notez que si la liaison n'est pas à l'état "Ready", cette méthode renvoie toujours la valeur "false".

Détails
Paramètres
[in] msgInfo
Informations sur le message Weave pour le message entrant.
Renvoie
"True" si le message provient de l'homologue de manière authentique.

IsConnectionTransport

bool IsConnectionTransport() const 

IsPreparing

bool IsPreparing(
  void
) const 

Détails
Renvoie
"True" si la liaison est en cours de préparation.

IsReady

bool IsReady(
  void
) const 

Détails
Renvoie
"True" si la liaison est à l'état "Ready" (Prête).

IsUDPTransport

bool IsUDPTransport() const 

IsUnreliableUDPTransport

bool IsUnreliableUDPTransport() const 

IsWRMTransport

bool IsWRMTransport() const 

NewExchangeContext

WEAVE_ERROR NewExchangeContext(
  ExchangeContext *& appExchangeContext
)

Allouez un nouveau contexte Exchange pour communiquer avec le pair qui est la cible de la liaison.

Détails
Paramètres
[out] appExchangeContext
Référence à un pointeur qui recevra l'objet de contexte Exchange nouvellement alloué. Le pointeur sera défini sur NULL en cas d'échec de la méthode.
Valeurs renvoyées
WEAVE_NO_ERROR
Si le contexte de la place de marché a bien été alloué.
WEAVE_ERROR_NO_MEMORY
Si aucune mémoire n'était disponible pour allouer le contexte de l'échange.
WEAVE_ERROR_INCORRECT_STATE
Si la liaison n'est pas à l'état "Ready" (Prête).
other
Autres erreurs liées à la configuration du contexte de l'échange en fonction de la configuration de la liaison.

Version

void Release(
  void
)

Libérez une référence à l'objet de liaison.

S'il n'y a plus de références à l'objet de liaison, la liaison est fermée et libérée.

RequestPrepare

WEAVE_ERROR RequestPrepare()

Demandez à l'application de configurer et de préparer la liaison.

Le code de la couche de protocole peut utiliser cette méthode sur une liaison qui n'a pas été configurée ou qui a échoué, afin de déclencher un événement au niveau de l'application (kEvent_PrepareRequested) pour lui demander de configurer et de préparer la liaison en vue de son utilisation.

Cette méthode ne peut être appelée que sur des liaisons dont l'état est "Non configuré" ou "Échec".

Si l'application n'est pas compatible avec la configuration/préparation de liaisons à la demande, la méthode échoue avec l'erreur WEAVE_ERROR_NOT_IMPLEMENTED.

Réinitialiser

void Reset(
  void
)

Rétablissez la liaison à un état non configuré.

Lorsque la fonction Reset() est appelée, toutes les actions de préparation en cours pour la liaison sont annulées et toutes les ressources de communication externes détenues par la liaison sont libérées. Reset() place la liaison à l'état "Non configurée", après quoi elle peut être configurée et préparée à nouveau.

La méthode Reset() ne modifie pas le nombre de références de la liaison.

SetDefaultResponseTimeout

void SetDefaultResponseTimeout(
  uint32_t msec
)

Définissez le délai avant expiration de la réponse de l'échange par défaut à utiliser lors de la communication avec le pair.

Détails
Paramètres
[in] timeout
Nouveau délai avant expiration de la réponse en ms.

SetDefaultWRMPConfig

void SetDefaultWRMPConfig(
  const WRMPConfig & wrmpConfig
)

Définissez la configuration WRMP à utiliser par défaut lors de la communication avec le pair.

Détails
Paramètres
[in] aWRMPConfig
Référence à une structure WRMPConfig contenant la nouvelle configuration par défaut.

SetEventCallback

void SetEventCallback(
  EventCallback aEventCallback
)

Définissez la fonction définie par l'application à appeler lorsqu'un événement d'API se produit pour la liaison.

Détails
Paramètres
[in] aEventCallback
Pointeur vers la fonction de rappel.

SetProtocolLayerCallback

void SetProtocolLayerCallback(
  EventCallback callback,
  void *state
)

Définissez une fonction de rappel d'événement pour le code de couche de protocole à l'aide de la liaison pour le compte d'une application.

Cette fonction sera appelée en plus de la fonction de rappel définie par l'application lorsque des événements d'API se produisent pour la liaison.

Détails
Paramètres
[in] callback
Pointeur vers la fonction de rappel.
[in] state
Pointeur vers un objet d'état qui est fourni au code de la couche de protocole lorsqu'un rappel de couche de protocole se produit.

Fonctions statiques publiques

DefaultEventHandler

void DefaultEventHandler(
  void *apAppState,
  EventType aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

Gestionnaire par défaut pour la liaison d'événements d'API

Les applications doivent appeler cette méthode pour tous les événements d'API qu'elles ne reconnaissent ou ne gèrent pas. Les paramètres fournis doivent être identiques à ceux transmis par la liaison à la fonction de gestionnaire d'événements de l'application.

Détails
Paramètres
[in] apAppState
Pointeur vers les informations d'état définies par l'application associées à la liaison.
[in] aEvent
ID de l'événement transmis par le rappel d'événement
[in] aInParam
Référence des paramètres d'événement d'entrée transmis par le rappel d'événement
[in] aOutParam
Référence des paramètres d'événement de sortie transmis par le rappel d'événement