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

Ringkasan

Jenis publik

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
Callback untuk meneruskan peristiwa langganan ke aplikasi.
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(*
Callback untuk mengambil interval waktu tunggu sebelum berlangganan lagi berikutnya.

Fungsi statis publik

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
Penerapan kebijakan default akan memilih slot waktu acak dengan resolusi milidetik selama periode yang terus meningkat, mengikuti urutan fibonacci hingga WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Fungsi publik

AbortSubscription(void)
void
Membatalkan langganan.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
Menonaktifkan mekanisme berlangganan lagi.
DiscardUpdates()
void
Memberi tahu SubscriptionClient untuk mengosongkan kumpulan TraitPaths yang tertunda untuk diupdate dan membatalkan permintaan update yang sedang berlangsung, jika ada.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
Mengaktifkan berlangganan lagi otomatis.
EndSubscription(void)
Mengakhiri langganan.
FlushUpdate()
Sinyal bahwa aplikasi telah selesai mengubah semua TraitUpdatableDataSinks.
FlushUpdate(bool aForce)
Free(void)
void
Bebaskan objek SubscriptionClient ini.
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
Konfigurasi SubscriptionClient sebagai inisiator (bukan counter-subscriber) dan naikkan langganan jika bukan.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
Metode ini harus dipanggil jika katalog TraitDataSink telah diubah.
ResetResubscribe(void)
void
Mulai mekanisme berlangganan lagi.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
Memberi tahu SubscriptionClient untuk berhenti mencoba lagi permintaan pembaruan.
UnlockUpdateMutex(void)
void

Struct

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

Serikat

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::OutEventParam

Jenis publik

@130

 @130

EventCallback

void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

Callback untuk meneruskan peristiwa langganan ke aplikasi.

Detail
Parameter
[in] aAppState
Pointer status aplikasi yang ditetapkan selama inisialisasi SubscriptionClient.
[in] aEvent
Menunjukkan peristiwa mana yang sedang berlangsung
[in] aInParam
Membuat struktur dengan detail tambahan tentang peristiwa
[out] aOutParam
Informasi yang diteruskan oleh aplikasi

EventID

 EventID
Properti
kEvent_OnEventStreamReceived

Dibuat saat SubscriptionEngine menghitung aliran peristiwa dalam pesan NotificationRequest.

Pada tahap ini, aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free().

kEvent_OnExchangeStart

Dibuat setelah binding disiapkan dan ExchangeContext telah disiapkan, tetapi sebelum pesan apa pun dikirim.

Ini adalah kesempatan terakhir bagi aplikasi untuk menyesuaikan setelan ExchangeContext, mEC valid dan dapat disesuaikan untuk setelan waktu tunggu. Aplikasi tidak boleh menyentuh kolom lain di klien dan tidak boleh menutup ExchangeContext.

kEvent_OnNoMorePendingUpdates

Peristiwa yang menunjukkan bahwa semua jalur dalam kumpulan update telah diproses oleh peer, dan tidak ada lagi jalur yang perlu diperbarui.

kEvent_OnNotificationProcessed

Dibuat saat SubscriptionEngine selesai memproses pesan NotificationRequest.

Pada tahap ini, aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free().

kEvent_OnNotificationRequest

Dihasilkan dari penerimaan NotificationRequest.

Pada tahap ini, aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free().

kEvent_OnSubscribeRequestPrepareNeeded

Dikirim saat mesin siap mengirimkan Permintaan Langganan.

Aplikasi ini diharapkan mengisi jalur yang ingin dijadikan langganan.

kEvent_OnSubscriptionActivity

Peristiwa yang menunjukkan aktivitas langganan.

ID ini dibuat setiap kali klien menerima indikasi aktivitas langganan; hal ini termasuk keberhasilan pembuatan langganan, penerimaan NotificationRequest, atau tanda terima laporan status sebagai respons atas pesan SubscribeConfirm.

kEvent_OnSubscriptionEstablished

Dibuat setelah langganan berhasil dibuat.

Pada tahap ini, aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free().

kEvent_OnSubscriptionTerminated

Menandai akhir dari langganan ini.

Parameter yang dikirim ke nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback akan menunjukkan apakah berlangganan lagi akan otomatis dicoba atau tidak.

Selama panggilan pengendali peristiwa, status klien akan menjadi Terminated. Jika tidak ada percobaan ulang yang akan dicoba, status klien akan beralih ke Initialized saat pengendali peristiwa ditampilkan. Jika tidak, status akan ditransisikan ke ResubscribeHoldoff dan upaya akan dilakukan untuk membuat kembali langganan setelah waktu penundaan.

Aplikasi dapat memanggil AbortSubscription() atau Free() dalam status ini.

Parameter yang dikirim juga akan menyertakan kode error yang menunjukkan alasan untuk mengakhiri langganan.

Langganan dapat dihentikan karena sejumlah alasan (WRM ACK tidak ada, kegagalan alokasi ExchangeContext, waktu tunggu respons,...) Beberapa kemungkinan kode error yang dihasilkan oleh klien:

Kode error Arti
WEAVE_ERROR_INVALID_MESSAGE_TYPE Pesan tidak dikenal diterima.
WEAVE_ERROR_TIMEOUT Konfirmasi tidak diterima atau pemeriksaan keaktifan gagal.
WEAVE_ERROR_INCORRECT_STATE Pesan diterima dalam keadaan tidak terduga.
WEAVE_ERROR_STATUS_REPORT_RECEIVED Laporan status diterima.
WEAVE_ERROR_INVALID_ARGUMENT Kolom permintaan berlangganan tidak valid.

kEvent_OnUpdateComplete

Peristiwa yang menunjukkan selesainya update.

Parameter peristiwa akan menunjukkan apakah update jalur karakteristik tertentu berhasil atau gagal.

ResubscribePolicyCallback

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

Callback untuk mengambil interval waktu tunggu sebelum berlangganan lagi berikutnya.

Aplikasi diizinkan untuk dibatalkan/dibebaskan dalam fungsi ini jika mereka memutuskan untuk berhenti berlangganan kembali.

Detail
Parameter
[in] aAppState
Pointer status aplikasi yang ditetapkan selama inisialisasi SubscriptionClient.
[in] aInParam
Membuat struktur dengan detail tambahan tentang percobaan ulang
[out] aOutIntervalMsec
Waktu dalam milidetik untuk menunggu sebelum percobaan ulang berikutnya

Fungsi statis publik

DefaultEventHandler

void DefaultEventHandler(
  EventID aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

DefaultResubscribePolicyCallback

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

Penerapan kebijakan default akan memilih slot waktu acak dengan resolusi milidetik selama periode yang terus meningkat, mengikuti urutan fibonacci hingga WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.

Rata-rata waktu tunggu acak yang melewati WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX akan menjadi sekitar satu jam. Saat jumlah percobaan ulang diatur ulang ke 0, urutan akan dimulai lagi dari awal.

Fungsi publik

AbortSubscription

void AbortSubscription(
  void
)

Membatalkan langganan.

Membatalkan langganan klien.

Segera berhenti menerima semua traffic yang terkait dengan langganan dan lepaskan semua resource komunikasi yang mendasarinya. Objek SubscriptionClient tetap valid dan dapat digunakan lagi.

Menghentikan akhir langganan klien, tanpa memberi tahu penerbit langganan dan tanpa mengirim peristiwa OnSubscriptionTerminated ke pengendali peristiwa aplikasi. Jika ada langganan bersama, langganan balasan juga akan dihentikan.

Setelah memanggil AbortSubscription(), objek SubscriptionClient memasuki status Terminated. Setelah proses penghentian selesai, objek memasuki status Initialized. Kedua transisi terjadi secara sinkron dalam panggilan ke AbortSubscription().

Setelah AbortSubscription() ditampilkan, objek SubscriptionClient dapat digunakan untuk memulai langganan lain, atau dapat dibebaskan dengan memanggil metode Free().

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

Menonaktifkan mekanisme berlangganan lagi.

Tindakan ini akan dibatalkan jika ada permintaan berlangganan lagi yang masih tertunda.

DiscardUpdates

void DiscardUpdates()

Memberi tahu SubscriptionClient untuk mengosongkan kumpulan TraitPaths yang tertunda untuk diupdate dan membatalkan permintaan update yang sedang berlangsung, jika ada.

Metode ini dapat dipanggil dari callback apa pun.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

Mengaktifkan berlangganan lagi otomatis.

Tambahkan callback untuk menentukan waktu percobaan ulang berikutnya jika gagal.

Detail
Parameter
[in] aCallback
Callback opsional untuk mengambil jumlah waktu tunggu sebelum mencoba lagi setelah kegagalan. Jika NULL menggunakan kebijakan default.

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

Mengakhiri langganan.

Mengakhiri langganan klien dengan baik.

Jika opsi waktu kompilasi WDM_ENABLE_SUBSCRIPTION_CANCEL diaktifkan, akhiri langganan dengan baik dengan mengirimkan CancelRequest ke pembanding. Resource yang terkait dengan langganan dibebaskan dari tanggapan rekan atau saat waktu tunggu habis. Jika opsi ini dinonaktifkan, panggilan tersebut setara dengan AbortSubscription().

Menghentikan akhir langganan klien secara halus. Jika dukungan pembatalan langganan diaktifkan, pesan SubscribeCancelRequest akan dikirim ke penerbit langganan dan sistem akan menunggu balasan sebelum menghentikan langganan; jika tidak, langganan akan langsung dihentikan dengan cara yang serupa dengan AbortSubscription(). Jika ada langganan bersama, langganan balasan juga akan dihentikan.

Selagi menunggu respons terhadap SubscribeCancelRequest, SubscriptionClient akan memasuki status Canceling.

Setelah proses penghentian dimulai, objek SubscriptionClient memasuki status Terminated dan peristiwa OnSubscriptionTerminated dikirim ke pengendali peristiwa aplikasi. Perhatikan bahwa, jika dukungan pembatalan tidak diaktifkan, pengendali peristiwa dapat dipanggil secara sinkron dalam panggilan ke EndSubscription().

Setelah pengendali peristiwa aplikasi ditampilkan, objek SubscriptionClient memasuki status Initialized. Pada tahap ini, objek SubscriptionClient dapat digunakan untuk memulai langganan lain, atau dapat dibebaskan dengan memanggil metode Free().

FlushUpdate

WEAVE_ERROR FlushUpdate()

Sinyal bahwa aplikasi telah selesai mengubah semua TraitUpdatableDataSinks.

Kecuali jika pertukaran update sebelumnya sedang berlangsung, klien akan mengambil semua data yang ditandai sebagai diperbarui dan mengirimkannya kepada responden dalam satu permintaan pembaruan. Metode ini dapat dipanggil dari thread apa pun.

Detail
Parameter
[in] aForce
Jika true (benar), menyebabkan update akan segera dikirim meskipun percobaan ulang telah dijadwalkan pada masa mendatang. Parameter ini dianggap salah secara default.
Hasil
WEAVE_NO_ERROR jika berhasil; kode WEAVE_ERROR lainnya jika terjadi kegagalan.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

Gratis

void Free(
  void
)

Bebaskan objek SubscriptionClient ini.

Bebaskan objek SubscriptionClient.

Memanggil AbortSubscription() jika perlu dan melepaskan refcount pada objek SubscriptionClient ini. Dengan penggunaan yang benar, tindakan ini akan memungkinkan objek dikembalikan ke kumpulan objek

Membebaskan objek SubscriptionClient. Jika langganan masih aktif atau sedang berlangsung, langganan akan langsung dihentikan dengan cara yang sama seperti memanggil AbortSubscription(). Jika ada permintaan update yang sedang berlangsung, permintaan tersebut juga akan dibatalkan.

Aplikasi bertanggung jawab untuk memanggil Free() sekali saja selama masa aktif objek SubscriptionClient. Setelah Free() dipanggil, tidak ada referensi lebih lanjut yang harus dilakukan ke objek.

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
)

Konfigurasi SubscriptionClient sebagai inisiator (bukan counter-subscriber) dan naikkan langganan jika bukan.

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()

Metode ini harus dipanggil jika katalog TraitDataSink telah diubah.

ResetResubscribe

void ResetResubscribe(
  void
)

Mulai mekanisme berlangganan lagi.

Tindakan ini akan memulai percobaan ulang segera

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

WEAVE_ERROR SetUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

SuspendUpdateRetries

void SuspendUpdateRetries()

Memberi tahu SubscriptionClient untuk berhenti mencoba lagi permintaan pembaruan.

Mengizinkan aplikasi menangguhkan update selama jangka waktu tertentu tanpa menghapus semua metadata. Update dan percobaan ulang akan dilanjutkan saat FlushUpdate dipanggil. Ketika dipanggil untuk menangguhkan update saat update sedang berlangsung, update tidak dibatalkan, tetapi jika gagal, update tidak akan dicoba lagi hingga FlushUpdate dipanggil lagi.

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)