nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
Résumé
Types publics |
|
---|---|
@130
|
énum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
Rappel pour transmettre les événements d'abonnement à l'application. |
EventID{
|
énum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
Rappel visant à récupérer l'intervalle de temps d'attente avant le prochain réabonnement. |
Fonctions statiques publiques |
|
---|---|
DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
|
void
L'implémentation de la règle par défaut choisit un intervalle de temps aléatoire avec une résolution de l'ordre de la milliseconde sur une fenêtre de plus en plus croissante, suivant une séquence de fibonacci jusqu'à WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
|
Fonctions publiques |
|
---|---|
AbortSubscription(void)
|
void
Annulez l'abonnement.
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
Désactivez le mécanisme de réabonnement.
|
DiscardUpdates()
|
void
Indique à SubscriptionClient de vider l'ensemble de TraitPath en attente de mise à jour et d'annuler la requête de mise à jour en cours, le cas échéant.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
Activez les réabonnements automatiques.
|
EndSubscription(void)
|
Mettre fin à l'abonnement
|
FlushUpdate()
|
Indique que l'application a terminé la mutation de tous les récepteurs de données TraitUpdatable.
|
FlushUpdate(bool aForce)
|
|
Free(void)
|
void
Libérez cet objet SubscriptionClient.
|
GetBinding(void) const
|
Binding *
|
GetLivenessTimeoutMsec(void) const
|
uint32_t
|
GetPeerNodeId(void) const
|
uint64_t
|
GetSubscriptionId(uint64_t *const apSubscriptionId)
|
|
IndicateActivity(void)
|
void
|
InitiateCounterSubscription(const uint32_t aLivenessTimeoutSec)
|
void
|
InitiateSubscription(void)
|
void
Configurez SubscriptionClient en tant qu'initiateur (et non en tant que contre-abonné) et affichez l'abonnement si ce n'est pas le cas.
|
IsCanceling() const
|
bool
|
IsEstablished()
|
bool
|
IsEstablishedIdle()
|
bool
|
IsFree()
|
bool
|
IsInProgressOrEstablished()
|
bool
|
IsInResubscribeHoldoff()
|
bool
|
IsRetryEnabled()
|
bool
|
IsTerminated()
|
bool
|
IsUpdatePendingOrInProgress()
|
bool
|
LockUpdateMutex(void)
|
void
|
OnCatalogChanged()
|
void
Cette méthode doit être appelée après la modification du catalogue TraitDataSink.
|
ResetResubscribe(void)
|
void
Interrompez le mécanisme de réabonnement.
|
SetLivenessTimeoutMsec(uint32_t val)
|
void
|
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
|
|
SuspendUpdateRetries()
|
void
Indique à SubscriptionClient d'arrêter de relancer les requêtes de mise à jour.
|
UnlockUpdateMutex(void)
|
void
|
Structs |
|
---|---|
nl:: |
|
nl:: |
Union |
|
---|---|
nl:: |
|
nl:: |
Types publics
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Rappel pour transmettre les événements d'abonnement à l'application.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
EventID
EventID
Propriétés | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
Généré lorsque SubscriptionEngine comptabilise un flux d'événements dans le message NotificationRequest. À ce stade, l'application peut appeler EndSubscription(), AbortSubscription() ou Free(). |
||||||||||||
kEvent_OnExchangeStart
|
Généré après la préparation de la liaison et la configuration d'ExchangeContext, mais avant l'envoi des messages. Il s'agit de la dernière chance pour une application d'ajuster les paramètres ExchangeContext. |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Événement indiquant que tous les chemins de l'ensemble de mise à jour ont été traités par le pair et qu'aucun autre chemin n'a besoin d'être mis à jour. |
||||||||||||
kEvent_OnNotificationProcessed
|
Généré lorsque SubscriptionEngine termine le traitement d'un message NotificationRequest. À ce stade, l'application peut appeler EndSubscription(), AbortSubscription() ou Free(). |
||||||||||||
kEvent_OnNotificationRequest
|
Généré sur la réception d'une notification NotificationRequest. À ce stade, l'application peut appeler EndSubscription(), AbortSubscription() ou Free(). |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Envoyé lorsque le moteur est prêt à envoyer la S'abonner. L'application doit indiquer les chemins auxquels elle souhaite s'abonner. |
||||||||||||
kEvent_OnSubscriptionActivity
|
Événement indiquant une activité d'abonnement. Il est généré chaque fois que le client reçoit une indication sur l'activité d'abonnement. cela inclut l'établissement d'un abonnement réussi, la réception d'une NotificationRequest ou la réception d'un rapport d'état en réponse au message SubscribeConfirm. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
Généré lors de l'établissement de l'abonnement. À ce stade, l'application peut appeler EndSubscription(), AbortSubscription() ou Free(). |
||||||||||||
kEvent_OnSubscriptionTerminated
|
Marque la fin de cet abonnement. Les paramètres envoyés à nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback indiqueront si une tentative de réabonnement sera automatiquement effectuée. Lors de l'appel du gestionnaire d'événements, l'état du client est Dans ce cas, l'application peut appeler AbortSubscription() ou Free(). Les paramètres envoyés incluent également un code d'erreur indiquant le motif de résiliation de l'abonnement. L'abonnement peut avoir été résilié pour plusieurs raisons (ACK WRM manquant, échec d'allocation ExchangeContext, délai avant expiration de la réponse, etc.). Voici quelques codes d'erreur possibles générés par le client:
|
||||||||||||
kEvent_OnUpdateComplete
|
Événement indiquant la fin de la mise à jour. Les paramètres d'événement indiquent si la mise à jour du chemin d'une caractéristique spécifique a réussi ou échoué. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
Rappel visant à récupérer l'intervalle de temps d'attente avant le réabonnement suivant.
Les applications sont autorisées à annuler/libérer dans cette fonction si elles décident d'abandonner lors du réabonnement.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
Fonctions statiques publiques
DefaultEventHandler
void DefaultEventHandler( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
DefaultResubscribePolicyCallback
void DefaultResubscribePolicyCallback( void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec )
L'implémentation de la règle par défaut choisit un intervalle de temps aléatoire avec une résolution de l'ordre de la milliseconde sur une fenêtre de plus en plus importante, suivant une séquence de fibonacci jusqu'à WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
La moyenne du temps d'attente aléatoire après WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX est d'environ une heure. Lorsque le nombre de nouvelles tentatives est réinitialisé, la séquence reprend du début.
Fonctions publiques
AbortSubscription
void AbortSubscription( void )
Annulez l'abonnement.
Annuler un abonnement client
Cessez immédiatement d'accepter tout le trafic associé à l'abonnement et libérez toutes les ressources de communication sous-jacentes. L'objet SubscriptionClient lui-même reste valide et peut être utilisé à nouveau.
Arrête la fin du client d'un abonnement, sans avertir l'éditeur de l'abonnement et sans envoyer d'événement OnSubscriptionTerminated
au gestionnaire d'événements de l'application. S'il existe un abonnement mutuel, l'abonnement de compteur est également résilié.
Lorsque vous appelez AbortSubscription(), l'objet SubscriptionClient
passe à l'état Terminated
. Une fois le processus d'arrêt terminé, l'objet passe à l'état Initialized
. Les deux transitions se produisent de manière synchrone dans l'appel à AbortSubscription().
Une fois AbortSubscription() renvoyé, l'objet SubscriptionClient
peut être utilisé pour initier un autre abonnement ou peut être libéré en appelant la méthode Free().
ClearUpdated
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
DisableResubscribe
void DisableResubscribe( void )
Désactivez le mécanisme de réabonnement.
Cette opération sera annulée si un réabonnement était en attente.
DiscardUpdates
void DiscardUpdates()
Indique à SubscriptionClient de vider l'ensemble de TraitPath en attente de mise à jour et d'annuler la requête de mise à jour en cours, le cas échéant.
Cette méthode peut être invoquée à partir de n'importe quel rappel.
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
Activez les réabonnements automatiques.
Joignez un rappel pour spécifier la prochaine tentative en cas d'échec.
Détails | |||
---|---|---|---|
Paramètres |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Mettre fin à l'abonnement
Mettez fin de manière concertée à l'abonnement d'un client.
Lorsque l'option de temps de compilation WDM_ENABLE_SUBSCRIPTION_CANCEL est activée, mettez fin à l'abonnement en douceur en envoyant une requêteCancelRequest au pair. Les ressources associées à l'abonnement sont libérées en cas de réponse du pair ou d'expiration du délai. Lorsque l'option est désactivée, l'appel équivaut à AbortSubscription().
Met fin de manière concertée à la fin du client d'un abonnement. Si la prise en charge de l'annulation d'abonnement est activée, un message SubscribeCancelRequest est envoyé à l'éditeur de l'abonnement et le système attend une réponse avant de mettre fin à l'abonnement. Sinon, l'abonnement est immédiatement résilié comme pour AbortSubscription(). S'il existe un abonnement mutuel, l'abonnement de compteur est également résilié.
En attente d'une réponse à une requête SubscribeCancelRequest, le SubscriptionClient
passe à l'état Canceling
.
Une fois que le processus d'arrêt commence, l'objet SubscriptionClient
passe à l'état Terminated
, et un événement OnSubscriptionTerminated
est transmis au gestionnaire d'événements de l'application. Notez que si la prise en charge de l'annulation n'est pas activée, le gestionnaire d'événements peut être appelé de manière synchrone dans l'appel à EndSubscription().
Une fois que le gestionnaire d'événements de l'application est renvoyé, l'objet SubscriptionClient
passe à l'état Initialized
. À ce stade, l'objet SubscriptionClient
peut être utilisé pour initier un autre abonnement, ou il peut être libéré en appelant la méthode Free().
FlushUpdate
WEAVE_ERROR FlushUpdate()
Indique que l'application a terminé la mutation de tous les récepteurs de données TraitUpdatable.
À moins qu'un échange de mise à jour précédent ne soit en cours, le client récupère toutes les données marquées comme mises à jour et les envoie au répondant dans une seule demande de mise à jour. Cette méthode peut être appelée à partir de n'importe quel thread.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
WEAVE_NO_ERROR en cas de réussite d'autres codes WEAVE_ERROR en cas d'échec.
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
Gratuit
void Free( void )
Libérez cet objet SubscriptionClient.
Libérez un objet SubscriptionClient
.
Elle appelle AbortSubscription() si nécessaire et libère le refcount sur cet objet SubscriptionClient. Si l'utilisation est correcte, cela devrait permettre de renvoyer l'objet au pool d'objets.
Libère l'objet SubscriptionClient
. Si un abonnement est actif ou en cours, il est immédiatement résilié, de la même manière que lorsque vous appelez AbortSubscription(). Si des requêtes de mise à jour sont en cours, elles sont également annulées.
L'application est chargée d'appeler Free() une seule fois pendant la durée de vie d'un objet SubscriptionClient
. Une fois Free() appelé, aucune autre référence ne doit être faite à l'objet.
GetBinding
Binding * GetBinding( void ) const
GetLivenessTimeoutMsec
uint32_t GetLivenessTimeoutMsec( void ) const
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
GetSubscriptionId
WEAVE_ERROR GetSubscriptionId( uint64_t *const apSubscriptionId )
IndicateActivity
void IndicateActivity( void )
InitiateCounterSubscription
void InitiateCounterSubscription( const uint32_t aLivenessTimeoutSec )
InitiateSubscription
void InitiateSubscription( void )
Configurez SubscriptionClient en tant qu'initiateur (et non en tant que contre-abonné) et affichez l'abonnement si ce n'est pas le cas.
IsCanceling
bool IsCanceling() const
IsEstablished
bool IsEstablished()
IsEstablishedIdle
bool IsEstablishedIdle()
IsFree
bool IsFree()
IsInProgressOrEstablished
bool IsInProgressOrEstablished()
IsInResubscribeHoldoff
bool IsInResubscribeHoldoff()
IsRetryEnabled
bool IsRetryEnabled()
IsTerminated
bool IsTerminated()
IsUpdatePendingOrInProgress
bool IsUpdatePendingOrInProgress()
LockUpdateMutex
void LockUpdateMutex( void )
OnCatalogChanged
void OnCatalogChanged()
Cette méthode doit être appelée après la modification du catalogue TraitDataSink.
ResetResubscribe
void ResetResubscribe( void )
Interrompez le mécanisme de réabonnement.
Une nouvelle tentative sera alors lancée immédiatement.
SetLivenessTimeoutMsec
void SetLivenessTimeoutMsec( uint32_t val )
SetUpdated
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
SuspendUpdateRetries
void SuspendUpdateRetries()
Indique au SubscriptionClient d'arrêter de relancer les requêtes de mise à jour.
Permet à l'application de suspendre les mises à jour pendant un certain temps sans supprimer toutes les métadonnées. Les mises à jour et les tentatives reprendront lorsque FlushUpdate sera appelé. Lorsque vous êtes appelé pour suspendre des mises à jour alors qu'une mise à jour est en cours, celle-ci n'est pas annulée, mais en cas d'échec, elle n'est pas relancée tant que FlushUpdate n'est pas rappelé.
UnlockUpdateMutex
void UnlockUpdateMutex( void )