nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager

#include <src/lib/profiles/service-directory/ServiceDirectory.h>

Objet gestionnaire du répertoire de services Weave.

Résumé

Le gestionnaire de services Weave est l’interface principale des applications vers le service d’annuaire. Ainsi, il masque les complications inhérentes à la recherche de l'entrée d'annuaire associée à un point de terminaison de service, à la recherche DNS d'un ou plusieurs des noms d'hôte trouvés, aux tentatives de connexion, à la sécurisation de la connexion, etc. Il peut également gérer un cache d'informations de l'annuaire de services.

Constructeurs et destructeurs

WeaveServiceManager(void)
Cette méthode initialise l'instance WeaveServiceManager.
~WeaveServiceManager(void)
Cette méthode détruit l'instance WeaveServiceManager.

Types publics

@303{
  kWeave_DefaultSendTimeout = 15000
}
enum
OnConnectBegin)(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBegin
void(*
Rappel d'application effectué immédiatement avant l'établissement de la connexion.
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
Un rappel d'application pour indiquer l'heure d'une requête sortante d'annuaire de services.
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfo
void(*
Rappel d'application permettant de fournir des valeurs temporelles à partir d'une réponse d'un annuaire de services.
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor
Fonction d'accesseur pour les informations du répertoire racine.
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandler
void(*
Gestionnaire des conditions d'erreur et d'état.

Fonctions publiques

SetConnectBeginCallback(OnConnectBegin aConnectBegin)
void
Définir une fonction de rappel à appeler immédiatement avant l'établissement de la connexion.
cancel(uint64_t aServiceEp, void *aAppState)
void
Cette méthode annule une requête de connexion.
clearCache(void)
void
Cette méthode efface l'état et le cache du gestionnaire si l'état du terminal est kServiceMgrState_Resolved, ce qui signifie que le point de terminaison de l'Annuaire des services a reçu une réponse.
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
Cette méthode permet de demander la connexion à un service Weave.
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
Cette méthode initialise l'objet Service Manager.
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
Cette méthode recherche les informations de répertoire pour un point de terminaison de service.
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
Cette méthode recherche les informations de répertoire pour un point de terminaison de service.
onConnectionClosed(WEAVE_ERROR aError)
void
Cette méthode gère l'événement de fermeture de connexion signalé par le contexte Weave Exchange associé.
onConnectionComplete(WEAVE_ERROR aError)
void
Cette méthode gère l'événement de connexion terminée pour la transaction de requête de point de terminaison de service.
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
void
Cette méthode gère tout message de réponse dans la conversation avec le service d'annuaire.
onResponseTimeout(void)
void
Cette méthode gère l'événement d'expiration de délai, au cours duquel le service d'annuaire n'a reçu aucune réponse.
relocate(WEAVE_ERROR aError)
void
Cette méthode déplace le cache de l'annuaire de services.
relocate(void)
void
Cette méthode déplace le cache de l'annuaire de services.
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
Ajoutez l'entrée de répertoire de remplacement (nom d'hôte et ID de port) au début de la liste des répertoires.
reset(WEAVE_ERROR aError)
void
Cette méthode rétablit l'état initial du gestionnaire de service.
reset(void)
void
Cette méthode rétablit l'état initial du gestionnaire de service.
unresolve(WEAVE_ERROR aError)
void
Cette méthode invalide le cache de l'annuaire de services.
unresolve(void)
void
Cette méthode invalide le cache de l'annuaire de services.

Classes

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::ConnectRequest

Cette classe représente une transaction unique gérée par le gestionnaire de service.

Types publics

@303

 @303
Propriétés
kWeave_DefaultSendTimeout

Durée (en millisecondes) de réception d'une réponse à la requête d'annuaire avant l'expiration du contexte de l'échange.

OnConnectBegin

void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)

Rappel d'application effectué immédiatement avant l'établissement de la connexion.

Ce rappel peut être utilisé par les applications pour observer et éventuellement modifier les arguments transmis à #WeaveConnection::Connect() lors de l'établissement d'une connexion de service. Ce rappel sera appelé à la fois pour la connexion au point de terminaison du service cible ainsi que pour la connexion au point de terminaison de l'Annuaire des services si une recherche dans l'annuaire doit être effectuée.

OnServiceEndpointQueryBegin

void(* OnServiceEndpointQueryBegin)(void)

Un rappel d'application pour indiquer l'heure d'une requête sortante d'annuaire de services.

Cette méthode est appelée lorsque nous sommes sur le point d'envoyer une requête de requête de point de terminaison de service. Utilisé pour établir une correspondance avec OnServiceEndpointQueryEnd pour compenser la durée de la période de diffusion des messages.

OnServiceEndpointQueryEndWithTimeInfo

void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)

Rappel d'application permettant de fournir des valeurs temporelles à partir d'une réponse d'un annuaire de services.

Cette méthode est appelée lorsque nous obtenons des informations temporelles à partir de la réponse à une requête de l'annuaire de services. Notez que ce rappel ne se produit que si une réponse est correctement analysée et que les informations d'heure sont incluses.

Détails
Paramètres
[in] timeQueryReceiptMsec
Nombre de millisecondes écoulées depuis l'epoch POSIX, lorsque la requête a été reçue côté serveur.
[in] timeProcessMsec
Nombre de millisecondes consacré au traitement de cette requête.

RootDirectoryAccessor

WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)

