nl:: Weave:: Profiles:: 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 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
Implementasi kebijakan default akan memilih slot waktu acak dengan resolusi milidetik pada jendela yang terus meningkat, mengikuti urutan fibonacci hingga WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
|
Fungsi publik |
|
---|---|
AbortSubscription(void)
|
void
Batalkan 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 diperbarui dan membatalkan permintaan update yang sedang berlangsung, jika ada.
|
EnableResubscribe(ResubscribePolicyCallback aCallback)
|
void
Aktifkan berlangganan lagi secara otomatis.
|
EndSubscription(void)
|
Mengakhiri langganan.
|
FlushUpdate()
|
Sinyal bahwa aplikasi telah selesai memutasikan 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 pengguna yang berlangganan 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
Hentikan 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 update.
|
UnlockUpdateMutex(void)
|
void
|
Struct |
|
---|---|
nl:: |
|
nl:: |
Serikat |
|
---|---|
nl:: |
|
nl:: |
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 |
|
EventID
EventID
Properti | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
kEvent_OnEventStreamReceived
|
Dibuat saat SubscriptionEngine menghitung aliran peristiwa dalam pesan NotificationRequest. Aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free() pada tahap ini. |
||||||||||||
kEvent_OnExchangeStart
|
Dibuat setelah binding disiapkan dan ExchangeContext telah 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 pembanding, dan tidak ada jalur lain yang perlu diperbarui. |
||||||||||||
kEvent_OnNotificationProcessed
|
Dibuat saat SubscriptionEngine selesai memproses pesan NotificationRequest. Aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free() pada tahap ini. |
||||||||||||
kEvent_OnNotificationRequest
|
Dihasilkan atas penerimaan NotificationRequest. Aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free() pada tahap ini. |
||||||||||||
kEvent_OnSubscribeRequestPrepareNeeded
|
Dikirim saat mesin siap mengirim SubscribeRequest. Aplikasi diharapkan mengisi jalur yang ingin dijadikan langganan. |
||||||||||||
kEvent_OnSubscriptionActivity
|
Peristiwa yang menunjukkan aktivitas langganan. Ini dibuat setiap kali klien menerima indikasi mengenai aktivitas langganan; ini termasuk pembentukan langganan yang berhasil, penerimaan NotificationRequest, atau penerimaan laporan status sebagai tanggapan atas pesan SubscribeConfirm. |
||||||||||||
kEvent_OnSubscriptionEstablished
|
Dibuat setelah langganan berhasil dibuat. Aplikasi dapat memanggil EndSubscription(), AbortSubscription(), atau Free() pada tahap ini. |
||||||||||||
kEvent_OnSubscriptionTerminated
|
Menandai akhir langganan ini. Parameter yang dikirim ke nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback akan menunjukkan apakah berlangganan lagi akan dicoba secara otomatis. 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 untuk mengakhiri langganan. Langganan dapat dihentikan karena sejumlah alasan (WRM ACK tidak ada, kegagalan alokasi ExchangeContext, waktu tunggu respons,...) Beberapa kemungkinan kode error yang dibuat oleh klien:
|
||||||||||||
kEvent_OnUpdateComplete
|
Peristiwa yang menunjukkan penyelesaian update. Parameter peristiwa akan menunjukkan apakah pembaruan 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/digratiskan dalam fungsi ini jika mereka memutuskan untuk berhenti berlangganan lagi.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Fungsi statis publik
DefaultEventHandler
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 pada jendela yang terus meningkat, mengikuti urutan fibonacci hingga WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX.
Rata-rata waktu tunggu acak setelah WDM_RESUBSCRIBE_MAX_FIBONACCI_STEP_INDEX adalah sekitar satu jam. Saat jumlah percobaan ulang direset ke 0, urutan akan dimulai dari awal lagi.
Fungsi publik
AbortSubscription
void AbortSubscription( void )
Batalkan langganan.
Membatalkan langganan klien.
Segera hentikan penerimaan semua traffic yang terkait dengan langganan, dan lepaskan semua resource komunikasi yang mendasarinya. Objek SubscriptionClient itu sendiri tetap valid dan dapat digunakan lagi.
Menghentikan klien akhir langganan, tanpa memberi tahu penerbit langganan dan tanpa mengirim 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 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 langganan lagi masih tertunda.
DiscardUpdates
void DiscardUpdates()
Memberi tahu SubscriptionClient untuk mengosongkan kumpulan TraitPaths yang tertunda untuk diperbarui dan membatalkan permintaan update yang sedang berlangsung, jika ada.
Metode ini dapat dipanggil dari callback mana pun.
EnableResubscribe
void EnableResubscribe( ResubscribePolicyCallback aCallback )
Aktifkan berlangganan lagi secara otomatis.
Lampirkan callback untuk menentukan waktu percobaan ulang berikutnya jika gagal.
Detail | |||
---|---|---|---|
Parameter |
|
EndSubscription
WEAVE_ERROR EndSubscription( void )
Mengakhiri langganan.
Mengakhiri langganan klien dengan tepat.
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 pada respons dari peer atau pada waktu tunggu. Saat 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 sama seperti AbortSubscription(). Jika ada langganan bersama, langganan penghitung juga akan dihentikan.
Sementara menunggu respons terhadap SubscribeCancelRequest, SubscriptionClient
memasuki status Canceling
.
Setelah proses penghentian dimulai, objek SubscriptionClient
memasuki status Terminated
dan peristiwa OnSubscriptionTerminated
akan 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 dikosongkan dengan memanggil metode Free().
FlushUpdate
WEAVE_ERROR FlushUpdate()
Sinyal bahwa aplikasi telah selesai memutasikan semua TraitUpdatableDataSinks.
Kecuali jika 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 apa pun.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
WEAVE_NO_ERROR jika berhasil; kode WEAVE_ERROR lainnya jika gagal.
|
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, objek akan dapat ditampilkan ke kumpulan objek
Mengosongkan objek SubscriptionClient
. Jika langganan 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 memanggil Free() tepat sekali selama masa aktif objek SubscriptionClient
. Setelah Free() dipanggil, tidak ada referensi lebih lanjut yang harus dibuat ke objek tersebut.
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 )
Konfigurasikan SubscriptionClient sebagai inisiator (bukan pengguna yang berlangganan penghitung) dan tampilkan langganan jika tidak.
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 saat katalog TraitDataSink telah diubah.
ResetResubscribe
void ResetResubscribe( void )
Hentikan mekanisme berlangganan lagi.
Tindakan ini akan memulai percobaan ulang langsung
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 update.
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. Jika gagal, update tidak akan dicoba lagi hingga FlushUpdate dipanggil lagi.
UnlockUpdateMutex
void UnlockUpdateMutex( void )