nl:: Weave:: Profiles:: DataManagement_Current:: LoggingManagement
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Class untuk mengelola log peristiwa dalam memori.
Ringkasan
Konstruktor dan Destruktor |
|
---|---|
LoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
|
|
LoggingManagement(void)
Konstruktor default LoggingManagement.
|
Fungsi publik |
|
---|---|
BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Fungsi bantuan untuk menulis header dan data peristiwa sesuai dengan protokol logging peristiwa.
|
CancelShutdownInProgress(void)
|
void
Setel tanda mShutdownInProgress ke salah.
|
CheckShouldRunWDM(void)
|
bool
Tentukan apakah akan memindahkan peristiwa berdasarkan jumlah byte dalam buffering peristiwa yang tidak dijadwalkan untuk diupload.
|
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
|
Fungsi untuk mengambil peristiwa yang memiliki kepentingan tertentu sejak ID peristiwa yang ditentukan.
|
GetBytesWritten(void) const
|
uint32_t
Mendapatkan jumlah total byte yang ditulis (di semua nilai penting peristiwa) ke log ini sejak pembuatan instance.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Metode helper yang berguna untuk memeriksa buffering log dalam memori.
|
GetFirstEventID(ImportanceType inImportance)
|
Mengambil ID acara pertama yang saat ini disimpan untuk tingkat kepentingan tertentu.
|
GetLastEventID(ImportanceType inImportance)
|
Mengambil ID terbaru yang dijual untuk tingkat kepentingan tertentu.
|
IsShutdownInProgress(void)
|
bool
Periksa flag mShutdownInProgress.
|
IsValid(void)
|
bool
IsValid menampilkan apakah instance LoggingManagement valid.
|
LoadEvents(TLVReader & reader)
|
Muat peristiwa Weave yang sebelumnya dipertahankan.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Mencatat peristiwa ke dalam log melalui callback, dengan opsi.
|
MarkShutdownInProgress(void)
|
void
Setel tanda mShutdownInProgress ke true.
|
NotifyEventsDelivered(ImportanceType inImportance, event_id_t inLastDeliveredEventID, uint64_t inRecipientNodeID)
|
void
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, NotifyExternalEventsEvictedFunct inEvictedCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
API publik untuk mendaftarkan kumpulan peristiwa yang disimpan secara eksternal.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
API publik untuk mendaftarkan kumpulan peristiwa yang disimpan secara eksternal.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
API publik untuk mendaftarkan kumpulan peristiwa yang disimpan secara eksternal.
|
ScheduleFlushIfNeeded(bool inFlushRequested)
|
Menjadwalkan tugas pengurangan beban log.
|
SerializeEvents(TLVWriter & writer)
|
Buat serialisasi peristiwa Weave dari semua jenis nilai penting.
|
SetBDXUploader(LogBDXUpload *inUploader)
|
void
|
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
|
Tetapkan WeaveExchangeManager untuk digunakan dengan subsistem logging ini.
|
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
|
|
SkipEvent(EventLoadOutContext *aContext)
|
void
Fungsi helper untuk melewati penulisan peristiwa yang sesuai dengan ID peristiwa yang dialokasikan.
|
ThrottleLogger(void)
|
void
ThrottleLogger menaikkan tingkat logging efektif ke tingkat Produksi.
|
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
|
void
API publik untuk membatalkan pendaftaran kumpulan peristiwa yang disimpan secara eksternal.
|
UnthrottleLogger(void)
|
void
UnthrottleLogger memulihkan level logging efektif ke level logging yang dikonfigurasi.
|
Fungsi statis publik |
|
---|---|
CreateLoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
|
void
Buat objek LoggingManagement dan lakukan inisialisasi subsistem pengelolaan logging dengan resource yang disediakan.
|
DestroyLoggingManagement(void)
|
void
Lakukan tindakan apa pun yang diperlukan saat perangkat dimatikan.
|
GetInstance(void)
|
Fungsi publik
BlitEvent
WEAVE_ERROR BlitEvent( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Fungsi bantuan untuk menulis header dan data peristiwa sesuai dengan protokol logging peristiwa.
Detail | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
Setel tanda mShutdownInProgress ke salah.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Tentukan apakah akan memindahkan peristiwa berdasarkan jumlah byte dalam buffering peristiwa yang tidak dijadwalkan untuk diupload.
Perilaku fungsi dikontrol melalui konstanta WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD. Jika sistem menulis lebih dari jumlah byte tersebut sejak terakhir kali Notifikasi WDM dikirim, fungsi tersebut akan menunjukkan sudah waktunya untuk memicu NotificationEngine.
Detail | |||||
---|---|---|---|---|---|
Nilai Pengembalian |
|
FetchEventsSince
WEAVE_ERROR FetchEventsSince( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID )
Fungsi untuk mengambil peristiwa yang memiliki kepentingan tertentu sejak ID peristiwa yang ditentukan.
Dengan mempertimbangkan nl::Weave::TLV::TLVWriter, jenis nilai penting, dan ID peristiwa, fungsi ini akan mengambil peristiwa dengan nilai penting yang ditentukan sejak peristiwa yang ditentukan. Fungsi ini akan terus mengambil peristiwa hingga kehabisan ruang di nl::Weave::TLV::TLVWriter atau di log. Fungsi ini akan menghentikan penulisan peristiwa pada batas peristiwa.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai Pengembalian |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Mendapatkan jumlah total byte yang ditulis (di semua nilai penting peristiwa) ke log ini sejak pembuatan instance.
Detail | |
---|---|
Hasil |
Jumlah byte yang ditulis ke log.
|
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Metode helper yang berguna untuk memeriksa buffering log dalam memori.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Hasil |
WEAVE_NO_ERROR Tanpa syarat.
|
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Mengambil ID acara pertama yang saat ini disimpan untuk tingkat kepentingan tertentu.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
event_id_t ID peristiwa pertama yang saat ini disimpan untuk tingkat kepentingan peristiwa tersebut
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Mengambil ID terbaru yang dijual untuk tingkat kepentingan tertentu.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
ID peristiwa event_id_t terbaru untuk tingkat kepentingan peristiwa tersebut
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
Periksa flag mShutdownInProgress.
IsValid
bool IsValid( void )
IsValid menampilkan apakah instance LoggingManagement valid.
Detail | |||||
---|---|---|---|---|---|
Nilai Pengembalian |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Muat peristiwa Weave yang sebelumnya dipertahankan.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Mencatat peristiwa ke dalam log melalui callback, dengan opsi.
Fungsi ini mencatat peristiwa yang diwakili sebagai EventWriterFunct dan konteks appData
khusus aplikasi ke dalam log. Fungsi ini menulis metadata peristiwa dan memanggil inEventWriter
dengan referensi nl::Weave::TLV::TLVWriter dan konteks inAppData
sehingga kode pengguna dapat memunculkan data peristiwa secara langsung ke log peristiwa. Bentuk logging peristiwa ini meminimalkan konsumsi memori, karena data peristiwa diserialisasi langsung ke buffer target. Data peristiwa HARUS berisi tag konteks untuk ditafsirkan dalam skema yang diidentifikasi oleh inProfileID
dan inEventType
. Tag elemen pertama akan diabaikan; sistem logging peristiwa akan menggantinya dengan tag eventData.
Peristiwa dicatat ke dalam log jika nilai penting skema melebihi nilai minimum logging yang ditentukan dalam LoggingConfiguration. Jika nilai penting peristiwa tidak memenuhi nilai minimum saat ini, peristiwa tersebut akan dihapus dan fungsi akan menampilkan 0
sebagai ID peristiwa yang dihasilkan.
Varian pemanggilan ini mengizinkan pemanggil menyetel kombinasi EventOptions
apa pun:
- stempel waktu, jika 0 ditetapkan secara default ke waktu saat ini pada titik panggilan,
- bagian "root" dari sumber kejadian (sumber kejadian dan ID sifat); jika NULL, maka bawaan-nya adalah perangkat saat ini. kejadian ditandai sebagai terkait dengan perangkat yang membuat panggilan,
- ID peristiwa terkait untuk mengelompokkan ID peristiwa; jika ID peristiwa terkait adalah 0, peristiwa ditandai sebagai tidak terkait dengan peristiwa lain,
- urgensi; secara {i>default<i} tidak mendesak.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Hasil |
event_id_t ID peristiwa jika peristiwa ditulis ke log, 0 jika tidak.
|
LoggingManagement
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Lakukan inisialisasi LoggingManagement dengan array LogStorageResources. Array harus menyediakan resource untuk setiap tingkat kepentingan yang valid, elemen array harus meningkatkan nilai kepentingan numerik (dan dalam nilai penting menurun); elemen pertama dalam array sesuai dengan resource yang dialokasikan untuk peristiwa paling penting, dan elemen terakhir sesuai dengan peristiwa yang paling tidak penting.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
LoggingManagement
LoggingManagement( void )
Konstruktor default LoggingManagement.
Disediakan terutama untuk membuat compiler senang.
Detail | |
---|---|
Hasil |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Setel tanda mShutdownInProgress ke true.
NotifyEventsDelivered
void NotifyEventsDelivered( ImportanceType inImportance, event_id_t inLastDeliveredEventID, uint64_t inRecipientNodeID )
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, NotifyExternalEventsEvictedFunct inEvictedCallback, size_t inNumEvents, event_id_t *outLastEventID )
API publik untuk mendaftarkan kumpulan peristiwa yang disimpan secara eksternal.
Daftarkan callback dari bentuk FetchExternalEventsFunct. API ini mengharuskan platform mengetahui jumlah peristiwa saat pendaftaran. Pekerjaan internal juga mengharuskan angka ini konstan. Karena API ini tidak mengizinkan platform mendaftarkan ID peristiwa tertentu, hal ini akan mencegah platform mempertahankan penyimpanan peristiwa (setidaknya dengan ID peristiwa unik).
Callback akan dipanggil setiap kali pelanggan mencoba mengambil ID peristiwa dalam rentang beberapa kali hingga pelanggan membatalkan pendaftaran.
Varian fungsi ini harus digunakan jika penyedia eksternal ingin diberi tahu saat peristiwa telah dikirim ke pelanggan dan jika objek peristiwa eksternal dikeluarkan.
Saat peristiwa dikirim, penyedia eksternal akan diberi tahu tentang hal itu bersama dengan ID node penerima dan ID peristiwa terakhir yang dikirim ke penerima tersebut. Perlu diingat bahwa penyedia eksternal mungkin diberi tahu beberapa kali untuk ID peristiwa yang sama. Tidak ada batasan khusus pada pengendali, khususnya, pengendali dapat membatalkan pendaftaran ID peristiwa eksternal.
Jika objek peristiwa eksternal dikeluarkan dari buffer log, penyedia eksternal akan diberi tahu beserta salinan objek peristiwa eksternal.
Pointer ke struct ExternalEvents akan menjadi NULL jika gagal, jika tidak akan diisi dengan ID peristiwa awal dan akhir yang ditetapkan ke callback. Pointer ini harus digunakan untuk membatalkan pendaftaran kumpulan peristiwa.
Lihat dokumentasi untuk FetchExternalEventsFunct untuk detail tentang hal yang harus diimplementasikan oleh callback.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai Pengembalian |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
API publik untuk mendaftarkan kumpulan peristiwa yang disimpan secara eksternal.
Daftarkan callback dari bentuk FetchExternalEventsFunct. API ini mengharuskan platform mengetahui jumlah peristiwa saat pendaftaran. Pekerjaan internal juga mengharuskan angka ini konstan. Karena API ini tidak mengizinkan platform mendaftarkan ID peristiwa tertentu, hal ini akan mencegah platform mempertahankan penyimpanan peristiwa (setidaknya dengan ID peristiwa unik).
Callback akan dipanggil setiap kali pelanggan mencoba mengambil ID peristiwa dalam rentang beberapa kali hingga pelanggan membatalkan pendaftaran.
Varian fungsi ini harus digunakan saat penyedia eksternal ingin diberi tahu saat peristiwa telah dikirim ke pelanggan, tetapi bukan saat objek peristiwa eksternal dikeluarkan. Saat peristiwa dikirim, penyedia eksternal akan diberi tahu tentang hal itu bersama dengan ID node penerima dan ID peristiwa terakhir yang dikirim ke penerima tersebut. Perlu diingat bahwa penyedia eksternal mungkin diberi tahu beberapa kali untuk ID peristiwa yang sama. Tidak ada batasan khusus pada pengendali, khususnya, pengendali dapat membatalkan pendaftaran ID peristiwa eksternal.
Pointer ke struct ExternalEvents akan menjadi NULL jika gagal, jika tidak akan diisi dengan ID peristiwa awal dan akhir yang ditetapkan ke callback. Pointer ini harus digunakan untuk membatalkan pendaftaran kumpulan peristiwa.
Lihat dokumentasi untuk FetchExternalEventsFunct untuk detail tentang hal yang harus diimplementasikan oleh callback.
Detail | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||
Nilai Pengembalian |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
API publik untuk mendaftarkan kumpulan peristiwa yang disimpan secara eksternal.
Daftarkan callback dari bentuk FetchExternalEventsFunct. API ini mengharuskan platform mengetahui jumlah peristiwa saat pendaftaran. Pekerjaan internal juga mengharuskan angka ini konstan. Karena API ini tidak mengizinkan platform mendaftarkan ID peristiwa tertentu, hal ini akan mencegah platform mempertahankan penyimpanan peristiwa (setidaknya dengan ID peristiwa unik).
Callback akan dipanggil setiap kali pelanggan mencoba mengambil ID peristiwa dalam rentang beberapa kali hingga pelanggan membatalkan pendaftaran.
Varian fungsi ini harus digunakan jika penyedia eksternal menginginkan notifikasi, baik saat peristiwa eksternal telah dikirimkan maupun saat objek peristiwa eksternal dikeluarkan.
Pointer ke struct ExternalEvents akan menjadi NULL jika gagal, jika tidak akan diisi dengan ID peristiwa awal dan akhir yang ditetapkan ke callback. Pointer ini harus digunakan untuk membatalkan pendaftaran kumpulan peristiwa.
Lihat dokumentasi untuk FetchExternalEventsFunct untuk detail tentang hal yang harus diimplementasikan oleh callback.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai Pengembalian |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Menjadwalkan tugas pengurangan beban log.
Fungsi ini memutuskan apakah akan menjadwalkan proses pemindahan tugas. Jika demikian, fungsi ini akan menjadwalkan LoggingFlushHandler
agar dijalankan secara asinkron di thread Weave.
Keputusan untuk menjadwalkan flush bergantung pada tiga faktor:
permintaan eksplisit untuk mengosongkan buffer
status buffering peristiwa dan jumlah data yang belum disinkronkan dengan konsumen peristiwa
apakah ada peristiwa permintaan flush permintaan yang sudah tertunda.
Permintaan eksplisit untuk menjadwalkan flush diteruskan melalui parameter input.
Pembuangan otomatis biasanya dijadwalkan saat buffering peristiwa berisi cukup data untuk memulai pengurangan beban baru. Pemicu tambahan seperti waktu minimum dan maksimum antar-pemindahan juga dapat diperhitungkan, bergantung pada strategi pengurangan beban.
Status tertunda pada log aktivitas ditunjukkan oleh variabel mUploadRequested
. Karena fungsi ini dapat dipanggil oleh beberapa thread, mUploadRequested
harus dibaca dan ditetapkan secara atomik, untuk menghindari penjadwalan LoggingFlushHandler
yang berlebihan sebelum notifikasi dikirim.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Buat serialisasi peristiwa Weave dari semua jenis nilai penting.
Menserialisasikan peristiwa di WeaveCircularTLVBuffer dan status terkait ke buffer yang disediakan.
Metode ini dimaksudkan untuk digunakan oleh perangkat yang tidak mempertahankan RAM saat tidur, memungkinkan perangkat tersebut mempertahankan kejadian sebelum tidur dan dengan demikian mencegah hilangnya kejadian
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Tetapkan WeaveExchangeManager untuk digunakan dengan subsistem logging ini.
Pada beberapa platform, hal ini mungkin perlu dilakukan secara terpisah dari CreateLoggingManagement() di atas.
Detail | |||
---|---|---|---|
Parameter |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
SkipEvent
void SkipEvent( EventLoadOutContext *aContext )
Fungsi helper untuk melewati penulisan peristiwa yang sesuai dengan ID peristiwa yang dialokasikan.
Detail | |||
---|---|---|---|
Parameter |
|
ThrottleLogger
void ThrottleLogger( void )
ThrottleLogger menaikkan tingkat logging efektif ke tingkat Produksi.
UnregisterEventCallbackForImportance
void UnregisterEventCallbackForImportance( ImportanceType inImportance, event_id_t inEventID )
API publik untuk membatalkan pendaftaran kumpulan peristiwa yang disimpan secara eksternal.
Membatalkan pendaftaran callback akan mencegah LoggingManagement memanggil callback untuk sekumpulan peristiwa. LoggingManagement tidak akan lagi mengirim ID peristiwa tersebut ke pelanggan.
Intentnya adalah agar satu fungsi menayangkan sekumpulan peristiwa dalam satu waktu. Jika kumpulan peristiwa baru perlu didaftarkan menggunakan fungsi yang sama, pendaftaran callback harus terlebih dahulu dibatalkan, lalu didaftarkan lagi. Artinya, kumpulan peristiwa asli tidak dapat diambil lagi.
Fungsi ini berhasil tanpa syarat. Jika callback tidak pernah terdaftar atau sudah dibatalkan pendaftarannya, berarti callback tersebut tidak dioperasikan.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
UnthrottleLogger
void UnthrottleLogger( void )
UnthrottleLogger memulihkan level logging efektif ke level logging yang dikonfigurasi.
Fungsi statis publik
CreateLoggingManagement
void CreateLoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Buat objek LoggingManagement dan lakukan inisialisasi subsistem pengelolaan logging dengan resource yang disediakan.
Lakukan inisialisasi LoggingManagement dengan array LogStorageResources. Array harus menyediakan resource untuk setiap tingkat kepentingan yang valid, elemen array harus meningkatkan nilai kepentingan numerik (dan dalam nilai penting menurun); elemen pertama dalam array sesuai dengan resource yang dialokasikan untuk peristiwa paling penting, dan elemen terakhir sesuai dengan peristiwa yang paling tidak penting.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
DestroyLoggingManagement
void DestroyLoggingManagement( void )
Lakukan tindakan apa pun yang diperlukan saat perangkat dimatikan.