Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

nl :: Плетение :: Профили: DataManagement_Current :: SubscriptionClient

Резюме

Публичные типы

@130 перечислить
EventCallback )(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Обратный вызов для передачи событий подписки в приложение.
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
}
перечислить
ResubscribePolicyCallback )(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
Обратный вызов для получения интервала времени ожидания перед следующей повторной подпиской.

Публичные статические функции

DefaultEventHandler ( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback (void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
Реализация политики по умолчанию будет выбирать случайный временной интервал с разрешением миллисекунды по постоянно увеличивающемуся окну, следуя последовательности Фибоначчи до WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Публичные функции

AbortSubscription (void)
void
Отменить подписку.
ClearUpdated ( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe (void)
void
Отключите механизм повторной подписки.
DiscardUpdates ()
void
Указывает SubscriptionClient очистить набор TraitPaths, ожидающих обновления, и прервать текущий запрос на обновление, если таковой имеется.
EnableResubscribe ( ResubscribePolicyCallback aCallback)
void
Включить автоматическую повторную подписку.
EndSubscription (void)
Завершите подписку.
FlushUpdate ()
Сигнализирует, что приложение завершило изменение всех TraitUpdatableDataSinks.
FlushUpdate (bool aForce)
Free (void)
void
Освободите этот объект 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
Настройте SubscriptionClient в качестве инициатора (в отличие от встречного подписчика) и активируйте подписку, если это не так.
IsCanceling () const
bool
IsEstablished ()
bool
IsEstablishedIdle ()
bool
IsFree ()
bool
IsInProgressOrEstablished ()
bool
IsInResubscribeHoldoff ()
bool
IsRetryEnabled ()
bool
IsTerminated ()
bool
IsUpdatePendingOrInProgress ()
bool
LockUpdateMutex (void)
void
OnCatalogChanged ()
void
Этот метод следует вызывать при изменении каталога TraitDataSink .
ResetResubscribe (void)
void
Убейте механизм повторной подписки.
SetLivenessTimeoutMsec (uint32_t val)
void
SetUpdated ( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries ()
void
Сообщает SubscriptionClient о прекращении повторных запросов на обновление.
UnlockUpdateMutex (void)
void

Структуры

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

Союзы

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

Публичные типы

@ 130

 @130

EventCallback

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

Обратный вызов для передачи событий подписки в приложение.

Подробности
Параметры
[in] aAppState
Указатель состояния приложения устанавливается во время инициализации SubscriptionClient .
[in] aEvent
Указывает, какое событие происходит
[in] aInParam
Struct с дополнительной информацией о мероприятии
[out] aOutParam
Информация, возвращенная приложением

EventID

 EventID
Характеристики
kEvent_OnEventStreamReceived

Генерируется, когда SubscriptionEngine встречает поток событий в сообщении NotificationRequest.

В этот момент приложение может вызвать EndSubscription () , AbortSubscription () или Free () .

kEvent_OnExchangeStart

Генерируется после подготовки привязки и настройки ExchangeContext , но до отправки каких-либо сообщений.

Это последний шанс для приложения настроить параметры ExchangeContext , mEC действителен и может быть настроен для параметров тайм-аута. Приложение не должно касаться других полей в клиенте и не должно закрывать ExchangeContext .

kEvent_OnNoMorePendingUpdates

Событие, обозначающее, что все пути в наборе обновлений были обработаны одноранговым узлом и больше не нужно обновлять пути.

kEvent_OnNotificationProcessed

Генерируется, когда SubscriptionEngine завершает обработку сообщения NotificationRequest.

В этот момент приложение может вызвать EndSubscription () , AbortSubscription () или Free () .

kEvent_OnNotificationRequest

Генерируется при получении NotificationRequest.

В этот момент приложение может вызвать EndSubscription () , AbortSubscription () или Free () .

kEvent_OnSubscribeRequestPrepareNeeded

Отправляется, когда движок готов отправить SubscribeRequest.

Ожидается, что приложение заполнит пути, на которые оно хочет подписаться.

kEvent_OnSubscriptionActivity

Событие, указывающее на активность подписки.

Он генерируется всякий раз, когда клиент получает указание на активность подписки; это включает в себя успешное установление подписки, получение NotificationRequest или получение отчета о состоянии в ответ на сообщение SubscribeConfirm.

kEvent_OnSubscriptionEstablished

Генерируется при успешном создании подписки.

В этот момент приложение может вызвать EndSubscription () , AbortSubscription () или Free () .

kEvent_OnSubscriptionTerminated

Означает конец этой подписки.

Параметры, отправленные в nl :: Weave :: Profiles :: DataManagement_Current :: SubscriptionClient :: EventCallback, укажут, будет ли предпринята попытка повторной подписки автоматически.

Во время вызова обработчика событий состояние клиента будет Terminated . Если повторная попытка не будет предпринята, состояние клиента перейдет в состояние « Initialized когда обработчик событий вернется. В противном случае состояние перейдет в ResubscribeHoldoff и будет сделана попытка восстановить подписку после времени задержки.

В этом состоянии приложение может вызывать AbortSubscription () или Free () .

Отправленные параметры также будут включать код ошибки, указывающий причину прекращения подписки.

Подписка могла быть прекращена по ряду причин (отсутствует WRM ACK, сбой выделения ExchangeContext , тайм-аут ответа, ...). Некоторые возможные коды ошибок, созданные клиентом:

Код ошибки Имея в виду
WEAVE_ERROR_INVALID_MESSAGE_TYPE Получено нераспознанное сообщение.
WEAVE_ERROR_TIMEOUT Подтверждение не получено или проверка работоспособности не выполняется.
WEAVE_ERROR_INCORRECT_STATE Сообщения получены в неожиданном состоянии.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Получен отчет о состоянии.
WEAVE_ERROR_INVALID_ARGUMENT Поля запроса на подписку недействительны.

kEvent_OnUpdateComplete

Событие, обозначающее завершение обновления.

Параметры события укажут, было ли обновление определенного пути признака успешным или неудачным.

Повторная подписка

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

Обратный вызов для получения интервала времени ожидания перед следующей повторной подпиской.

Приложениям разрешено прервать / освободить эту функцию, если они решили отказаться от повторной подписки.

Подробности
Параметры
[in] aAppState
Указатель состояния приложения устанавливается во время инициализации SubscriptionClient .
[in] aInParam
Struct с дополнительными сведениями о повторной попытке
[out] aOutIntervalMsec
Время ожидания перед следующей попыткой в ​​миллисекундах

Публичные статические функции

DefaultEventHandler

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

DefaultResubscribePolicyCallback

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

Реализация политики по умолчанию будет выбирать случайный временной интервал с разрешением миллисекунды по постоянно увеличивающемуся окну, следуя последовательности Фибоначчи до WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Среднее рандомизированное время ожидания после WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX будет около одного часа. Когда счетчик повторов сбрасывается до 0, последовательность снова начинается с начала.

Публичные функции

Прервать подписку

void AbortSubscription(
  void
)

Отменить подписку.

Отменить клиентскую подписку.

Немедленно прекратите принимать весь трафик, связанный с подпиской, и освободите все основные коммуникационные ресурсы. Сам объект SubscriptionClient остается действующим и может использоваться снова.

Завершает клиентскую часть подписки без уведомления издателя подписки и без доставки события OnSubscriptionTerminated в OnSubscriptionTerminated событий приложения. Если существует взаимная подписка, прекращается и встречная подписка.

После вызова AbortSubscription () объект SubscriptionClient переходит в состояние Terminated . После завершения процесса завершения объект переходит в состояние Initialized . Оба перехода происходят синхронно в рамках вызова AbortSubscription () .

После возврата AbortSubscription () объект SubscriptionClient может быть использован для инициирования другой подписки или его можно освободить, вызвав метод Free () .

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

Отключить

void DisableResubscribe(
  void
)

Отключите механизм повторной подписки.

Это будет прервано, если повторная подписка ожидала.

Отменить обновления

void DiscardUpdates()

Указывает SubscriptionClient очистить набор TraitPaths, ожидающих обновления, и прервать текущий запрос на обновление, если таковой имеется.

Этот метод можно вызвать из любого обратного вызова.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Включите автоматическую повторную подписку.

Прикрепите обратный вызов, чтобы указать время следующей попытки при ошибке.

Подробности
Параметры
[in] aCallback
Необязательный обратный вызов для получения времени ожидания перед повторной попыткой после сбоя. Если NULL, используйте политику по умолчанию.

Конец подписки

WEAVE_ERROR EndSubscription(
  void
)

Завершите подписку.

Изящно завершите клиентскую подписку.

Когда параметр времени компиляции WDM_ENABLE_SUBSCRIPTION_CANCEL включен, корректно завершите подписку, отправив одноранговому узлу CancelRequest. Ресурсы, связанные с подпиской, освобождаются при ответе от однорангового узла или по истечении времени ожидания. Когда опция отключена, вызов эквивалентен AbortSubscription () .

Изящно завершает клиентскую часть подписки. Если включена поддержка отмены подписки, издателю подписки отправляется сообщение SubscribeCancelRequest, и система ожидает ответа перед прекращением подписки; в противном случае подписка немедленно прекращается аналогично AbortSubscription () . Если существует взаимная подписка, прекращается и встречная подписка.

Ожидая ответа на SubscribeCancelRequest, SubscriptionClient переходит в состояние Canceling .

После начала процесса завершения объект SubscriptionClient переходит в состояние Terminated и событие OnSubscriptionTerminated доставляется обработчику событий приложения. Обратите внимание: если поддержка отмены не включена, обработчик событий может вызываться синхронно в рамках вызова EndSubscription () .

После возврата обработчика событий приложения объект SubscriptionClient переходит в состояние Initialized . На этом этапе объект SubscriptionClient может быть использован для инициирования другой подписки или его можно освободить, вызвав метод Free () .

FlushUpdate

WEAVE_ERROR FlushUpdate()

Сигнализирует, что приложение завершило изменение всех TraitUpdatableDataSinks.

Если предыдущий обмен обновлениями не выполняется, клиент берет все данные, помеченные как обновленные, и отправляет их респонденту в одном запросе на обновление. Этот метод можно вызвать из любого потока.

Подробности
Параметры
[in] aForce
Если true, вызывает немедленную отправку обновления, даже если повторная попытка была запланирована в будущем. По умолчанию этот параметр считается ложным.
Возврат
WEAVE_NO_ERROR в случае успеха; другие коды WEAVE_ERROR в случае сбоя.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Бесплатно

void Free(
  void
)

Освободите этот объект SubscriptionClient .

Освободите объект SubscriptionClient .

При необходимости вызывает AbortSubscription () и освобождает счетчик ссылок для этого объекта SubscriptionClient . При правильном использовании это должно позволить вернуть объект в пул объектов.

Освобождает объект SubscriptionClient . Если подписка активна или выполняется, подписка немедленно прекращается аналогично вызову AbortSubscription () . Если какие-либо запросы на обновление выполняются, они также прерываются.

Приложение отвечает за вызов Free () ровно один раз за время существования объекта SubscriptionClient . После вызова Free () никакие дальнейшие ссылки на объект не должны делаться.

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
)

Инициировать подписку

void InitiateSubscription(
  void
)

Настройте SubscriptionClient в качестве инициатора (в отличие от встречного подписчика) и активируйте подписку, если это не так.

IsCanceling

bool IsCanceling() const 

Установлено

bool IsEstablished()

IsEstablishedIdle

bool IsEstablishedIdle()

Это бесплатно

bool IsFree()

IsInProgressOrEstablished

bool IsInProgressOrEstablished()

IsInResubscribeHoldoff

bool IsInResubscribeHoldoff()

IsRetryEnabled

bool IsRetryEnabled()

Прекращено

bool IsTerminated()

IsUpdatePendingOrInProgress

bool IsUpdatePendingOrInProgress()

LockUpdateMutex

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

Этот метод следует вызывать при изменении каталога TraitDataSink .

Сбросить

void ResetResubscribe(
  void
)

Убейте механизм повторной подписки.

Это инициирует немедленную повторную попытку

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

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

SuspendUpdateRetries

void SuspendUpdateRetries()

Сообщает SubscriptionClient о прекращении повторных запросов на обновление.

Позволяет приложению приостанавливать обновления на определенный период времени без отмены всех метаданных. Обновления и повторные попытки будут возобновлены при вызове FlushUpdate. При вызове для приостановки обновлений во время выполнения обновления обновление не отменяется, но в случае сбоя оно не будет повторяться до тех пор, пока FlushUpdate не будет вызван снова.

РазблокироватьUpdateMutex

void UnlockUpdateMutex(
  void
)