Fonction d'accesseur pour les informations du répertoire racine.

Vous devez commencer quelque part et avec le répertoire de service, vous devez commencer par un répertoire bouchon qui contient l'adresse d'un serveur que vous pouvez utiliser pour obtenir tout le reste. Étant donné que la disposition et la provenance de ces informations peuvent varier d'un appareil à l'autre, nous indiquons ici un rappel pour les accesseurs.

Détails
Paramètres
[out] aDirectory
Pointeur vers un tampon pour écrire les informations de répertoire.
[in] aLength
Longueur du tampon donné en octets.
Renvoie
WEAVE_NO_ERROR en cas de réussite. Sinon, le processus de chargement est annulé.

StatusHandler

void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)

Gestionnaire des conditions d'erreur et d'état.

Un utilisateur du gestionnaire de service peut être informé des problèmes qu'il rencontre lorsqu'il tente d'exécuter une requête de connexion de l'une des deux manières suivantes. Il peut recevoir un rapport d'état du service ou une erreur WEAVE_ERROR générée en interne. Dans les deux cas, les informations proviennent de ce rappel.

Détails
Paramètres
[in] anAppState
Pointeur vers un objet d'application transmis à l'appel conect() correspondant.
[in] anError
Code d'erreur Weave indiquant qu'une erreur s'est produite lors de la tentative d'exécution de la requête de connexion. Si aucune erreur ne se produit et qu'un rapport d'état est disponible, la valeur sera WEAVE_NO_ERROR.
[in] aStatusReport
Pointeur vers un rapport d'état généré par le service d'annuaire distant. Cet argument doit être NULL dans le cas où il n'y a pas eu de rapport d'état et qu'une erreur interne est transmise à l'argument précédent.

Fonctions publiques

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

Définir une fonction de rappel à appeler immédiatement avant l'établissement de la connexion.

Détails
Paramètres
[in] aConnectBegin
Un pointeur vers la fonction de rappel. Une valeur NULL désactive le rappel.

WeaveServiceManager

 WeaveServiceManager(
  void
)

Cette méthode initialise l'instance WeaveServiceManager.

Notez que init() doit être appelé pour initialiser davantage cette instance.

annuler

void cancel(
  uint64_t aServiceEp,
  void *aAppState
)

Cette méthode annule une requête de connexion.

Cette méthode annule une requête de connexion en fonction de l'ID de point de terminaison du service et de l'objet d'état de l'application transmis au moment de la requête en tant qu'identifiants. S'il s'agit de la dernière demande de connexion, cette méthode efface également tout état de connexion à l'annuaire des services en attente.

