нл:: Переплетение:: Профили:: DataManagement_Current:: ПодпискаКлиент
Краткое содержание
Публичные типы | |
---|---|
@130 | перечисление |
EventCallback )(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) | определение типаvoid(* Обратный вызов для передачи событий подписки в приложение. |
EventID { | перечисление |
ResubscribePolicyCallback )(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) | определение типа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 | 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 Настройте 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
Обратный вызов события
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Обратный вызов для передачи событий подписки в приложение.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
|
идентификатор события
EventID
Характеристики | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived | Создается, когда SubscriptionEngine обнаруживает поток событий в сообщении NotificationRequest. На этом этапе приложение может вызвать EndSubscription() , AbortSubscription() или Free() . | ||||||||||||
kEvent_OnExchangeStart | Создается после подготовки привязки и настройки ExchangeContext , но до отправки каких-либо сообщений. Это последний шанс для приложения настроить параметры 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, будут указывать, будет ли автоматически предпринята попытка повторной подписки. Во время вызова обработчика события состояние клиента будет В этом состоянии приложение может вызвать AbortSubscription() или Free() . Отправленные параметры также будут включать код ошибки, указывающий причину прекращения подписки. Подписка могла быть прекращена по ряду причин (отсутствие подтверждения WRM, ошибка выделения ExchangeContext , тайм-аут ответа и т. д.). Некоторые возможные коды ошибок, сгенерированные клиентом:
| ||||||||||||
kEvent_OnUpdateComplete | Событие, обозначающее завершение обновления. Параметры события будут указывать, было ли обновление определенного пути признака успешным или неудачным. |
Повторная подпискаПолитика обратного вызова
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
Обратный вызов для получения интервала времени ожидания перед следующей повторной подпиской.
Приложениям разрешено прерывать/освобождать эту функцию, если они решили отказаться от повторной подписки.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
Публичные статические функции
Обработчик событий по умолчанию
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
обработчику событий приложения. Если существует взаимная подписка, встречная подписка также прекращается.
При вызове AbortSubscription() объект SubscriptionClient
переходит в состояние Terminated
. После завершения процесса завершения объект переходит в состояние Initialized
». Оба перехода происходят синхронно в рамках вызова AbortSubscription() .
После возврата AbortSubscription() объект SubscriptionClient
можно использовать для инициации другой подписки или его можно освободить, вызвав метод Free() .
ОчиститьОбновлено
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
ОтключитьПовторить подписку
void DisableResubscribe( void )
Отключите механизм повторной подписки.
Это прервется, если ожидается повторная подписка.
Отменить обновления
void DiscardUpdates()
Сообщает SubscriptionClient очистить набор TraitPaths, ожидающих обновления, и прервать выполняющийся запрос на обновление, если таковой имеется.
Этот метод можно вызвать из любого обратного вызова.
Включитьповторную подписку
void EnableResubscribe( ResubscribePolicyCallback aCallback )
Включите автоматическую повторную подписку.
Прикрепите обратный вызов, чтобы указать время следующей попытки в случае сбоя.
Подробности | |||
---|---|---|---|
Параметры |
|
Завершить подписку
WEAVE_ERROR EndSubscription( void )
Завершить подписку.
Грамотно завершить клиентскую подписку.
Если опция времени компиляции WDM_ENABLE_SUBSCRIPTION_CANCEL включена, корректно завершите подписку, отправив запрос CancelRequest одноранговому узлу. Ресурсы, связанные с подпиской, освобождаются при ответе от узла или по истечении времени ожидания. Когда опция отключена, вызов эквивалентен AbortSubscription() .
Грамотно завершает клиентскую часть подписки. Если включена поддержка отмены подписки, издателю подписки отправляется сообщение SubscribeCancelRequest, и система ожидает ответа перед прекращением подписки; в противном случае подписка немедленно прекращается аналогично AbortSubscription() . Если существует взаимная подписка, встречная подписка также прекращается.
В ожидании ответа на SubscribeCancelRequest SubscriptionClient
переходит в состояние Canceling
.
После начала процесса завершения объект SubscriptionClient
переходит в состояние Terminated
, и событие OnSubscriptionTerminated
доставляется обработчику событий приложения. Обратите внимание: если поддержка отмены не включена, обработчик событий может вызываться синхронно внутри вызова EndSubscription() .
После возврата обработчика событий приложения объект SubscriptionClient
переходит в состояние Initialized
. На этом этапе объект SubscriptionClient
можно использовать для инициирования другой подписки или его можно освободить, вызвав метод Free() .
ФлешОбновление
WEAVE_ERROR FlushUpdate()
Сигнализирует о том, что приложение завершило изменение всех TraitUpdatableDataSinks.
Если предыдущий обмен обновлениями не выполняется, клиент возьмет все данные, помеченные как обновленные, и отправит их ответчику в одном запросе на обновление. Этот метод можно вызвать из любого потока.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | WEAVE_NO_ERROR в случае успеха; другие коды WEAVE_ERROR в случае сбоя. |
ФлешОбновление
WEAVE_ERROR FlushUpdate( bool aForce )
Бесплатно
void Free( void )
Освободите этот объект SubscriptionClient .
Освободите объект SubscriptionClient
.
При необходимости вызывает AbortSubscription() и освобождает счетчик ссылок для этого объекта SubscriptionClient . При правильном использовании это должно позволить вернуть объект в пул объектов.
Освобождает объект SubscriptionClient
. Если подписка активна или находится в стадии выполнения, она немедленно прекращается аналогично вызову AbortSubscription() . Если какие-либо запросы на обновление выполняются, они аналогичным образом отменяются.
Приложение отвечает за вызов Free() ровно один раз за время существования объекта SubscriptionClient
. После вызова Free() больше никаких ссылок на объект делать нельзя.
Получить привязку
Binding * GetBinding( void ) const
GetLivenessTimeoutMsec
uint32_t GetLivenessTimeoutMsec( void ) const
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
GetSubscriptionId
WEAVE_ERROR GetSubscriptionId( uint64_t *const apSubscriptionId )
Индикация активности
void IndicateActivity( void )
ИнициатеСчетчикПодписка
void InitiateCounterSubscription( const uint32_t aLivenessTimeoutSec )
Инициировать подписку
void InitiateSubscription( void )
Настройте SubscriptionClient в качестве инициатора (в отличие от встречного подписчика) и активируйте подписку, если это не так.
Отмена
bool IsCanceling() const
установлено
bool IsEstablished()
IsEstablishedIdle
bool IsEstablishedIdle()
Бесплатно
bool IsFree()
ИсИнПрогрессОрестаблишед
bool IsInProgressOrEstablished()
IsInResubscribeHoldoff
bool IsInResubscribeHoldoff()
ИсRetryEnabled
bool IsRetryEnabled()
Истерминировано
bool IsTerminated()
Исупдатеожиданиеилиринпрогресс
bool IsUpdatePendingOrInProgress()
БлокировкаUpdateMutex
void LockUpdateMutex( void )
OnCatalogChanged
void OnCatalogChanged()
Этот метод следует вызывать при изменении каталога TraitDataSink .
СброситьПереподписаться
void ResetResubscribe( void )
Уберите механизм переподписки.
Это инициирует немедленную повторную попытку.
SetLivenessTimeoutMsec
void SetLivenessTimeoutMsec( uint32_t val )
УстановитьОбновлено
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
SuspendUpdateRetries
void SuspendUpdateRetries()
Сообщает SubscriptionClient прекратить повторные запросы на обновление.
Позволяет приложению приостанавливать обновления на определенный период без удаления всех метаданных. Обновления и повторные попытки будут возобновлены при вызове FlushUpdate. При вызове для приостановки обновлений во время выполнения обновления обновление не отменяется, но в случае сбоя оно не будет повторяться до тех пор, пока FlushUpdate не будет вызван снова.
РазблокироватьUpdateMutex
void UnlockUpdateMutex( void )