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 d'une communication Weave (également appelée "peer") 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. Ainsi, 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 prennent en charge toute une gamme de transports réseau, y compris TCP, UDP, UDP avec Weave Expect Messaging et Weave over 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 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 la communication, une liaison doit être "préparée". La préparation d'une liaison implique d'établir l'état nécessaire à la communication. Il peut s'agir de résoudre l'adresse réseau du pair, d'établir une connexion réseau et de négocier des clés de sécurité. Une fois configurée par l'application, la liaison effectue toutes les étapes nécessaires à la préparation de la communication, en rappelant l'application une fois le processus terminé. De cette manière, 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 Binding a été préparée, elle peut être utilisée. Dans cet état, les applications (ou, plus généralement, 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 qu'un événement (par exemple, une défaillance du réseau) mette fin au canal de communication sous-jacent.
Changements d'état de Liaison
Au cours de son utilisation, une liaison fournira des événements d'API à l'application pour l'informer des modifications de l'état de la liaison. Par exemple, une fois la préparation terminée, l'application reçoit un événement l'informant que la liaison est prête à être utilisée. 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 d'API sont transmis à l'application via une fonction de rappel d'événement fournie lorsque la Binding est allouée.
Durée de vie de Binding
Les liaisons sont comptabilisées comme des références pour permettre une utilisation partagée entre plusieurs composants logiciels. Lorsqu'une liaison est allouée, une référence unique à la liaison est créée. L'application est tenue de publier cette référence à l'avenir afin que la liaison soit libre pour une réutilisation ultérieure.
Lorsqu'une application a terminé avec une Binding, elle peut appeler Close() sur la liaison. La référence de l'application à la Liaison est alors libérée et toute diffusion ultérieure 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{
|
enum |
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
|
EventType{
|
enum |
State
|
enum |
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()
|
En cours 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
|
Obtenez l'objet de connexion Weave associé à la liaison.
|
GetDefaultResponseTimeout() const
|
uint32_t
Permet d'obtenir le délai avant expiration par défaut de la réponse de l'échange à 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 pour chiffrer les messages à destination/en provenance du pair.
|
GetEventCallback() const
|
EventCallback
Obtenez 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'ID de la clé de chiffrement des messages à utiliser lors du chiffrement des messages vers/depuis le pair.
|
GetLogId(void) const
|
uint16_t
Obtenez un identifiant 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 PaquetBuffer fourni.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
Construit une chaîne décrivant le nœud pair et les informations de connexion ou d'adresse qui lui sont associées.
|
GetPeerIPAddress(nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const
|
void
Récupérez les informations sur l'adresse IP du pair, le cas échéant.
|
GetPeerNodeId(void) const
|
uint64_t
Récupérez l'ID de 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 particulier 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 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 par défaut de la réponse de l'échange à utiliser lors de la communication avec le pair.
|
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
|
void
Définissez la configuration WRMP par défaut à utiliser 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 la 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 les événements de liaison de l'API
|
Classes |
|
---|---|
nl:: |
Fournit une interface de style déclaratif permettant de configurer et de préparer un objet Binding. |
Structs |
|
---|---|
nl:: |
Paramètres d'entrée pour un événement d'API Binding. |
nl:: |
Paramètres de sortie d'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 sur 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 les événements par défaut sont correctement gérés 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 sur la liaison. |
kEvent_PrepareRequested
|
L'application est invitée à 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 de la 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()
En cours de configuration de la liaison.
Les applications doivent appeler BeginConfiguration() pour configurer la liaison avant de la préparer à communiquer 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. Toute action de préparation en cours pour la liaison est annulée et toutes les ressources de communication externe détenues par la liaison sont libérées.
Appeler Close() décrémente le nombre de références associé à la liaison, libérant l'objet si le nombre de références passe à zéro.
GetConnection
WeaveConnection * GetConnection() const
Obtenez 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
Permet d'obtenir le délai avant expiration par défaut de la réponse de l'échange à utiliser lors de la communication avec le pair.
Détails | |
---|---|
Renvoie |
Délai avant expiration de la réponse en millisecondes.
|
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 pour chiffrer les messages à destination/en provenance du pair.
GetEventCallback
EventCallback GetEventCallback() const
Obtenez la fonction qui sera appelée lorsqu'un événement d'API se produit pour la liaison.
Détails | |
---|---|
Renvoie |
Un pointeur vers la fonction de rappel.
|
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
Récupérez l'ID 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 identifiant 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 PaquetBuffer fourni.
Pour UDP, y compris UDP avec WRM, la taille de charge utile maximale renvoyée garantit que le message Weave généré ne dépassera pas le MTU UDP configuré.
De plus, cette méthode garantit que la charge utile Weave ne dépasse pas le PaquetBuffer 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 ou d'adresse qui lui sont associées.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
GetPeerIPAddress
void GetPeerIPAddress( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId ) const
Récupérez les informations sur l'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 d'adresse 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é expressément définies par l'application lors de la configuration. Au cours de la phase de préparation, des informations d'adresse sont disponibles une fois la préparation de l'adresse terminée (par exemple, une fois la résolution DNS terminée). Une fois que la Liaison est 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érez l'ID de 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 particulier provient du pair configuré et s'il est correctement authentifié.
Cette méthode permet de vérifier les informations suivantes concernant le message donné:
- Le message provient du nœud pair de la liaison
- Le message a été reçu via le même type de transport que la liaison. Si le message a été reçu via une connexion, la méthode confirme également que le message a été reçu via la connexion exacte associée à la liaison.
- La clé de chiffrement et le type utilisés pour chiffrer le message correspondent à ceux configurés dans la liaison. Pour les liaisons configurées sans utiliser la sécurité, la méthode confirme que le message entrant n'est PAS chiffré.
Cette méthode est destinée aux protocoles tels que WDM, où les pairs peuvent initier spontanément des échanges vers le nœud local après un échange initial entre le nœud et le pair. Dans ce cas, la méthode permet au nœud local de confirmer que le message entrant non sollicité a bien été envoyé par le pair associé. Bien entendu, pour les liaisons configurées sans chiffrement des messages, cette assertion ne fournit aucune valeur du point de vue de la sécurité. Elle confirme simplement que l'ID du nœud émetteur et les types de transport correspondent.)
Notez que si la liaison n'est pas à l'état prêt, cette méthode renvoie toujours la valeur "false".
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
"True" si le message provient de manière authentique du pair.
|
IsConnectionTransport
bool IsConnectionTransport() const
IsPreparing
bool IsPreparing( void ) const
Détails | |
---|---|
Renvoie |
Vrai si la liaison est en cours de préparation.
|
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 cible de la liaison.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs de retour |
|
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 vers l'application (kEvent_PrepareRequested) pour qu'elle configure et prépare la liaison en vue de son utilisation.
Cette méthode ne peut être appelée que sur des liaisons dont l'état est NotConfigured ou Failed.
Si l'application ne prend pas en charge la configuration/préparation à la demande des liaisons, la méthode échouera avec WEAVE_ERROR_NOT_IMPLEMENTED.
Réinitialiser
void Reset( void )
Rétablissez la liaison à un état non configuré.
Lorsque la méthode Reset() est appelée, toutes les actions de préparation en cours pour la liaison sont annulées et toutes les ressources de communication externe détenues par la liaison sont libérées. Reset() place la liaison à l'état "Non configuré", après quoi elle peut être configurée et préparée à nouveau.
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 par défaut de la réponse de l'échange à utiliser lors de la communication avec le pair.
Détails | |||
---|---|---|---|
Paramètres |
|
SetDefaultWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
Définissez la configuration WRMP par défaut à utiliser 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 la 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 les événements de liaison de l'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 |
|