nl::Weave::Profiles::DataManagement_Current::SubscriptionClient

概要

パブリック タイプ

@130 enum
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
}
enum
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 に対して、更新待ちの TraitPath のセットを空にし、進行中の更新リクエストがあれば中止します。
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
イベントに関する追加の詳細情報を含む構造体
[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

更新の完了を示すイベント。

イベント パラメータは、特定のトレイトパスの更新が成功したか失敗したかを示します。

ResubscribePolicyCallback

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

次回の再度定期購入までの待機時間を取得するコールバック。

アプリケーションは、再度サブスクライブしないことを決定した場合、この関数で中止または解放できます。

詳細
パラメータ
[in] aAppState
SubscriptionClient の初期化中に設定されたアプリ状態ポインタ。
[in] aInParam
再試行に関する追加の詳細を含む構造体
[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 以降のランダムな待ち時間の平均は約 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
)

自動再登録を有効にする。

失敗時の次の再試行時間を指定するには、コールバックをアタッチします。

詳細
パラメータ
[in] aCallback
失敗した後に再試行するまでの待機時間を取得するオプションのコールバック。NULL の場合はデフォルト ポリシーを使用します。

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

定期購入を終了します。

クライアント サブスクリプションを正常に終了します。

WDM_ENABLE_SUBSCRIPTION_CANCEL コンパイル時オプションが有効になっている場合は、ピアに CancelRequest を送信してサブスクリプションを正常に終了します。サブスクリプションに関連付けられたリソースは、ピアからのレスポンスかタイムアウト時に解放されます。このオプションが無効になっている場合、呼び出しは AbortSubscription() と同等です。

サブスクリプションのクライアントエンドを正常に終了します。定期購入のキャンセルのサポートが有効になっている場合は、SubscribeCancelRequest メッセージが定期購入パブリッシャーに送信され、システムは応答を待ってから定期購入を終了します。それ以外の場合、AbortSubscription() と同様の方法でサブスクリプションは直ちに終了します。相互サブスクリプションが存在する場合、カウンター サブスクリプションも終了します。

SubscribeCancelRequest への応答を待っている間に、SubscriptionClientCanceling 状態になります。

終了プロセスが開始されると、SubscriptionClient オブジェクトは Terminated 状態になり、OnSubscriptionTerminated イベントがアプリのイベント ハンドラに配信されます。キャンセル サポートが有効になっていない場合は、EndSubscription() の呼び出し内でイベント ハンドラが同期的に呼び出される可能性があります。

アプリのイベント ハンドラが戻ると、SubscriptionClient オブジェクトは Initialized 状態になります。この時点で、SubscriptionClient オブジェクトを使用して別の定期購入を開始するか、Free() メソッドを呼び出して解放できます。

FlushUpdate

WEAVE_ERROR FlushUpdate()

アプリケーションがすべての TraitUpdatableDataSinks の変更を終了したことを通知します。

以前の更新交換が進行中の場合を除き、クライアントは 1 回の更新リクエストで更新としてマークされたすべてのデータを取得し、応答者に送信します。このメソッドはどのスレッドからでも呼び出すことができます。

詳細
パラメータ
[in] aForce
true の場合、後で再試行がスケジュールされていても、更新がすぐに送信されます。このパラメータは、デフォルトでは false と見なされます。
戻り値
成功した場合は 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
)

OnCatalogChanged

void OnCatalogChanged()

このメソッドは、TraitDataSink カタログが変更されたときに呼び出す必要があります。

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
)