nl:: Weave:: Profil:: DataManagement_Current:: LoggingManagement
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Class untuk mengelola log peristiwa di 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
Menetapkan flag mShutdownInProgress ke false.
|
CheckShouldRunWDM(void)
|
bool
Tentukan apakah akan memindahkan peristiwa berdasarkan jumlah byte dalam buffer peristiwa yang tidak terjadwal untuk upload.
|
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
|
Fungsi untuk mengambil peristiwa penting yang ditentukan sejak ID peristiwa yang ditentukan.
|
GetBytesWritten(void) const
|
uint32_t
Dapatkan jumlah total byte yang ditulis (di semua tingkat kepentingan peristiwa) ke log ini sejak pembuatan instance.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Metode bantuan yang berguna untuk memeriksa buffer log dalam memori.
|
GetFirstEventID(ImportanceType inImportance)
|
Ambil ID peristiwa pertama yang saat ini disimpan untuk tingkat nilai penting tertentu.
|
GetLastEventID(ImportanceType inImportance)
|
Ambil ID terbaru yang diteruskan untuk tingkat kepentingan tertentu.
|
IsShutdownInProgress(void)
|
bool
Periksa tanda mShutdownInProgress.
|
IsValid(void)
|
bool
IsValid menampilkan apakah instance LoggingManagement valid.
|
LoadEvents(TLVReader & reader)
|
Peristiwa pemuatan Weave yang sebelumnya dipertahankan.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Membuat log peristiwa melalui callback, dengan opsi.
|
MarkShutdownInProgress(void)
|
void
Menetapkan flag 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 serangkaian peristiwa yang disimpan secara eksternal.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
API publik untuk mendaftarkan serangkaian peristiwa yang disimpan secara eksternal.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
API publik untuk mendaftarkan serangkaian peristiwa yang disimpan secara eksternal.
|
ScheduleFlushIfNeeded(bool inFlushRequested)
|
Menjadwalkan tugas penghapusan log.
|
SerializeEvents(TLVWriter & writer)
|
Lakukan serialisasi peristiwa Weave dari semua jenis nilai penting.
|
SetBDXUploader(LogBDXUpload *inUploader)
|
void
|
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
|
Tetapkan WeaveExchangeManager agar digunakan dengan subsistem logging ini.
|
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
|
|
SkipEvent(EventLoadOutContext *aContext)
|
void
Fungsi bantuan untuk melewati penulisan peristiwa yang sesuai dengan ID peristiwa yang dialokasikan.
|
ThrottleLogger(void)
|
void
ThrottleLogger meningkatkan tingkat logging yang 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 tingkat logging yang efektif ke tingkat logging yang dikonfigurasi.
|
Fungsi statis publik |
|
---|---|
CreateLoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
|
void
Buat objek LoggingManagement dan inisialisasi subsistem pengelolaan logging dengan resource yang disediakan.
|
DestroyLoggingManagement(void)
|
void
Lakukan tindakan yang diperlukan untuk menonaktifkan.
|
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 |
|
Membatalkan Penonaktifan
void CancelShutdownInProgress( void )
Menetapkan flag mShutdownInProgress ke false.
Check shouldRunWDM
bool CheckShouldRunWDM( void )
Tentukan apakah akan memindahkan peristiwa berdasarkan jumlah byte dalam buffer peristiwa yang tidak terjadwal untuk upload.
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 bahwa sudah waktunya untuk memicu NotificationEngine.
Detail | |||||
---|---|---|---|---|---|
Nilai yang Ditampilkan |
|
FetchEventsSince
WEAVE_ERROR FetchEventsSince( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID )
Fungsi untuk mengambil peristiwa penting yang ditentukan sejak ID peristiwa yang ditentukan.
Mengingat nl::Weave::TLV::TLVWriter, jenis nilai penting, dan ID peristiwa, fungsi akan mengambil peristiwa dengan tingkat kepentingan 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 yang Ditampilkan |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Dapatkan jumlah total byte yang ditulis (di semua tingkat kepentingan peristiwa) ke log ini sejak pembuatan instance.
Detail | |
---|---|
Menampilkan |
Jumlah byte yang ditulis ke log.
|
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Metode bantuan yang berguna untuk memeriksa buffer log dalam memori.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Menampilkan |
WEAVE_NO_ERROR Tanpa syarat.
|
ID GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Ambil ID peristiwa pertama yang saat ini disimpan untuk tingkat nilai penting tertentu.
Detail | |||
---|---|---|---|
Parameter |
|
||
Menampilkan |
event_id_t ID peristiwa yang pertama kali disimpan untuk nilai penting peristiwa tersebut
|
ID LastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Ambil ID terbaru yang diteruskan untuk tingkat kepentingan tertentu.
Detail | |||
---|---|---|---|
Parameter |
|
||
Menampilkan |
event_id_t ID peristiwa terbaru untuk nilai penting peristiwa tersebut
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
Periksa tanda mShutdownInProgress.
Valid
bool IsValid( void )
IsValid menampilkan apakah instance LoggingManagement valid.
Detail | |||||
---|---|---|---|---|---|
Nilai yang Ditampilkan |
|
PeristiwaPemuatan
WEAVE_ERROR LoadEvents( TLVReader & reader )
Peristiwa pemuatan Weave yang sebelumnya dipertahankan.
PeristiwaLog
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Membuat log peristiwa melalui callback, dengan opsi.
Fungsi mencatat log peristiwa yang direpresentasikan sebagai EventWriterFunct dan konteks appData
khusus aplikasi. Fungsi ini menulis metadata peristiwa dan memanggil inEventWriter
dengan referensi nl::Weave::TLV::TLVWriter dan konteks inAppData
sehingga kode pengguna dapat memunculkan data peristiwa 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 yang akan ditafsirkan dalam skema yang diidentifikasi oleh inProfileID
dan inEventType
. Tag elemen pertama akan diabaikan; sistem logging peristiwa akan menggantinya dengan tag eventData.
Peristiwa dicatat 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 pemanggilan ini memungkinkan pemanggil untuk menetapkan kombinasi EventOptions
:
- stempel waktu, saat 0 ditetapkan secara default ke waktu saat ini pada titik panggilan,
- "root" dari sumber peristiwa (sumber peristiwa dan ID fitur); jika NULL, setelan default perangkat saat ini akan ditandai. Peristiwa ditandai sebagai terkait dengan perangkat yang membuat panggilan,
- ID peristiwa terkait untuk mengelompokkan ID peristiwa; jika ID peristiwa terkait adalah 0, peristiwa akan ditandai sebagai tidak terkait dengan peristiwa lainnya,
- urgensi; secara default tidak mendesak.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Menampilkan |
event_id_t ID peristiwa jika peristiwa ditulis ke log, 0 jika tidak.
|
Pengelolaan Logging
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Inisialisasi LoggingManagement dengan array LogStorageResources. Array harus menyediakan resource untuk setiap tingkat kepentingan yang valid, elemen array harus dalam peningkatan nilai numerik nilai penting (dan dalam nilai penting yang menurun); elemen pertama dalam array sesuai dengan sumber daya yang dialokasikan untuk peristiwa yang paling penting, dan elemen terakhir harus sesuai dengan peristiwa yang paling tidak penting.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Pengelolaan Logging
LoggingManagement( void )
Konstruktor default LoggingManagement.
Disediakan terutama untuk membuat compiler senang.
Detail | |
---|---|
Menampilkan |
MarkShutdownDalam Proses
void MarkShutdownInProgress( void )
Menetapkan flag mShutdownInProgress ke true.
NotifyEventsTerkirim
void NotifyEventsDelivered( ImportanceType inImportance, event_id_t inLastDeliveredEventID, uint64_t inRecipientNodeID )
RegisterEventCallbackForImportant
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, NotifyExternalEventsEvictedFunct inEvictedCallback, size_t inNumEvents, event_id_t *outLastEventID )
API publik untuk mendaftarkan serangkaian peristiwa yang disimpan secara eksternal.
Daftarkan callback formulir FetchExternalEventsFunct. API ini mengharuskan platform mengetahui jumlah peristiwa pada pendaftaran. Cara kerja internal juga mengharuskan angka ini konstan. Karena API ini tidak mengizinkan platform untuk mendaftarkan ID peristiwa tertentu, hal ini akan mencegah platform menyimpan penyimpanan peristiwa (setidaknya dengan ID peristiwa unik).
Callback akan dipanggil setiap kali pelanggan mencoba untuk mengambil ID peristiwa dalam rentang berapa kali hingga pendaftaran dibatalkan.
Varian fungsi ini harus digunakan saat 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 tersebut bersama dengan ID node penerima dan id peristiwa terakhir yang dikirim ke penerima tersebut. Perhatikan bahwa penyedia eksternal mungkin diberi tahu beberapa kali untuk ID acara 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 bersama dengan salinan objek peristiwa eksternal.
Pointer ke struct ExternalEvents akan menjadi NULL jika gagal, atau 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 apa yang harus diimplementasikan oleh callback.
Detail | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||
Nilai yang Ditampilkan |
|
RegisterEventCallbackForImportant
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
API publik untuk mendaftarkan serangkaian peristiwa yang disimpan secara eksternal.
Daftarkan callback formulir FetchExternalEventsFunct. API ini mengharuskan platform mengetahui jumlah peristiwa pada pendaftaran. Cara kerja internal juga mengharuskan angka ini konstan. Karena API ini tidak mengizinkan platform untuk mendaftarkan ID peristiwa tertentu, hal ini akan mencegah platform menyimpan penyimpanan peristiwa (setidaknya dengan ID peristiwa unik).
Callback akan dipanggil setiap kali pelanggan mencoba untuk mengambil ID peristiwa dalam rentang berapa kali hingga pendaftaran dibatalkan.
Varian fungsi ini harus digunakan saat penyedia eksternal ingin diberi tahu saat peristiwa telah dikirim ke pelanggan, tetapi tidak saat objek peristiwa eksternal dikeluarkan. Saat peristiwa dikirim, penyedia eksternal akan diberi tahu tentang hal tersebut bersama dengan ID node penerima dan id peristiwa terakhir yang dikirim ke penerima tersebut. Perhatikan bahwa penyedia eksternal mungkin diberi tahu beberapa kali untuk ID acara 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, atau 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 apa yang harus diimplementasikan oleh callback.
Detail | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||
Nilai yang Ditampilkan |
|
RegisterEventCallbackForImportant
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
API publik untuk mendaftarkan serangkaian peristiwa yang disimpan secara eksternal.
Daftarkan callback formulir FetchExternalEventsFunct. API ini mengharuskan platform mengetahui jumlah peristiwa pada pendaftaran. Cara kerja internal juga mengharuskan angka ini konstan. Karena API ini tidak mengizinkan platform untuk mendaftarkan ID peristiwa tertentu, hal ini akan mencegah platform menyimpan penyimpanan peristiwa (setidaknya dengan ID peristiwa unik).
Callback akan dipanggil setiap kali pelanggan mencoba untuk mengambil ID peristiwa dalam rentang berapa kali hingga pendaftaran dibatalkan.
Varian fungsi ini harus digunakan saat penyedia eksternal meminta notifikasi saat peristiwa eksternal telah dikirim atau saat objek peristiwa eksternal dikeluarkan.
Pointer ke struct ExternalEvents akan menjadi NULL jika gagal, atau 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 apa yang harus diimplementasikan oleh callback.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
MenjadwalkanFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Menjadwalkan tugas penghapusan log.
Fungsi ini memutuskan apakah akan menjadwalkan proses offload tugas, dan jika demikian, fungsi akan menjadwalkan LoggingFlushHandler
agar dijalankan secara asinkron di thread Weave.
Keputusan untuk menjadwalkan flush bergantung pada tiga faktor:
permintaan eksplisit untuk membersihkan buffer
status buffer peristiwa dan jumlah data yang belum disinkronkan dengan konsumen peristiwa
apakah sudah ada peristiwa permintaan penghapusan yang tertunda.
Permintaan eksplisit untuk menjadwalkan flush diteruskan melalui parameter input.
Pembersihan otomatis biasanya dijadwalkan saat buffer peristiwa berisi cukup data untuk memulai penggantian baru. Pemicu tambahan seperti waktu minimum dan maksimum antar-offload juga dapat dipertimbangkan, tergantung pada strategi offload.
Status tertunda untuk log aktivitas ditunjukkan oleh variabel mUploadRequested
. Karena fungsi ini dapat dipanggil oleh beberapa thread, mUploadRequested
harus dibaca dan disetel secara atomik, agar penjadwalan LoggingFlushHandler
tidak berlebihan sebelum notifikasi dikirim.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai yang Ditampilkan |
|
Serialisasi
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Lakukan serialisasi peristiwa Weave dari semua jenis nilai penting.
Melakukan serialisasi peristiwa di WeaveCircularTLVBuffer dan status terkait ke buffer yang diberikan.
Metode ini dimaksudkan untuk digunakan oleh perangkat yang tidak mempertahankan RAM saat tidur, yang memungkinkannya mempertahankan peristiwa sebelum tidur dan dengan demikian mencegah hilangnya peristiwa
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Tetapkan WeaveExchangeManager agar digunakan dengan subsistem logging ini.
Di 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 bantuan untuk melewati penulisan peristiwa yang sesuai dengan ID peristiwa yang dialokasikan.
Detail | |||
---|---|---|---|
Parameter |
|
Penjepit ThrottleLogger
void ThrottleLogger( void )
ThrottleLogger meningkatkan tingkat logging yang efektif ke tingkat Produksi.
UnregisterEventCallbackForTingkat Penting
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 serangkaian peristiwa. LoggingManagement tidak akan lagi mengirimkan ID peristiwa tersebut kepada pelanggan.
Intent ini adalah untuk satu fungsi untuk menyajikan kumpulan peristiwa dalam satu waktu. Jika sekumpulan peristiwa baru perlu didaftarkan menggunakan fungsi yang sama, callback harus dibatalkan pendaftarannya terlebih dahulu, lalu didaftarkan lagi. Artinya, kumpulan peristiwa asli tidak dapat diambil lagi.
Fungsi ini berhasil tanpa syarat. Jika callback tidak pernah terdaftar atau sudah tidak terdaftar, berarti tidak ada operasi.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
Pembatalan Pencatatan Log
void UnthrottleLogger( void )
UnthrottleLogger memulihkan tingkat logging yang efektif ke tingkat logging yang dikonfigurasi.
Fungsi statis publik
CreateLoggingManagement
void CreateLoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Buat objek LoggingManagement dan inisialisasi subsistem pengelolaan logging dengan resource yang disediakan.
Inisialisasi LoggingManagement dengan array LogStorageResources. Array harus menyediakan resource untuk setiap tingkat kepentingan yang valid, elemen array harus dalam peningkatan nilai numerik nilai penting (dan dalam nilai penting yang menurun); elemen pertama dalam array sesuai dengan sumber daya yang dialokasikan untuk peristiwa yang paling penting, dan elemen terakhir harus sesuai dengan peristiwa yang paling tidak penting.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
MenghancurkanPengelolaan
void DestroyLoggingManagement( void )
Lakukan tindakan yang diperlukan untuk menonaktifkan.