nl:: Weave:: Profiles:: DataManagement_Current:: LoggingManagement
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Una classe per la gestione dei log eventi in memoria.
Riepilogo
Costruttori e distruttori |
|
---|---|
LoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
Costruttore LoggingManagement.
|
|
LoggingManagement(void)
Costruttore predefinito LoggingManagement.
|
Funzioni pubbliche |
|
---|---|
BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Funzione di supporto per la scrittura dell'intestazione e dei dati degli eventi in base al protocollo di logging degli eventi.
|
CancelShutdownInProgress(void)
|
void
Imposta il flag mShutdownInProgress su false.
|
CheckShouldRunWDM(void)
|
bool
Decidi se eseguire l'offload degli eventi in base al numero di byte nei buffer di eventi di cui il caricamento non è pianificato.
|
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
|
Una funzione per recuperare eventi di importanza specificata a partire da un ID evento specificato.
|
GetBytesWritten(void) const
|
uint32_t
Ottieni il numero totale di byte scritti (per tutte le priorità degli eventi) in questo log dalla sua istanza.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Metodo di supporto utile per esaminare i buffer dei log in memoria.
|
GetFirstEventID(ImportanceType inImportance)
|
Recupera il primo ID evento attualmente memorizzato per un determinato livello di importanza.
|
GetLastEventID(ImportanceType inImportance)
|
Recupera l'ID venditore più recente per un determinato livello di importanza.
|
IsShutdownInProgress(void)
|
bool
Seleziona il flag mShutdownInProgress.
|
IsValid(void)
|
bool
IsValid restituisce se l'istanza LoggingManagement è valida.
|
LoadEvents(TLVReader & reader)
|
Carica l'evento Weave persistente in precedenza.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Registra un evento tramite callback, con le opzioni disponibili.
|
MarkShutdownInProgress(void)
|
void
Imposta il flag mShutdownInProgress su 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)
|
L'API pubblica per la registrazione di un insieme di eventi memorizzati esternamente.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
L'API pubblica per la registrazione di un insieme di eventi memorizzati esternamente.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
L'API pubblica per la registrazione di un insieme di eventi memorizzati esternamente.
|
ScheduleFlushIfNeeded(bool inFlushRequested)
|
Pianifica un'attività di offload dei log.
|
SerializeEvents(TLVWriter & writer)
|
Serializza gli eventi Weave di tutti i tipi di importanza.
|
SetBDXUploader(LogBDXUpload *inUploader)
|
void
|
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
|
Imposta WeaveExchangeManager da utilizzare con questo sottosistema di logging.
|
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
|
|
SkipEvent(EventLoadOutContext *aContext)
|
void
Funzione di supporto per saltare la scrittura di un evento corrispondente a un ID evento allocato.
|
ThrottleLogger(void)
|
void
ThrottleLogger eleva il livello di logging effettivo al livello di produzione.
|
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
|
void
L'API pubblica per annullare la registrazione di un insieme di eventi archiviati esternamente.
|
UnthrottleLogger(void)
|
void
UnthrottleLogger ripristina il livello di logging effettivo al livello di logging configurato.
|
Funzioni statiche pubbliche |
|
---|---|
CreateLoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
|
void
Crea l'oggetto LoggingManagement e inizializza il sottosistema di gestione del logging con le risorse fornite.
|
DestroyLoggingManagement(void)
|
void
Esegui le azioni necessarie alla chiusura.
|
GetInstance(void)
|
Funzioni pubbliche
BlitEvent
WEAVE_ERROR BlitEvent( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Funzione di supporto per la scrittura dell'intestazione e dei dati degli eventi in base al protocollo di logging degli eventi.
Dettagli | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
Imposta il flag mShutdownInProgress su false.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Decidi se eseguire l'offload degli eventi in base al numero di byte nei buffer di eventi di cui il caricamento non è pianificato.
Il comportamento della funzione viene controllato tramite la costante WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD. Se il sistema ha scritto un numero di byte superiore a quel numero dall'ultima volta in cui è stata inviata una notifica WDM, la funzione indicherà che è ora di attivare NotificationEngine.
Dettagli | |||||
---|---|---|---|---|---|
Valori restituiti |
|
FetchEventsSince
WEAVE_ERROR FetchEventsSince( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID )
Una funzione per recuperare eventi di importanza specificata a partire da un ID evento specificato.
Dati nl::Weave::TLV::TLVWriter, un tipo di importanza e un ID evento, la funzione recupererà gli eventi di importanza specificata a partire dall'evento specificato. La funzione continuerà a recuperare eventi finché non esaurisce lo spazio in nl::Weave::TLV::TLVWriter o nel log. La funzione termina la scrittura dell'evento al limite dell'evento.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Ottieni il numero totale di byte scritti (per tutte le priorità degli eventi) in questo log dalla sua istanza.
Dettagli | |
---|---|
Restituisce |
Il numero di byte scritti nel log.
|
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Metodo di supporto utile per esaminare i buffer dei log in memoria.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Restituisce |
WEAVE_NO_ERROR Incondizionatamente.
|
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Recupera il primo ID evento attualmente memorizzato per un determinato livello di importanza.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
event_id_t Primo ID evento attualmente memorizzato per quell'importanza dell'evento
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Recupera l'ID venditore più recente per un determinato livello di importanza.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
event_id_t ID evento fornito più di recente per quell'importanza dell'evento
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
Seleziona il flag mShutdownInProgress.
IsValid
bool IsValid( void )
IsValid restituisce se l'istanza LoggingManagement è valida.
Dettagli | |||||
---|---|---|---|---|---|
Valori restituiti |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Carica l'evento Weave persistente in precedenza.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Registra un evento tramite callback, con le opzioni disponibili.
La funzione registra un evento rappresentato come EventWriterFunct e un contesto appData
specifico per l'app. La funzione scrive i metadati dell'evento e chiama inEventWriter
con un riferimento nl::Weave::TLV::TLVWriter e un contesto inAppData
, in modo che il codice utente possa emettere i dati dell'evento direttamente nel log eventi. Questa forma di logging degli eventi riduce al minimo il consumo di memoria, poiché i dati degli eventi vengono serializzati direttamente nel buffer di destinazione. I dati sugli eventi DEVONO contenere tag di contesto per essere interpretati all'interno dello schema identificato da inProfileID
e inEventType
. Il tag del primo elemento verrà ignorato; il sistema di logging degli eventi lo sostituirà con il tag eventData.
L'evento viene registrato se l'importanza dello schema supera la soglia di logging specificata in LoggingConfiguration. Se l'importanza dell'evento non soddisfa la soglia attuale, viene eliminato e la funzione restituisce 0
come ID evento risultante.
Questa variante della chiamata consente al chiamante di impostare qualsiasi combinazione di EventOptions
:
- timestamp, quando 0 viene impostato in modo predefinito sull'ora corrente al momento della chiamata,
- sezione "root" dell'origine dell'evento (origine evento e ID trait); se NULL, per impostazione predefinita viene utilizzato il dispositivo corrente. L'evento è contrassegnato come relativo al dispositivo che effettua la chiamata.
- un ID evento correlato per raggruppare gli ID evento; se l'ID evento correlato è 0, l'evento viene contrassegnato come non correlato ad altri eventi.
- urgenza; non urgente per impostazione predefinita.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Restituisce |
event_id_t L'ID evento se l'evento è stato scritto nel log, altrimenti 0.
|
LoggingManagement
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Costruttore LoggingManagement.
Inizializza LoggingManagement con un array di LogStorageResources. L'array deve fornire una risorsa per ogni livello di importanza valido, il cui valore numerico deve essere crescente (e in ordine decrescente); il primo elemento dell'array corrisponde alle risorse allocate per gli eventi più critici e l'ultimo elemento corrisponde agli eventi meno importanti.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
LoggingManagement
LoggingManagement( void )
Costruttore predefinito LoggingManagement.
Fornito principalmente per soddisfare le esigenze del compilatore.
Dettagli | |
---|---|
Restituisce |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Imposta il flag mShutdownInProgress su 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 )
L'API pubblica per la registrazione di un insieme di eventi memorizzati esternamente.
Registra un callback nel formato FetchExternalEventsFunct. Questa API richiede alla piattaforma di conoscere il numero di eventi al momento della registrazione. Anche il funzionamento interno richiede che questo numero sia costante. Poiché questa API non consente alla piattaforma di registrare ID evento specifici, ciò impedisce alla piattaforma di memorizzare in modo permanente gli eventi (almeno con ID evento univoci).
Il callback viene chiamato ogni volta che un iscritto tenta di recuperare gli ID evento nell'intervallo per un numero qualsiasi di volte fino all'annullamento della registrazione.
Questa variante della funzione deve essere utilizzata quando il provider esterno vuole ricevere una notifica sia quando gli eventi sono stati inviati a un sottoscrittore sia se l'oggetto eventi esterni è stato rimosso.
Quando gli eventi vengono recapitati, il provider esterno riceve una notifica al riguardo, insieme all'ID nodo del destinatario e all'ID dell'ultimo evento consegnato a quel destinatario. Tieni presente che il provider esterno potrebbe ricevere più volte una notifica per lo stesso ID evento. Non esistono limitazioni specifiche per il gestore, in particolare il gestore può annullare la registrazione degli ID evento esterni.
Se l'oggetto eventi esterni viene rimosso dai buffer log, il provider esterno riceve una notifica insieme a una copia dell'oggetto eventi esterni.
In caso di errore, il puntatore allo struct ExternalEvents sarà NULL, altrimenti verrà completato con gli ID evento di inizio e fine assegnati al callback. Questo puntatore deve essere utilizzato per annullare la registrazione dell'insieme di eventi.
Consulta la documentazione per FetchExternalEventsFunct per i dettagli sull'implementazione del callback.
Dettagli | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||||
Valori restituiti |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
L'API pubblica per la registrazione di un insieme di eventi memorizzati esternamente.
Registra un callback nel formato FetchExternalEventsFunct. Questa API richiede alla piattaforma di conoscere il numero di eventi al momento della registrazione. Anche il funzionamento interno richiede che questo numero sia costante. Poiché questa API non consente alla piattaforma di registrare ID evento specifici, ciò impedisce alla piattaforma di memorizzare in modo permanente gli eventi (almeno con ID evento univoci).
Il callback viene chiamato ogni volta che un iscritto tenta di recuperare gli ID evento nell'intervallo per un numero qualsiasi di volte fino all'annullamento della registrazione.
Questa variante della funzione deve essere utilizzata quando il provider esterno vuole ricevere una notifica quando gli eventi sono stati inviati a un sottoscrittore, ma non quando l'oggetto eventi esterni viene rimosso. Quando gli eventi vengono recapitati, il provider esterno riceve una notifica al riguardo, insieme all'ID nodo del destinatario e all'ID dell'ultimo evento consegnato a quel destinatario. Tieni presente che il provider esterno potrebbe ricevere più volte una notifica per lo stesso ID evento. Non esistono limitazioni specifiche per il gestore, in particolare il gestore può annullare la registrazione degli ID evento esterni.
In caso di errore, il puntatore allo struct ExternalEvents sarà NULL, altrimenti verrà completato con gli ID evento di inizio e fine assegnati al callback. Questo puntatore deve essere utilizzato per annullare la registrazione dell'insieme di eventi.
Consulta la documentazione per FetchExternalEventsFunct per i dettagli sull'implementazione del callback.
Dettagli | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||||
Valori restituiti |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
L'API pubblica per la registrazione di un insieme di eventi memorizzati esternamente.
Registra un callback nel formato FetchExternalEventsFunct. Questa API richiede alla piattaforma di conoscere il numero di eventi al momento della registrazione. Anche il funzionamento interno richiede che questo numero sia costante. Poiché questa API non consente alla piattaforma di registrare ID evento specifici, ciò impedisce alla piattaforma di memorizzare in modo permanente gli eventi (almeno con ID evento univoci).
Il callback viene chiamato ogni volta che un iscritto tenta di recuperare gli ID evento nell'intervallo per un numero qualsiasi di volte fino all'annullamento della registrazione.
Questa variante della funzione deve essere utilizzata quando il provider esterno vuole una notifica né quando sono stati consegnati gli eventi esterni, né quando l'oggetto eventi esterni viene rimosso.
In caso di errore, il puntatore allo struct ExternalEvents sarà NULL, altrimenti verrà completato con gli ID evento di inizio e fine assegnati al callback. Questo puntatore deve essere utilizzato per annullare la registrazione dell'insieme di eventi.
Consulta la documentazione per FetchExternalEventsFunct per i dettagli sull'implementazione del callback.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Pianifica un'attività di offload dei log.
La funzione stabilisce se pianificare un processo di trasferimento dell'attività e, in questo caso, pianifica l'esecuzione asincrona di LoggingFlushHandler
sul thread Weave.
La decisione di pianificare un lavaggio dipende da tre fattori:
una richiesta esplicita di svuotare il buffer
lo stato del buffer dell'evento e la quantità di dati non ancora sincronizzati con i consumer dell'evento
se è presente un evento di richiesta di svuotamento già in attesa.
La richiesta esplicita di pianificare uno svuotamento viene trasmessa tramite un parametro di input.
Lo svuotamento automatico viene in genere pianificato quando i buffer degli eventi contengono dati sufficienti a meritare l'avvio di un nuovo trasferimento. A seconda della strategia di trasferimento, possono essere presi in considerazione anche altri fattori, come il tempo minimo e massimo tra un trasferimento e l'altro.
Lo stato In attesa del log eventi è indicato dalla variabile mUploadRequested
. Poiché questa funzione può essere chiamata da più thread, mUploadRequested
deve essere letto e impostato a livello atomico, per evitare la pianificazione di una LoggingFlushHandler
ridondante prima che la notifica venga inviata.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Serializza gli eventi Weave di tutti i tipi di importanza.
Serializza gli eventi in WeaveCircularTLVBuffer e gli stati associati nel buffer fornito.
Questo metodo è stato pensato per essere utilizzato da dispositivi che non conservano la RAM durante la fase di sonno, consentendo loro di persistere gli eventi prima di andare a dormire e quindi di prevenire la perdita di eventi
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Imposta WeaveExchangeManager da utilizzare con questo sottosistema di logging.
Su alcune piattaforme, questa operazione potrebbe dover essere eseguita separatamente rispetto a CreateLoggingManagement() sopra.
Dettagli | |||
---|---|---|---|
Parametri |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
SkipEvent
void SkipEvent( EventLoadOutContext *aContext )
Funzione di supporto per saltare la scrittura di un evento corrispondente a un ID evento allocato.
Dettagli | |||
---|---|---|---|
Parametri |
|
ThrottleLogger
void ThrottleLogger( void )
ThrottleLogger eleva il livello di logging effettivo al livello di produzione.
UnregisterEventCallbackForImportance
void UnregisterEventCallbackForImportance( ImportanceType inImportance, event_id_t inEventID )
L'API pubblica per annullare la registrazione di un insieme di eventi archiviati esternamente.
Se annulli la registrazione del callback, LoggingManagement non potrà chiamare il callback per un insieme di eventi. LoggingManagement non invierà più questi ID evento agli abbonati.
Lo scopo è fare in modo che una funzione offra un insieme di eventi alla volta. Se è necessario registrare un nuovo insieme di eventi utilizzando la stessa funzione, devi prima annullare la registrazione del callback e poi registrarlo di nuovo. Ciò significa che non è più possibile recuperare l'insieme originale di eventi.
Questa funzione ha esito positivo senza condizioni. Se il callback non è mai stato registrato o è già stato annullato, non è possibile eseguire alcuna operazione.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
UnthrottleLogger
void UnthrottleLogger( void )
UnthrottleLogger ripristina il livello di logging effettivo al livello di logging configurato.
Funzioni statiche pubbliche
CreateLoggingManagement
void CreateLoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Crea l'oggetto LoggingManagement e inizializza il sottosistema di gestione del logging con le risorse fornite.
Inizializza LoggingManagement con un array di LogStorageResources. L'array deve fornire una risorsa per ogni livello di importanza valido, il cui valore numerico deve essere crescente (e in ordine decrescente); il primo elemento dell'array corrisponde alle risorse allocate per gli eventi più critici e l'ultimo elemento corrisponde agli eventi meno importanti.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
DestroyLoggingManagement
void DestroyLoggingManagement( void )
Esegui le azioni necessarie alla chiusura.