Détails
Paramètres
[in] aServiceEp
ID du point de terminaison de service de la requête en cours d'annulation.
[in] anAppState
Pointeur vers l'objet d'état de l'application fourni à l'appel connect().

clearCache

void clearCache(
  void
)

Cette méthode efface l'état et le cache du gestionnaire si l'état du terminal est kServiceMgrState_Resolved, ce qui signifie que le point de terminaison de l'Annuaire des services a reçu une réponse.

connect

WEAVE_ERROR connect(
  uint64_t aServiceEp,
  WeaveAuthMode aAuthMode,
  void *aAppState,
  StatusHandler aStatusHandler,
  WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler,
  const uint32_t aConnectTimeoutMsecs,
  const InterfaceId aConnectIntf
)

Cette méthode permet de demander la connexion à un service Weave.

Il s'agit de l'appel de connexion de niveau supérieur. Cela permet essentiellement d'établir une connexion sécurisée avec le service Weave en fonction d'un point de terminaison de service et d'un mode d'authentification, ou ne fonctionne plus.

Cette méthode ne peut être appelée qu'après un appel réussi à init(), et une demande de connexion peut être potentiellement annulée par cancel().

Cette méthode peut être appelée avant que le cache local ne soit rempli de données provenant de données provisionnées par défaut ou d'un trajet vers le service d'annuaire. Le gestionnaire de service met simplement la requête en file d'attente avant que le contenu du cache puisse être déterminé.

Détails
Paramètres
[in] aServiceEp
Identifiant du point de terminaison du service, tel que défini dans ServiceDirectory.h, pour le service qui vous intéresse.
[in] aAuthMode
Mode d'authentification à utiliser lors de la connexion au service qui vous intéresse.
[in] aAppState
Pointeur vers un objet d'état de l'application, transmis aux rappels en tant qu'argument.
[in] aStatusHandler
Rappel à invoquer en cas d'erreur survenant avant la fin de la connexion.
[in] aConnectionCompleteHandler
Rappel à invoquer lorsque la connexion demandée est établie. Notez que la connexion peut échouer et générer un code d'erreur Weave.
[in] aConnectTimeoutMsecs
Délai avant expiration facultatif de la connexion TCP en millisecondes.
[in] aConnectIntf
Interface facultative via laquelle la connexion doit être établie.
Renvoie
WEAVE_NO_ERROR en cas de réussite ; sinon, le code d'erreur correspondant.

init

WEAVE_ERROR init(
  WeaveExchangeManager *aExchangeMgr,
  uint8_t *aCache,
  uint16_t aCacheLen,
  RootDirectoryAccessor aAccessor,
  WeaveAuthMode aDirAuthMode,
  OnServiceEndpointQueryBegin aServiceEndpointQueryBegin,
  OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo,
  OnConnectBegin aConnectBegin
)

Cette méthode initialise l'objet Service Manager.

Pour être utilisé, un objet de gestionnaire de services doit être initialisé. Après un appel réussi à cette méthode, les clients peuvent commencer à appeler connect(), lookup() et d'autres méthodes.

