nl:: Weave:: Profil:: DataManagement_Current:: SubscriptionClient
Ringkasan
Jenis publik |
|
---|---|
@130
|
enum |
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
Callback untuk meneruskan peristiwa langganan ke aplikasi. |
EventID{
|
enum |
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
|
typedefvoid(*
Callback untuk mengambil interval waktu untuk menunggu sebelum berlangganan kembali berikutnya. |
Fungsi statis publik |
|
---|---|
DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
|
void
Implementasi kebijakan default akan memilih slot waktu acak dengan resolusi milidetik di atas jendela yang semakin meningkat, mengikuti urutan fibonacci hingga WDM_RESUBSCRIBE_MAX_FIBONACCI_LANGKAH_INDEX.
|
Fungsi publik |
|
---|---|
AbortSubscription(void)
|
void
Membatalkan langganan.
|
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
|
|
DisableResubscribe(void)
|
void
Nonaktifkan mekanisme berlangganan lagi.
|
DiscardUpdates()
|
void
Memberi tahu SubscriptionClient untuk mengosongkan kumpulan TraitPath yang menunggu update dan membatalkan permintaan update yang sedang berlangsung, jika ada.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
Mengaktifkan langganan ulang 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
|
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
Konfigurasikan SubscriptionClient sebagai inisiator (bukan klien penghitung) dan tampilkan langganan jika tidak.
|
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 saat katalog TraitDataSink telah diubah.
|
ResetResubscribe(void)
|
void
Tendang mekanisme berlangganan lagi.
|
SetLivenessTimeoutMsec(uint32_t val)
|
void
|
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
|
|
SuspendUpdateRetries()
|
void
Memberi tahu SubscriptionClient agar berhenti mencoba lagi permintaan update.
|
UnlockUpdateMutex(void)
|
void
|
Struct |
|
---|---|
nl:: |
|
nl:: |
Serikat |
|
---|---|
nl:: |
|
nl:: |
Jenis publik
@130
@130
Callback Peristiwa
void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Callback untuk meneruskan peristiwa langganan ke aplikasi.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
ID acara
EventID
Properti | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
Dihasilkan 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 disiapkan, tetapi sebelum pesan dikirim. Ini adalah kesempatan terakhir bagi aplikasi untuk menyesuaikan setelan ExchangeContext, |
||||||||||||
kEvent_OnNoMorePendingUpdates
|
Peristiwa yang menunjukkan bahwa semua jalur dalam kumpulan update telah diproses oleh peer, dan tidak ada jalur lagi yang perlu diperbarui. |
||||||||||||
kEvent_OnNotificationProcessed
|
Dihasilkan saat SubscriptionEngine selesai menjalankan pesan NotificationRequest. Pada tahap ini, aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free(). |
||||||||||||
kEvent_OnNotificationRequest
|
Dibuat di receit dari NotificationRequest. Pada tahap ini, aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free(). |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Dikirim saat mesin siap mengirimkan BerlanggananRequest. Aplikasi diharapkan mengisi jalur yang ingin disubscribe. |
||||||||||||
kEvent_OnSubscriptionActivity
|
Peristiwa yang menunjukkan aktivitas langganan. Ini dihasilkan setiap kali klien menerima indikasi tentang aktivitas langganan; ini termasuk keberhasilan pembuatan langganan, penerimaan NotificationRequest, atau tanda terima laporan status sebagai respons terhadap pesan BerlanggananKonfirmasi. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
Dibuat setelah langganan berhasil dibuat. Pada tahap ini, aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free(). |
||||||||||||
kEvent_OnSubscriptionTerminated
|
Menandai akhir langganan ini. Parameter yang dikirim ke nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback akan menunjukkan apakah berlangganan ulang akan dicoba secara otomatis atau tidak. Selama panggilan pengendali peristiwa, status klien akan menjadi Aplikasi dapat memanggil AbortSubscription() atau Free() dalam status ini. Parameter yang dikirim juga akan menyertakan kode error yang menunjukkan alasan penghentian 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:
|
||||||||||||
kEvent_OnUpdateComplete
|
Peristiwa yang menunjukkan penyelesaian update. Parameter peristiwa akan menunjukkan apakah update jalur fitur tertentu telah berhasil atau gagal. |
Berlangganan KembaliKebijakanCallback
void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)
Callback untuk mengambil interval waktu untuk menunggu sebelum berlangganan kembali berikutnya.
Aplikasi diizinkan untuk membatalkan/bebas dalam fungsi ini jika mereka memutuskan untuk berhenti berlangganan.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Fungsi statis publik
PengendaliPeristiwaDefault
void DefaultEventHandler( EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
DefaultResubscribePolicyCallback
void DefaultResubscribePolicyCallback( void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec )
Implementasi kebijakan default akan memilih slot waktu acak dengan resolusi milidetik di atas jendela yang semakin meningkat, mengikuti urutan fibonacci hingga WDM_RESUBSCRIBE_MAX_FIBONACCI_LANGKAH_INDEX.
Rata-rata waktu tunggu acak setelah WDM_RESUBSCRIBE_MAX_FIBONACCI_LANGKAH_INDEX akan menjadi sekitar satu jam. Saat jumlah percobaan ulang disetel ulang ke 0, urutan akan dimulai dari awal lagi.
Fungsi publik
Batalkan Langganan
void AbortSubscription( void )
Membatalkan langganan.
Membatalkan langganan klien.
Segera hentikan penerimaan semua lalu lintas yang terkait dengan langganan, dan lepaskan semua sumber komunikasi yang mendasarinya. Objek SubscriptionClient itu sendiri tetap valid dan dapat digunakan lagi.
Menghentikan akhir klien pada langganan, tanpa memberi tahu penayang langganan dan tanpa mengirimkan peristiwa OnSubscriptionTerminated
ke pengendali peristiwa aplikasi. Jika ada langganan bersama, langganan penghitung juga akan dihentikan.
Setelah memanggil AbortSubscription(), objek SubscriptionClient
akan memasuki status Terminated
. Setelah proses penghentian selesai, objek akan memasuki status Initialized
. Kedua transisi terjadi secara sinkron dalam panggilan ke AbortSubscription().
Setelah AbortSubscription() ditampilkan, objek SubscriptionClient
dapat digunakan untuk memulai langganan lain atau mungkin dibebaskan dengan memanggil metode Free().
HapusDiperbarui
WEAVE_ERROR ClearUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle )
Nonaktifkan Berlangganan Ulang
void DisableResubscribe( void )
Nonaktifkan mekanisme berlangganan lagi.
Tindakan ini akan dibatalkan jika ada permintaan berlangganan lagi.
HapusPembaruan
void DiscardUpdates()
Memberi tahu SubscriptionClient untuk mengosongkan kumpulan TraitPath yang menunggu update dan membatalkan permintaan update yang sedang berlangsung, jika ada.
Metode ini dapat dipanggil dari callback mana pun.
Aktifkan Berlangganan Kembali
void EnableResubscribe( ResubscribePolicyCallback aCallback )
Mengaktifkan langganan ulang otomatis.
Lampirkan callback untuk menentukan waktu percobaan ulang berikutnya jika gagal.
Detail | |||
---|---|---|---|
Parameter |
|
Akhiri Langganan
WEAVE_ERROR EndSubscription( void )
Mengakhiri langganan.
Mengakhiri langganan klien dengan lancar.
Saat opsi waktu kompilasi WDM_ENABLE_SUBSCRIPTION_CANCEL diaktifkan, akhiri langganan dengan baik dengan mengirimkan CancelRequest ke pembanding. Resource yang terkait dengan langganan akan dibebaskan sebagai respons dari pembanding atau saat waktu tunggu habis. Jika opsi dinonaktifkan, panggilan setara dengan AbortSubscription().
Menghentikan langganan klien dengan elegan. Jika dukungan pembatalan langganan diaktifkan, pesan SubscriptionCancelRequest dikirim ke penayang langganan dan sistem menunggu balasan sebelum menghentikan langganan. Jika tidak, langganan akan segera dihentikan dengan cara yang sama seperti AbortSubscription(). Jika ada langganan bersama, langganan penghitung juga akan dihentikan.
Sambil menunggu respons terhadap SubscriptionsCancelRequest, SubscriptionClient
memasuki status Canceling
.
Setelah proses penghentian dimulai, objek SubscriptionClient
memasuki status Terminated
dan peristiwa OnSubscriptionTerminated
dikirim ke pengendali peristiwa aplikasi. Perhatikan bahwa, jika dukungan batal 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().
Pembaruan Flush
WEAVE_ERROR FlushUpdate()
Sinyal bahwa aplikasi telah selesai mengubah semua TraitUpdatableDataSinks.
Kecuali saat pertukaran pembaruan sebelumnya sedang berlangsung, klien akan mengambil semua data yang ditandai sebagai diperbarui dan mengirimkannya ke responden dalam satu permintaan pembaruan. Metode ini dapat dipanggil dari thread mana pun.
Detail | |||
---|---|---|---|
Parameter |
|
||
Menampilkan |
WEAVE_NO_ERROR jika berhasil; kode WEAVE_ERROR lainnya jika gagal.
|
Pembaruan Flush
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. Jika digunakan dengan benar, objek ini akan dapat ditampilkan ke kumpulan objek
Membebaskan objek SubscriptionClient
. Jika langganan aktif atau sedang diproses, langganan akan langsung dihentikan dengan cara yang sama seperti memanggil AbortSubscription(). Jika ada permintaan pembaruan yang sedang diproses, langganan tersebut juga akan dibatalkan.
Aplikasi bertanggung jawab untuk memanggil Free() tepat satu kali selama masa aktif objek SubscriptionClient
. Setelah Free() dipanggil, tidak ada referensi lebih lanjut yang harus dilakukan untuk objek tersebut.
GetBinding
Binding * GetBinding( void ) const
GetLivenessTimeoutMsec
uint32_t GetLivenessTimeoutMsec( void ) const
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
ID Berlangganan
WEAVE_ERROR GetSubscriptionId( uint64_t *const apSubscriptionId )
TunjukkanAktivitas
void IndicateActivity( void )
MulaiMulai Langganan
void InitiateCounterSubscription( const uint32_t aLivenessTimeoutSec )
Mulai Langganan
void InitiateSubscription( void )
Konfigurasikan SubscriptionClient sebagai inisiator (bukan klien penghitung) dan tampilkan langganan jika tidak.
Membatalkan
bool IsCanceling() const
Didirikan
bool IsEstablished()
DitetapkanDenganIdle
bool IsEstablishedIdle()
Bebas
bool IsFree()
IsInProgressOrFounded
bool IsInProgressOrEstablished()
IsInResubscribeHoldoff
bool IsInResubscribeHoldoff()
Coba Lagi Diaktifkan
bool IsRetryEnabled()
Dihentikan
bool IsTerminated()
IsUpdatePendingOrInProgress
bool IsUpdatePendingOrInProgress()
LockUpdateMutex
void LockUpdateMutex( void )
OnCatalogDiubah
void OnCatalogChanged()
Metode ini harus dipanggil saat katalog TraitDataSink telah diubah.
ResetBerlangganan Kembali
void ResetResubscribe( void )
Tendang mekanisme berlangganan lagi.
Tindakan ini akan memulai percobaan ulang langsung
SetLivenessTimeoutMdtk
void SetLivenessTimeoutMsec( uint32_t val )
KumpulanPembaruan
WEAVE_ERROR SetUpdated( TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional )
PenangguhanPembaruan yang Dicoba Ulang
void SuspendUpdateRetries()
Memberi tahu SubscriptionClient agar berhenti mencoba lagi permintaan update.
Mengizinkan aplikasi menangguhkan pembaruan selama jangka waktu tanpa membuang semua metadata. Update dan percobaan ulang akan dilanjutkan saat FlushUpdate dipanggil. Jika dipanggil untuk menangguhkan update saat update sedang berlangsung, update tidak akan dibatalkan, tetapi jika gagal, update tidak akan dicoba lagi hingga FlushUpdate dipanggil lagi.
UnlockUpdateMutex
void UnlockUpdateMutex( void )