nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
Résumé
Types publics |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
Rappel pour transmettre les événements d'abonnement à l'application. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
Rappel pour récupérer l'intervalle de temps 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 choisira un créneau aléatoire avec une résolution de l'ordre de la milliseconde sur une fenêtre toujours croissante, en suivant une séquence de fibonacci jusqu'à WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
|
Fonctions publiques |
|
---|---|
AbortSubscription(void)
|
void
Annuler l'abonnement.
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
Désactivez le mécanisme de réabonnement.
|
DiscardUpdates()
|
void
Indique à l'élément SubscriptionClient de vider l'ensemble des TraitPaths en attente de mise à jour et d'abandonner la requête de mise à jour en cours, le cas échéant.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
Activez les réabonnements automatiques.
|
EndSubscription(void)
|
Mettez fin à l'abonnement.
|
FlushUpdate()
|
Indique que l'application a terminé la mutation de tous les récepteurs TraitUpdatableDataRepositorys.
|
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 (par opposition à un 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 lorsque le catalogue TraitDataSink a été modifié.
|
ResetResubscribe(void)
|
void
Déclenchez le mécanisme de réabonnement.
|
SetLivenessTimeoutMsec(uint32_t val)
|
void
|
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
|
|
SuspendUpdateRetries()
|
void
Indique à l'élément SubscriptionClient d'arrêter de relancer les requêtes de mise à jour.
|
UnlockUpdateMutex(void)
|
void
|
Structs |
|
---|---|
nl:: |
|
nl:: |
Unions |
|
---|---|
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 inclut un flux d'événements dans le message NotificationRequest. À ce stade, l'application peut appeler EndSubscription(), AbortSubscription() ou Free(). |
||||||||||||
kEvent_OnExchangeStart
|
Généré une fois que la liaison a été préparée et qu'ExchangeContext a été configuré, mais avant l'envoi de messages. Il s'agit de la dernière chance pour qu'une application ajuste les paramètres ExchangeContext. |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Événement indiquant que tous les chemins d'accès de l'ensemble de mises à jour ont été traités par le pair et qu'il n'est plus nécessaire de mettre à jour d'autres chemins. |
||||||||||||
kEvent_OnNotificationProcessed
|
Généré lorsque SubscriptionEngine a terminé de traiter un message NotificationRequest. À ce stade, l'application peut appeler EndSubscription(), AbortSubscription() ou Free(). |
||||||||||||
kEvent_OnNotificationRequest
|
Généré à la réception d'une NotificationRequest. À ce stade, l'application peut appeler EndSubscription(), AbortSubscription() ou Free(). |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Envoyé lorsque le moteur est prêt à envoyer la requête d'abonnement. L'application doit remplir 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 réussi de l'abonnement, 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é après l'établissement réussi 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 indiquent si un réabonnement sera automatiquement tenté. Pendant l'appel du gestionnaire d'événements, l'état du client est Dans cet état, l'application peut appeler AbortSubscription() ou Free(). Les paramètres envoyés incluent également un code d'erreur indiquant le motif de la résiliation. L'abonnement a pu être résilié pour plusieurs raisons (ACK WRM ACK manquant, échec de l'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 d'un chemin de trait spécifique a réussi ou échoué. |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
Rappel pour récupérer l'intervalle de temps avant le prochain réabonnement.
Dans cette fonction, les applications peuvent renoncer à se réabonner.
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 choisira un créneau aléatoire avec une résolution de l'ordre de la milliseconde sur une fenêtre toujours croissante, en suivant une séquence de fibonacci jusqu'à WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
La moyenne du temps d'attente aléatoire après le WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX est d'environ une heure. Lorsque le nombre de tentatives est réinitialisé, la séquence recommence depuis le début.
Fonctions publiques
AbortSubscription
void AbortSubscription( void )
Annuler l'abonnement.
Annuler l'abonnement d'un 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 d'un abonnement par le client, 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 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 de AbortSubscription().
Une fois que la méthode AbortSubscription() est renvoyée, vous pouvez utiliser l'objet SubscriptionClient
pour lancer un autre abonnement ou le libérer 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 est en attente.
DiscardUpdates
void DiscardUpdates()
Indique à l'élément SubscriptionClient de vider l'ensemble des TraitPaths en attente de mise à jour et d'abandonner 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.
Associez un rappel pour spécifier la prochaine nouvelle tentative en cas d'échec.
Détails | |||
---|---|---|---|
Paramètres |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Mettez fin à l'abonnement.
résilier normalement un abonnement client ;
Lorsque l'option de temps de compilation WDM_ENABLE_SUBSCRIPTION_CANCEL est activée, mettez fin à l'abonnement de façon optimale en envoyant une requête d'annulation au pair. Les ressources associées à l'abonnement sont libérées après la réponse du pair ou après expiration du délai. Lorsque cette option est désactivée, l'appel équivaut à AbortSubscription().
résilie gracieusement la fin d'un abonnement côté client. Si la fonctionnalité d'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 résilier l'abonnement. Dans le cas contraire, l'abonnement est immédiatement résilié comme suit : AbortSubscription(). Si un abonnement mutuel existe, l'abonnement au compteur est également résilié.
En attendant une réponse à une requête SubscribeCancelRequest, le SubscriptionClient
passe à l'état Canceling
.
Une fois le processus d'arrêt lancé, l'objet SubscriptionClient
passe à l'état Terminated
, et un événement OnSubscriptionTerminated
est envoyé au gestionnaire d'événements de l'application. Notez que si 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 le retour effectué par le gestionnaire d'événements de l'application, l'objet SubscriptionClient
passe à l'état Initialized
. À ce stade, l'objet SubscriptionClient
peut être utilisé pour lancer un autre abonnement ou ê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 TraitUpdatableDataRepositorys.
À moins qu'un échange de mise à jour précédent ne soit en cours, le client prend toutes les données marquées comme mises à jour et les envoie au répondant dans une seule requête 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 ; autres codes WEAVE_ERROR en cas d'échec.
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
Sans frais
void Free( void )
Libérez cet objet SubscriptionClient.
Libérez un objet SubscriptionClient
.
Appelle AbortSubscription() si nécessaire et libère le refcount sur cet objet SubscriptionClient. Si l'utilisation est correcte, l'objet doit pouvoir être renvoyé au pool d'objets.
Libère l'objet SubscriptionClient
. Si un abonnement est actif ou en cours, il est immédiatement résilié, comme si vous aviez appelé AbortSubscription(). Si des demandes de mise à jour sont en cours, elles sont également annulées.
L'application doit appeler Free() une seule fois pendant la durée de vie d'un objet SubscriptionClient
. Une fois la méthode Free() appelée, aucune autre référence à l'objet ne doit être effectuée.
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 (par opposition à un 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 lorsque le catalogue TraitDataSink a été modifié.
ResetResubscribe
void ResetResubscribe( void )
Déclenchez le mécanisme de réabonnement.
Une nouvelle tentative sera lancée immédiatement.
SetLivenessTimeoutMsec
void SetLivenessTimeoutMsec( uint32_t val )
SetUpdated
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
SuspendUpdateRetries
void SuspendUpdateRetries()
Indique à l'élément 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 nouvelles tentatives sont réactivées lors de l'appel de FlushUpdate. Lorsque cette méthode est appelée pour suspendre des mises à jour pendant qu'une mise à jour est en cours, celle-ci n'est pas annulée. En cas d'échec, elle n'est pas relancée tant que FlushUpdate n'est pas rappelé.
UnlockUpdateMutex
void UnlockUpdateMutex( void )