nl::Weave::Profiles::DataManagement_Current::SubscriptionClient

Résumé

Types publics

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Rappel pour transmettre les événements d'abonnement à l'application.
EventID{
  kEvent_OnSubscriptionTerminated = 1,
  kEvent_OnExchangeStart = 2,
  kEvent_OnSubscribeRequestPrepareNeeded = 3,
  kEvent_OnSubscriptionEstablished = 4,
  kEvent_OnNotificationRequest = 5,
  kEvent_OnNotificationProcessed = 6,
  kEvent_OnEventStreamReceived = 7,
  kEvent_OnSubscriptionActivity = 8,
  kEvent_OnUpdateComplete = 9,
  kEvent_OnNoMorePendingUpdates = 10
}
enum
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
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
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::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

Unions

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::OutEventParam

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
[in] aAppState
Pointeur d'état de l'application défini lors de l'initialisation de SubscriptionClient.
[in] aEvent
Indique l'événement en cours
[in] aInParam
Struct contenant des informations supplémentaires sur l'événement
[out] aOutParam
Informations transmises par l'application

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. mEC est valide et peut être réglé pour les paramètres de délai avant expiration. L'application ne doit pas toucher d'autres champs du client ni fermer 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 Terminated. Si aucune nouvelle tentative n'est effectuée, l'état du client passe à Initialized lors du retour du gestionnaire d'événements. Sinon, l'état passera à ResubscribeHoldoff, et une tentative sera effectuée pour rétablir l'abonnement après la période de blocage.

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:

Code d'erreur Signification
WEAVE_ERROR_INVALID_MESSAGE_TYPE Un message non reconnu a été reçu.
WEAVE_ERROR_TIMEOUT Un accusé de réception n'est pas reçu ou une vérification de l'activité échoue.
WEAVE_ERROR_INCORRECT_STATE Les messages sont reçus dans un état inattendu.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Un rapport d'état a été reçu.
WEAVE_ERROR_INVALID_ARGUMENT Les champs de la demande d'abonnement ne sont pas valides.

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
[in] aAppState
Pointeur d'état de l'application défini lors de l'initialisation de SubscriptionClient.
[in] aInParam
Structure comportant des informations supplémentaires sur la nouvelle tentative
[out] aOutIntervalMsec
Délai d'attente en millisecondes avant la prochaine nouvelle tentative

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
[in] aCallback
Rappel facultatif permettant de récupérer la durée d'attente avant toute nouvelle tentative après un échec. Si la valeur est NULL, utilisez une règle par défaut.

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
[in] aForce
Si la valeur est "true", la mise à jour est envoyée immédiatement, même si une nouvelle tentative a été programmée à l'avenir. Ce paramètre est considéré comme "false" par défaut.
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
)