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

Resumen

Tipos públicos

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Es la devolución de llamada para pasar eventos de suscripción a la app.
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(*
Es la devolución de llamada para recuperar el intervalo de tiempo que se debe esperar antes de volver a suscribirse.

Funciones estáticas públicas

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
La implementación de la política predeterminada elegirá un intervalo de tiempo aleatorio con una resolución de milisegundos en un período que aumente de forma constante, siguiendo una secuencia de Fibonacci hasta un máximo de WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Funciones públicas

AbortSubscription(void)
void
Anula la suscripción.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
Inhabilita el mecanismo para volver a suscribirse.
DiscardUpdates()
void
Le indica a SubscriptionClient que vacíe el conjunto de TraitPaths pendientes de actualización y que anule la solicitud de actualización que está en curso, si la hay.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Habilita las opciones para volver a suscribirse automáticamente.
EndSubscription(void)
Finaliza la suscripción.
FlushUpdate()
Indica que la aplicación terminó de mutar todos los TraitUpdatableDataReceivers.
FlushUpdate(bool aForce)
Free(void)
void
Libera este objeto 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
Configura SubscriptionClient como un iniciador (en lugar de un contador de suscriptores) y sube la suscripción si no lo es.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
Se debe llamar a este método cuando se haya modificado el catálogo TraitDataSink.
ResetResubscribe(void)
void
Desactivar el mecanismo para volver a suscribirse
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Le indica a SubscriptionClient que deje de reintentar las solicitudes de actualización.
UnlockUpdateMutex(void)
void

Structs

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

Unión

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

Tipos públicos

@130

 @130

EventCallback

void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

Es la devolución de llamada para pasar eventos de suscripción a la app.

Detalles
Parámetros
[in] aAppState
Es el puntero de estado de la app que se estableció durante la inicialización de SubscriptionClient.
[in] aEvent
Indica qué evento se está llevando a cabo
[in] aInParam
Estructura con detalles adicionales sobre el evento
[out] aOutParam
Información que la aplicación devuelve

EventID

 EventID
Propiedades
kEvent_OnEventStreamReceived

Se genera cuando SubscriptionEngine cuenta una transmisión de eventos dentro del mensaje NotificationRequest.

En este momento, la aplicación puede llamar a EndSubscription(), AbortSubscription() o Free().

kEvent_OnExchangeStart

Generada después de que se prepare la vinculación y se haya configurado ExchangeContext, pero antes de que se envíen los mensajes.

Esta es la última oportunidad para que una aplicación ajuste la configuración de ExchangeContext; mEC es válido y puede ajustarse para la configuración del tiempo de espera. La aplicación no debe tocar otros campos en el cliente ni cerrar ExchangeContext.

kEvent_OnNoMorePendingUpdates

Un evento que indica que el intercambio de tráfico procesó todas las rutas de acceso en el conjunto de actualización y que no es necesario actualizar más rutas de acceso.

kEvent_OnNotificationProcessed

Se genera cuando SubscriptionEngine termina de procesar un mensaje NotificationRequest.

En este momento, la aplicación puede llamar a EndSubscription(), AbortSubscription() o Free().

kEvent_OnNotificationRequest

Se genera en una recepción de una NotificationRequest.

En este momento, la aplicación puede llamar a EndSubscription(), AbortSubscription() o Free().

kEvent_OnSubscribeRequestPrepareNeeded

Se envía cuando el motor está listo para enviar la SubscribeRequest.

Se espera que la aplicación complete las rutas a las que desea suscribirse.

kEvent_OnSubscriptionActivity

Un evento que indica la actividad de suscripción.

Se genera cada vez que el cliente recibe una indicación sobre la actividad de suscripción, lo que incluye el establecimiento exitoso de una suscripción, la recepción de una NotificationRequest o la recepción de un informe de estado en respuesta al mensaje de SubscribeConfirm.

kEvent_OnSubscriptionEstablished

Se genera cuando se establece la suscripción correctamente.

En este momento, la aplicación puede llamar a EndSubscription(), AbortSubscription() o Free().

kEvent_OnSubscriptionTerminated

Indica el final de esta suscripción.

Los parámetros enviados a nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback indicarán si se intentará volver a suscribirse automáticamente.

Durante la llamada al controlador de eventos, el estado del cliente será Terminated. Si no se intentará realizar ningún reintento, el estado del cliente cambiará a Initialized cuando vuelva el controlador de eventos. De lo contrario, el estado pasará a ResubscribeHoldoff y se intentará restablecer la suscripción después del tiempo de espera.

La aplicación puede llamar a AbortSubscription() o Free() en este estado.

Los parámetros enviados también incluirán un código de error que indicará el motivo de la finalización de la suscripción.

Es posible que la suscripción se haya cancelado por varios motivos (falta WRM ACK, error de asignación de ExchangeContext, tiempo de espera de respuesta, etc.) Estos son algunos de los posibles códigos de error que genera el cliente:

Código de error Significado
WEAVE_ERROR_INVALID_MESSAGE_TYPE Se recibió un mensaje no reconocido.
WEAVE_ERROR_TIMEOUT No se recibe una confirmación o falla la verificación de funcionamiento.
WEAVE_ERROR_INCORRECT_STATE Los mensajes se reciben en un estado inesperado.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Se recibió un informe de estado.
WEAVE_ERROR_INVALID_ARGUMENT Los campos de la solicitud de suscripción no son válidos.

kEvent_OnUpdateComplete

Es un evento que indica que se completó la actualización.

Los parámetros de evento indicarán si la actualización de una ruta trait específica se completó correctamente o si falló.

ResubscribePolicyCallback

void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)

