nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
摘要
公開類型 |
|
---|---|
@130
|
列舉 |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
將訂閱事件傳遞至應用程式的回呼。 |
EventID{
|
列舉 |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
回呼,擷取下次重新訂閱前,要等待的時間間隔。 |
公開的靜態函式 |
|
---|---|
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 為止。
|
結構 |
|
---|---|
nl:: |
|
nl:: |
工會 |
|
---|---|
nl:: |
|
nl:: |
公開類型
@130
@130
EventCallback
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
將訂閱事件傳遞至應用程式的回呼。
詳細說明 | |||||||||
---|---|---|---|---|---|---|---|---|---|
參數 |
|
EventID
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
|
在引擎準備傳送 SubscriptionRequest 時傳送。 應用程式應填入其要訂閱的路徑。 |
||||||||||||
kEvent_OnSubscriptionActivity
|
表示訂閱活動的事件。 每當客戶收到訂閱活動指示時,就會產生這個錯誤;這包括建立成功的訂閱、接收的 NotificationRequest 或接收回應 SubscriptionsConfirm 訊息的狀態報告。 |
||||||||||||
kEvent_OnSubscriptionEstablished
|
在成功建立訂閱時產生。 此時應用程式可能會呼叫 EndSubscription()、AbortSubscription() 或 Free()。 |
||||||||||||
kEvent_OnSubscriptionTerminated
|
標示訂閱期。 傳送至 nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback 的參數將指出系統是否自動嘗試重新訂閱。 在事件處理常式呼叫期間,用戶端的狀態會是 應用程式在此狀態中可以呼叫 AbortSubscription() 或 Free()。 傳送的參數也會包含錯誤代碼,指出取消訂閱的原因。 訂閱已終止的可能原因很多 (例如缺少 WRM ACK、ExchangeContext 分配失敗、回應逾時......)用戶端產生的一些錯誤代碼:
|
||||||||||||
kEvent_OnUpdateComplete
|
表示更新完成的事件。 事件參數會標出特定特徵路徑的更新成功或失敗。 |
ResubscribePolicyCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &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 時,序列就會重新開始。
公用函式
AbortSubscription
void AbortSubscription( void )
取消訂閱。
取消用戶端訂閱項目。
立即停止接受與訂閱項目相關的所有流量,並釋出所有基礎通訊資源。SubscriptionClient 物件本身仍有效,且可能會再次使用。
終止訂閱的用戶端,不通知訂閱發布者,也不會將 OnSubscriptionTerminated
事件傳送至應用程式的事件處理常式。如有共同訂閱,系統也會終止計數器訂閱。
呼叫 AbortSubscription() 後,SubscriptionClient
物件會進入 Terminated
狀態。終止程序完成後,物件會進入 Initialized
狀態。這兩種轉換作業都會在對 AbortSubscription() 的呼叫中同步進行。
AbortSubscription() 傳回後,SubscriptionClient
物件可用於啟動其他訂閱,或者呼叫 Free() 方法則可釋放該物件。
ClearUpdated
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
DisableResubscribe
void DisableResubscribe( void )
停用重新訂閱機制。
如果重新訂閱尚待處理,系統會取消這項操作。
DiscardUpdates
void DiscardUpdates()
指示 SubscriptionClient 清空待更新的 TraitPath 組合,並取消進行中的更新要求 (如果有的話)。
這個方法可以透過任何回呼叫用。
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
啟用自動重新訂閱功能。
請附加回呼,指定下次失敗時的重試時間。
詳細說明 | |||
---|---|---|---|
參數 |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
結束訂閱。
順利結束用戶端訂閱。
啟用 WDM_ENABLE_SUBSCRIPTION_CANCEL 編譯時間選項啟用時,請傳送取消 Request 給對等互連,以順利結束訂閱。系統會在對等互連或逾時時釋出與訂閱項目相關聯的資源。停用選項後,呼叫等同於 AbortSubscription()。
順利終止用戶端。如果已啟用訂閱取消支援,系統會將 SubscriptionCancelRequest 訊息傳送給訂閱發布者,系統會在終止訂閱前等待回覆,否則訂閱會以類似 AbortSubscription() 的方式立即終止。如果存在同時訂閱,系統也會終止計數器訂閱。
在等待回應 SubscriptionCancelRequest 時,SubscriptionClient
會進入 Canceling
狀態。
終止程序開始後,SubscriptionClient
物件會進入 Terminated
狀態,並將 OnSubscriptionTerminated
事件傳送至應用程式的事件處理常式。請注意,如果您「沒有」啟用取消支援,則在對 EndSubscription() 的呼叫中,可能會同步呼叫事件處理常式。
應用程式的事件處理常式傳回後,SubscriptionClient
物件會進入 Initialized
狀態。此時,SubscriptionClient
物件可能會用於啟動其他訂閱,或透過呼叫 Free() 方法釋出該物件。
FlushUpdate
WEAVE_ERROR FlushUpdate()
表示應用程式已完成所有 TraitUpdatableDataSinks 異動的信號。
除非先前的更新交換作業正在進行中,否則用戶端會接收標示為已更新的所有資料,並透過一項更新要求傳送給作答者。這個方法可以從任何執行緒呼叫。
詳細說明 | |||
---|---|---|---|
參數 |
|
||
傳回 |
失敗時則為 WEAVE_NO_ERROR;失敗的其他 WEAVE_ERROR 代碼。
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
免費
void Free( void )
釋出這個 SubscriptionClient 物件。
釋放 SubscriptionClient
物件。
視需要呼叫 AbortSubscription(),並釋放這個 SubscriptionClient 物件的參照。在正確使用下,應該可以使物件傳回物件集區
釋放 SubscriptionClient
物件。如果訂閱項目已啟用或正在進行中,就會立即終止訂閱,方法與呼叫 AbortSubscription() 類似。如有任何正在處理的更新要求,同樣也會取消。
在 SubscriptionClient
物件的生命週期內,應用程式負責僅呼叫 Free() 一次。呼叫 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 )
InitiateSubscription
void InitiateSubscription( void )
將 SubscriptionClient 設為發起者 (而非計數器訂閱者),並在沒有訂閱項目的情況下啟動。
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 )
ResetResubscribe
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,才會重試更新。
UnlockUpdateMutex
void UnlockUpdateMutex( void )