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

Résumé

Types publics

@130 énum
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
}
énum
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
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
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::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

Union

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 quel événement est en cours
[in] aInParam
Structurer avec des informations supplémentaires sur l'événement
[out] aOutParam
Informations renvoyées par l'application

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

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:

Code d'erreur Signification
WEAVE_ERROR_INVALID_MESSAGE_TYPE Un message non reconnu a été reçu.
WEAVE_ERROR_TIMEOUT Aucun accusé de réception n'est reçu ou la 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 est 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 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
[in] aAppState
Pointeur d'état de l'application défini lors de l'initialisation de SubscriptionClient.
[in] aInParam
Structurer avec des informations supplémentaires sur la nouvelle tentative
[out] aOutIntervalMsec
Temps d'attente en millisecondes avant la prochaine 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 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
[in] aCallback
Rappel facultatif permettant de récupérer la durée d'attente avant une nouvelle tentative en cas d'échec. Si la valeur est NULL, utilisez une règle par défaut.

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