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 ».
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{
|
énum |
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
|
EventType{
|
é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:: |
Fournit une interface de style déclarative pour configurer et préparer un objet Binding. |
Structs |
|
---|---|
nl:: |
Paramètres d'entrée à un événement d'API Binding. |
nl:: |
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 |
|
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 |
|
||
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 |
|
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 |
|
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 |
|
||
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 |
|
||||||||
Valeurs renvoyées |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|