Détails
Paramètres
[in] aExchangeMgr
Pointeur vers le gestionnaire d'échanges à utiliser pour tous les échanges de profils de l'Annuaire des services.
[in] aCache
Pointeur vers un tampon qui peut être utilisé pour mettre en cache les informations de répertoire.
[in] aCacheLen
Longueur du cache, en octets.
[in] aAccessor
Rappel, tel que défini dans ServiceDirectory.h, à invoquer pour charger le répertoire racine en tant que point de départ pour la recherche de répertoires.
[in] aDirAuthMode
Mode d'authentification à utiliser pour communiquer avec le service d'annuaire.
[in] aServiceEndpointQueryBegin
Pointeur de fonction de type OnServiceEndpointQuerybegin, appelé au début d'une requête d'annuaire de service et permettant au code d'application de marquer l'heure si elle souhaite utiliser la synchronisation de l'heure proposée par le protocole de l'annuaire de services.
[in] aServiceEndpointQueryEndWithTimeInfo
Pointeur de fonction de type OnServiceEndpointQueryEndWithTimeInfo, appelé à la réception d'un répertoire de service permettant aux applications de se synchroniser avec le service Weave à l'aide des champs temporels indiqués dans la réponse. Ce rappel est effectué une fois que le gestionnaire de service a reçu une réponse contenant des informations sur le temps. Le cache doit déjà être rempli avant que le rappel ne soit effectué.
[in] aConnectBegin
Pointeur de fonction de type OnConnectbegin, appelé immédiatement avant l'établissement de la connexion et permettant aux applications d'observer et de modifier les arguments transmis à #WeaveConnection::Connect(). Une valeur NULL (par défaut) désactive le rappel.
Renvoie
WEAVE_ERROR_INVALID_ARGUMENT si un argument de fonction n'est pas valide ; sinon, WEAVE_NO_ERROR.

lookup

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  HostPortList *outHostPortList
)

Cette méthode recherche les informations de répertoire pour un point de terminaison de service.

Si le répertoire de service a été résolu (en cas d'opération connect() réussie), cette méthode renseignera l'objet HostPortList fourni.

Remarque: HostPortList est lié à l'objet WeaveServiceManager. Il reste valide jusqu'à ce que le cache du répertoire de service soit effacé ou jusqu'à ce qu'une autre recherche du répertoire de service ait lieu.

Détails
Paramètres
[in] aServiceEp
Identifiant du point de terminaison du service à rechercher.
[out] outHostPortList
Pointeur vers HostPortList qui sera renseigné en cas de recherche réussie de l'entrée d'annuaire. Ne doit pas être NULL.
Valeurs de retour
WEAVE_NO_ERROR
en cas de réussite, sinon, un code d'erreur respectif.
WEAVE_ERROR_INVALID_SERVICE_EP
si le point de terminaison de service donné est introuvable.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
if directory contient un type d'entrée de répertoire inconnu.

lookup

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  uint8_t *aControlByte,
  uint8_t **aDirectoryEntry
)

Cette méthode recherche les informations de répertoire pour un point de terminaison de service.

Si le répertoire de service a été résolu, c'est-à-dire en cas d'opération connect() réussie, cette méthode renvoie une entrée d'annuaire à partir d'un identifiant de point de terminaison de service.

Cette méthode expose les détails de l'implémentation interne du répertoire de service. Les implémentations doivent fortement favoriser l'utilisation de la variante de cette méthode qui génère la classe HostPortList.

Détails
Paramètres
[in] aServiceEp
Identifiant du point de terminaison du service à rechercher.
[out] aControlByte
Pointeur vers l'emplacement où écrire l'octet de contrôle d'entrée de répertoire.
[out] aDirectoryEntry
Pointeur de pointeur à diriger vers l'entrée de répertoire.
Valeurs de retour
WEAVE_NO_ERROR
en cas de réussite, sinon, un code d'erreur respectif.
WEAVE_ERROR_INVALID_SERVICE_EP
si le point de terminaison de service donné est introuvable.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
if directory contient un type d'entrée de répertoire inconnu.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

Cette méthode gère l'événement de fermeture de connexion signalé par le contexte Weave Exchange associé.

Détails
Paramètres
[in] aError
Erreur Weave indiquant le motif de la fermeture de cette connexion.

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

Cette méthode gère l'événement de connexion terminée pour la transaction de requête de point de terminaison de service.

Plusieurs possibilités s'offrent à vous. Tout d'abord, la connexion aurait pu échouer, auquel cas nous avons terminé. Sinon, la connexion est réellement terminée et nous voulons ouvrir un contexte d'échange et envoyer une requête d'annuaire.

