nl:: Weave:: Profiles:: DataManagement_Current:: SubscriptionClient
概要
パブリック タイプ |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
定期購入イベントをアプリに渡すためのコールバック。 |
EventID{
|
enum |
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 までのフィボナッチ数列に従って、ミリ秒単位の分解能でランダムなタイムスロットが、増加し続けるウィンドウの中で選択されます。
|
パブリック関数 |
|
---|---|
AbortSubscription(void)
|
void
サブスクリプションを中止します。
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
再度定期購入メカニズムを無効にします。
|
DiscardUpdates()
|
void
SubscriptionClient に対して、更新待ちの TraitPath のセットを空にし、進行中の更新リクエストがあれば中止します。
|
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:: |
|
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
|
エンジンが SubscribeRequest を送信する準備が整うと送信されます。 アプリケーションは、サブスクライブするパスに値を入力することが求められます。 |
||||||||||||
kEvent_OnSubscriptionActivity
|
定期購入のアクティビティを示すイベント。 クライアントがサブスクリプション アクティビティの指示を受け取るたびに生成されます。これには、定期購入の確立の成功、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_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX までのフィボナッチ数列に従って、ミリ秒単位の分解能でランダムなタイムスロットが、増加し続けるウィンドウの中で選択されます。
WDM_RESUBSCRIBE_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() と同等です。
サブスクリプションのクライアントエンドを正常に終了します。定期購入のキャンセルのサポートが有効になっている場合は、SubscribeCancelRequest メッセージが定期購入パブリッシャーに送信され、システムは応答を待ってから定期購入を終了します。それ以外の場合、AbortSubscription() と同様の方法でサブスクリプションは直ちに終了します。相互サブスクリプションが存在する場合、カウンター サブスクリプションも終了します。
SubscribeCancelRequest への応答を待っている間に、SubscriptionClient
は Canceling
状態になります。
終了プロセスが開始されると、SubscriptionClient
オブジェクトは Terminated
状態になり、OnSubscriptionTerminated
イベントがアプリのイベント ハンドラに配信されます。キャンセル サポートが有効になっていない場合は、EndSubscription() の呼び出し内でイベント ハンドラが同期的に呼び出される可能性があります。
アプリのイベント ハンドラが戻ると、SubscriptionClient
オブジェクトは Initialized
状態になります。この時点で、SubscriptionClient
オブジェクトを使用して別の定期購入を開始するか、Free() メソッドを呼び出して解放できます。
FlushUpdate
WEAVE_ERROR FlushUpdate()
アプリケーションがすべての TraitUpdatableDataSinks の変更を終了したことを通知します。
以前の更新交換が進行中の場合を除き、クライアントは 1 回の更新リクエストで更新としてマークされたすべてのデータを取得し、応答者に送信します。このメソッドはどのスレッドからでも呼び出すことができます。
詳細 | |||
---|---|---|---|
パラメータ |
|
||
戻り値 |
成功した場合は WEAVE_NO_ERROR。他の WEAVE_ERROR コードが返されます。
|
FlushUpdate
WEAVE_ERROR FlushUpdate( bool aForce )
無料
void Free( void )
この SubscriptionClient オブジェクトを解放します。
SubscriptionClient
オブジェクトを解放します。
必要に応じて AbortSubscription() を呼び出し、この SubscriptionClient オブジェクトの参照カウントを解放します。正しく使用すれば、これによりオブジェクトがオブジェクト プールに返されるようになります。
SubscriptionClient
オブジェクトを解放します。サブスクリプションが有効または処理中の場合、AbortSubscription() を呼び出す場合と同様の方法でサブスクリプションは直ちに終了します。処理中の更新リクエストも同様に中止されます。
アプリケーションでは、SubscriptionClient
オブジェクトの存続期間中に Free() を 1 回だけ呼び出す必要があります。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 )