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_RELICENSE_MAX_FIBONACCI_STEP_INDEX) 之後,以毫秒為單位的隨機時段選擇解析度。
|
Structs |
|
---|---|
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
|
表示訂閱活動的事件。 當用戶端收到訂閱活動的跡象時,便會產生此 ID。包括成功建立訂閱、接收 NotificationRequest 或接收狀態報告,以便回應 SubscribeConfirm 訊息。 |
||||||||||||
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_RELICENSE_MAX_FIBONACCI_STEP_INDEX) 之後,以毫秒為單位的隨機時段選擇解析度。
WDM_RE 異動_MAX_FIBONACCI_STEP_INDEX 之後的隨機等待時間平均約為 1 小時。當重試次數重設為 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 編譯時間選項時,請傳送 cancelRequest 給對等體,以便安全地結束訂閱。與訂閱項目相關聯的資源會在對等點回應或逾時時釋出。當選項停用時,呼叫等同於 AbortSubscription()。
優雅終止用戶端訂閱。如果您已啟用訂閱取消支援,系統會傳送 SubscriptionsCancelRequest 訊息給訂閱發布商,且系統會等候回覆後再終止訂閱。否則系統會立即以類似 AbortSubscription() 的方式終止訂閱項目。如果存在共同訂閱項目,系統也會終止計數器訂閱。
在等待回應 SubscribeCancelRequest 時,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 )