Détails
Paramètres
[in] aError
Une erreur Weave en cas d'erreur lors de la configuration de la connexion.

onResponseReceived

void onResponseReceived(
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aMsg
)

Cette méthode gère tout message de réponse dans la conversation avec le service d'annuaire.

Détails
Paramètres
[in] aProfileId
ID de profil pour ce message entrant.
[in] aMsgType
Type spécifique au profil pour ce message.
[in] aMsg
Contenu de ce message.

onResponseTimeout

void onResponseTimeout(
  void
)

Cette méthode gère l'événement d'expiration de délai, au cours duquel le service d'annuaire n'a reçu aucune réponse.

déplacer

void relocate(
  WEAVE_ERROR aError
)

Cette méthode déplace le cache de l'annuaire de services.

Lorsqu'un point de terminaison de service renvoie un rapport d'état avec le code d'état kStatus_Relocalized, l'application peut appeler unresolve() pour vider le cache et annuler les demandes de connexion. Cette méthode simplifie la gestion des erreurs en appelant unresolve() la première fois et reset() si le problème n'est pas encore résolu.

Cette version de la méthode (ici pour assurer la rétrocompatibilité) reçoit et consigne une erreur, puis appelle relocate(void) .

Détails
Paramètres
[in] aError
une erreur à consigner.
Voir aussi:
relocate(void)

déplacer

void relocate(
  void
)

Cette méthode déplace le cache de l'annuaire de services.

Lorsqu'un point de terminaison de service renvoie un rapport d'état avec le code d'état kStatus_Relocalized, l'application peut appeler unresolve() pour vider le cache et annuler les demandes de connexion. Cette méthode simplifie la gestion des erreurs en appelant unresolve() la première fois et reset() si le problème n'est pas encore résolu.

Voir aussi:
relocate(WEAVE_ERROR)

replaceOrAddCacheEntry

WEAVE_ERROR replaceOrAddCacheEntry(
  uint16_t port,
  const char *hostName,
  uint8_t hostLen,
  uint64_t serviceEndpointId
)

Ajoutez l'entrée de répertoire de remplacement (nom d'hôte et ID de port) au début de la liste des répertoires.

reset

void reset(
  WEAVE_ERROR aError
)

Cette méthode rétablit l'état initial du gestionnaire de service.

Cette méthode réinitialise tous les états du gestionnaire de service, y compris l'état des communications, l'état du cache et l'état des requêtes de connexion en attente.

Cette version de la méthode (ici pour assurer la rétrocompatibilité) reçoit et consigne une erreur, puis appelle reset(void) .

Détails
Paramètres
[in] aError
Erreur ayant déclenché cette opération.
Voir aussi:
reset(void)

reset

void reset(
  void
)

Cette méthode rétablit l'état initial du gestionnaire de service.

Cette méthode réinitialise tous les états du gestionnaire de service, y compris l'état des communications, l'état du cache et l'état des requêtes de connexion en attente.

Voir aussi:
reset(WEAVE_ERROR)

non résolu

void unresolve(
  WEAVE_ERROR aError
)

Cette méthode invalide le cache de l'annuaire de services.

Cette méthode définit l'état du cache du répertoire de service de sorte que, lors de la prochaine requête, le gestionnaire de service émette une requête de répertoire de service.

Cette version de la méthode (ici pour assurer la rétrocompatibilité) reçoit et consigne une erreur, puis appelle unresolve(void) .

Détails
Paramètres
[in] aError
Erreur ayant déclenché cette opération.
Voir aussi:
unresolve(void)

non résolu

void unresolve(
  void
)

Cette méthode invalide le cache de l'annuaire de services.

Cette méthode définit l'état du cache du répertoire de service de sorte que, lors de la prochaine requête, le gestionnaire de service émette une requête de répertoire de service.

Voir aussi:
unresolve(WEAVE_ERROR)

~WeaveServiceManager

 ~WeaveServiceManager(
  void
)

Cette méthode détruit l'instance WeaveServiceManager.