Es la devolución de llamada para recuperar el intervalo de tiempo que se debe esperar antes de volver a suscribirse.

En esta función, las aplicaciones pueden anularse o no volver a suscribirse.

Detalles
Parámetros
[in] aAppState
Es el puntero de estado de la app que se estableció durante la inicialización de SubscriptionClient.
[in] aInParam
Estructura con detalles adicionales sobre el reintento
[out] aOutIntervalMsec
Tiempo en milisegundos de espera antes de volver a intentarlo

Funciones estáticas públicas

DefaultEventHandler

void DefaultEventHandler(
  EventID aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

DefaultResubscribePolicyCallback

void DefaultResubscribePolicyCallback(
  void *const aAppState,
  ResubscribeParam & aInParam,
  uint32_t & aOutIntervalMsec
)

La implementación de la política predeterminada elegirá un intervalo de tiempo aleatorio con una resolución de milisegundos en un período que aumente de forma constante, siguiendo una secuencia de Fibonacci hasta un máximo de WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

El promedio del tiempo de espera aleatorio después del WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX será de alrededor de una hora. Cuando el recuento de reintentos se restablece a 0, la secuencia vuelve a comenzar desde el principio.

Funciones públicas

AbortSubscription

void AbortSubscription(
  void
)

Anula la suscripción.

Anula la suscripción de un cliente.

Dejar de aceptar de inmediato todo el tráfico asociado con la suscripción y liberar todos los recursos de comunicación subyacentes El objeto SubscriptionClient en sí sigue siendo válido y puede usarse nuevamente.

Finaliza el extremo del cliente de una suscripción sin notificar al publicador de la suscripción y sin entregar un evento OnSubscriptionTerminated al controlador de eventos de la aplicación. Si existe una suscripción mutua, también se cancela la suscripción de contador.

Después de llamar a AbortSubscription(), el objeto SubscriptionClient entra en el estado Terminated. Una vez que se completa el proceso de finalización, el objeto entra en el estado Initialized. Ambas transiciones ocurren de forma síncrona dentro de la llamada a AbortSubscription().

Después de que se devuelve AbortSubscription(), el objeto SubscriptionClient se puede usar para iniciar otra suscripción o se puede liberar llamando al método Free().

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

Inhabilita el mecanismo para volver a suscribirse.

Esta acción se anulará si había una nueva suscripción pendiente.

DiscardUpdates

void DiscardUpdates()

Le indica a SubscriptionClient que vacíe el conjunto de TraitPaths pendientes de actualización y que anule la solicitud de actualización que está en curso, si la hay.

Este método se puede invocar desde cualquier devolución de llamada.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Habilita las opciones para volver a suscribirse automáticamente.

Adjunta una devolución de llamada para especificar la próxima hora de reintento en caso de falla.

Detalles
Parámetros
[in] aCallback
Es la devolución de llamada opcional para recuperar la cantidad de tiempo que se debe esperar antes de volver a intentarlo después de una falla. Si es NULO, usa una política predeterminada.

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Finaliza la suscripción.

Finaliza correctamente la suscripción de un cliente.

Cuando la opción de tiempo de compilación WDM_ENABLE_SUBSCRIPTION_CANCEL está habilitada, finaliza la suscripción de forma correcta enviando una CancelRequest al par. Los recursos asociados con la suscripción se liberan en respuesta del par o cuando se agota el tiempo de espera. Cuando la opción está inhabilitada, la llamada equivale a AbortSubscription().

Finaliza de manera correcta el extremo del cliente de una suscripción. Si se habilita la compatibilidad con la cancelación de suscripciones, se envía un mensaje de SubscribeCancelRequest y el sistema espera una respuesta antes de rescindir la suscripción. De lo contrario, la suscripción se cancela de inmediato de manera similar a AbortSubscription(). Si existe una suscripción mutua, también se cancela la contrasuscripción.

Mientras se espera una respuesta a una SubscribeCancelRequest, el SubscriptionClient entra en el estado Canceling.

Una vez que se inicia el proceso de finalización, el objeto SubscriptionClient entra en el estado Terminated y se entrega un evento OnSubscriptionTerminated al controlador de eventos de la aplicación. Ten en cuenta que, si la compatibilidad con la cancelación no está habilitada, se puede llamar al controlador de eventos de forma síncrona dentro de la llamada a EndSubscription().

Después de que se muestra el controlador de eventos de la aplicación, el objeto SubscriptionClient entra en el estado Initialized. En este punto, el objeto SubscriptionClient se puede usar para iniciar otra suscripción o se puede liberar llamando al método Free().

FlushUpdate

WEAVE_ERROR FlushUpdate()

Indica que la aplicación terminó de mutar todos los TraitUpdatableDataReceivers.

A menos que esté en curso un intercambio de actualización anterior, el cliente tomará todos los datos marcados como actualizados y los enviará a la persona que responde en una solicitud de actualización. Se puede llamar a este método desde cualquier subproceso.

Detalles
Parámetros
[in] aForce
Si es verdadero, la actualización se envía de inmediato, incluso si se programó un reintento en el futuro. Este parámetro se considera falso de forma predeterminada.
Qué muestra
WEAVE_NO_ERROR en caso de éxito; otros códigos WEAVE_ERROR en caso de falla.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Gratis

void Free(
  void
)

Libera este objeto SubscriptionClient.

Libera un objeto SubscriptionClient.

Llama a AbortSubscription() si es necesario y libera la referencia en este objeto SubscriptionClient. Con el uso correcto, esto debería permitir que el objeto se devuelva al grupo de objetos

Libera el objeto SubscriptionClient. Si una suscripción está activa o en curso, se cancela inmediatamente de manera similar a la llamada a AbortSubscription(). Si hay solicitudes de actualización en curso, se anulan de manera similar.

La aplicación es responsable de llamar a Free() exactamente una vez durante la vida útil de un objeto SubscriptionClient. Una vez que se llama a Free(), no se deben hacer más referencias al objeto.

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
)

Configura SubscriptionClient como un iniciador (en lugar de un contador de suscriptores) y sube la suscripción si no lo es.

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()

Se debe llamar a este método cuando se haya modificado el catálogo TraitDataSink.

ResetResubscribe

void ResetResubscribe(
  void
)

Desactivar el mecanismo para volver a suscribirse

Esta acción iniciará un reintento inmediato

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

WEAVE_ERROR SetUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

SuspendUpdateRetries

void SuspendUpdateRetries()

Le indica a SubscriptionClient que deje de reintentar las solicitudes de actualización.

Permite que la aplicación suspenda las actualizaciones durante un período de tiempo sin descartar todos los metadatos. Las actualizaciones y los reintentos se reanudarán cuando se llame a FlushUpdate. Cuando se llama para suspender actualizaciones mientras una actualización está en curso, la actualización no se cancela, pero en caso de que falle, no se volverá a intentar hasta que se vuelva a llamar a FlushUpdate.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)