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 helper per la scrittura di intestazioni e 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 trasferire gli eventi in base al numero di byte nei buffer di eventi non pianificati per il caricamento.
|
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
Recupera il numero totale di byte scritti (per tutte le importazioni degli eventi) in questo log sin dalla creazione dell'istanza.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Metodo di supporto utile per esaminare i buffer di 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 venduto più di 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 un evento Weave persistente in precedenza.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Registra un evento tramite callback, con opzioni.
|
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 archiviati 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 archiviati esternamente.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
L'API pubblica per la registrazione di un insieme di eventi archiviati 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 helper per saltare la scrittura di un evento corrispondente a un ID evento allocato.
|
ThrottleLogger(void)
|
void
ThrottleLogger aumenta il livello di registrazione effettivo al livello di produzione.
|
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
|
void
L'API pubblica per l'annullamento della 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 dei log con le risorse fornite.
|
DestroyLoggingManagement(void)
|
void
Eseguire 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 helper per la scrittura di intestazioni e 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 trasferire gli eventi in base al numero di byte nei buffer di eventi non pianificati per il caricamento.
Il comportamento della funzione è controllato tramite la costante WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD. Se il sistema ha scritto più di quel numero di byte dall'ultima volta che è 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 gli 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
Recupera il numero totale di byte scritti (per tutte le importazioni degli eventi) in questo log sin dalla creazione dell'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 di 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 venduto più di recente per un determinato livello di importanza.
Dettagli | |||
---|---|---|---|
Parametri |
|
||
Restituisce |
event_id_t ID evento distribuito più di recente per l'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 un 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 opzioni.
La funzione registra un evento rappresentato come EventWriterFunct e un contesto appData
specifico dell'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 inviare i dati sull'evento direttamente nel log eventi. Questo tipo di logging eventi riduce al minimo il consumo di memoria, poiché i dati degli eventi vengono serializzati direttamente nel buffer di destinazione. I dati sull'evento DEVONO contenere tag di contesto da interpretare all'interno dello schema identificato da inProfileID
e inEventType
. Il tag del primo elemento verrà ignorato; il sistema di logging 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, l'evento 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 il valore predefinito di 0 corrisponde all'ora corrente al momento della chiamata,
- "radice" sezione dell'origine evento (origine evento e ID trait); se NULL, il valore predefinito sarà il dispositivo attuale. l'evento sia contrassegnato come relativo al dispositivo che effettua la chiamata.
- un ID evento correlato per raggruppare gli ID evento; Quando 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, gli elementi dell'array devono essere in valore numerico crescente e decrescente; il primo elemento dell'array corrisponde alle risorse allocate per gli eventi più critici e l'ultimo agli eventi meno importanti.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
LoggingManagement
LoggingManagement( void )
Costruttore predefinito LoggingManagement.
Forniti 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 archiviati esternamente.
Registra un callback per il modulo FetchExternalEventsFunct. Questa API richiede che la piattaforma conosca il numero di eventi registrati. Anche il funzionamento interno richiede che questo numero sia costante. Poiché questa API non consente alla piattaforma di registrare ID evento specifici, impedisce alla piattaforma di conservare in modo permanente l'archiviazione degli eventi (almeno con ID evento univoci).
Il callback verrà chiamato ogni volta che un sottoscrittore tenta di recuperare gli ID evento nell'intervallo 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 viene rimosso.
Quando gli eventi vengono recapitati, il provider esterno riceve una notifica in merito, insieme all'ID nodo del destinatario e all'ID dell'ultimo evento recapitato a quel destinatario. Tieni presente che il provider esterno potrebbe ricevere più notifiche per lo stesso ID evento. Non ci sono 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 di log, il provider esterno viene avvisato insieme a una copia dell'oggetto eventi esterni.
Il puntatore allo struct ExternalEvents sarà NULL in caso di errore, altrimenti verrà compilato con gli ID evento di inizio e fine assegnati al callback. Questo puntatore deve essere utilizzato per annullare la registrazione dell'insieme di eventi.
Per informazioni dettagliate su cosa deve implementare il callback, consulta la documentazione di FetchExternalEventsFunct.
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 archiviati esternamente.
Registra un callback per il modulo FetchExternalEventsFunct. Questa API richiede che la piattaforma conosca il numero di eventi registrati. Anche il funzionamento interno richiede che questo numero sia costante. Poiché questa API non consente alla piattaforma di registrare ID evento specifici, impedisce alla piattaforma di conservare in modo permanente l'archiviazione degli eventi (almeno con ID evento univoci).
Il callback verrà chiamato ogni volta che un sottoscrittore tenta di recuperare gli ID evento nell'intervallo 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 vengono inviati a un sottoscrittore, ma non quando l'oggetto eventi esterni viene rimosso. Quando gli eventi vengono recapitati, il provider esterno riceve una notifica in merito, insieme all'ID nodo del destinatario e all'ID dell'ultimo evento recapitato a quel destinatario. Tieni presente che il provider esterno potrebbe ricevere più notifiche per lo stesso ID evento. Non ci sono limitazioni specifiche per il gestore; in particolare, il gestore può annullare la registrazione degli ID evento esterni.
Il puntatore allo struct ExternalEvents sarà NULL in caso di errore, altrimenti verrà compilato con gli ID evento di inizio e fine assegnati al callback. Questo puntatore deve essere utilizzato per annullare la registrazione dell'insieme di eventi.
Per informazioni dettagliate su cosa deve implementare il callback, consulta la documentazione di FetchExternalEventsFunct.
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 archiviati esternamente.
Registra un callback per il modulo FetchExternalEventsFunct. Questa API richiede che la piattaforma conosca il numero di eventi registrati. Anche il funzionamento interno richiede che questo numero sia costante. Poiché questa API non consente alla piattaforma di registrare ID evento specifici, impedisce alla piattaforma di conservare in modo permanente l'archiviazione degli eventi (almeno con ID evento univoci).
Il callback verrà chiamato ogni volta che un sottoscrittore tenta di recuperare gli ID evento nell'intervallo un numero qualsiasi di volte fino all'annullamento della registrazione.
Questa variante della funzione deve essere utilizzata quando il provider esterno desidera una notifica né quando gli eventi esterni sono stati inviati né quando l'oggetto eventi esterni viene rimosso.
Il puntatore allo struct ExternalEvents sarà NULL in caso di errore, altrimenti verrà compilato con gli ID evento di inizio e fine assegnati al callback. Questo puntatore deve essere utilizzato per annullare la registrazione dell'insieme di eventi.
Per informazioni dettagliate su cosa deve implementare il callback, consulta la documentazione di FetchExternalEventsFunct.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Pianifica un'attività di offload dei log.
La funzione decide se pianificare un processo di offload dell'attività e, in questo caso, pianifica l'esecuzione di LoggingFlushHandler
in modo asincrono sul thread Weave.
La decisione di pianificare un lavaggio dipende da tre fattori:
una richiesta esplicita di svuotare il buffer
lo stato del buffer di eventi e la quantità di dati non ancora sincronizzati con i consumer di eventi.
se è presente un evento di richiesta di svuotamento della richiesta già in attesa.
La richiesta esplicita di pianificare uno svuotamento viene passata tramite un parametro di input.
In genere, lo svuotamento automatico viene pianificato quando i buffer di eventi contengono dati sufficienti per meritare l'avvio di un nuovo offload. A seconda della strategia di offload, possono essere presi in considerazione anche altri trigger, come il tempo minimo e massimo tra gli offload.
Lo stato In attesa del log eventi è indicato dalla variabile mUploadRequested
. Poiché questa funzione può essere chiamata da più thread, è necessario leggere e impostare mUploadRequested
a livello atomico, per evitare di pianificare un LoggingFlushHandler
ridondante prima dell'invio della notifica.
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 concepito per essere utilizzato da dispositivi che non conservano la RAM durante il sonno, consentendo loro di persistere gli eventi prima di andare a dormire e quindi 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 da CreateLoggingManagement() sopra.
Dettagli | |||
---|---|---|---|
Parametri |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
SkipEvent
void SkipEvent( EventLoadOutContext *aContext )
Funzione helper per saltare la scrittura di un evento corrispondente a un ID evento allocato.
Dettagli | |||
---|---|---|---|
Parametri |
|
ThrottleLogger
void ThrottleLogger( void )
ThrottleLogger aumenta il livello di registrazione effettivo al livello di produzione.
UnregisterEventCallbackForImportance
void UnregisterEventCallbackForImportance( ImportanceType inImportance, event_id_t inEventID )
L'API pubblica per l'annullamento della registrazione di un insieme di eventi archiviati esternamente.
L'annullamento della registrazione del callback impedirà a LoggingManagement di chiamare il callback per un insieme di eventi. LoggingManagement non invierà più questi ID evento ai sottoscrittori.
Lo scopo è che una funzione gestisca un insieme di eventi alla volta. Se è necessario registrare un nuovo insieme di eventi utilizzando la stessa funzione, occorre prima annullare la registrazione e poi ripetere la registrazione del callback. Ciò significa che l'insieme originale di eventi non può più essere recuperato.
Questa funzione ha esito positivo incondizionatamente. Se il callback non è mai stato registrato o se l'ha già annullata, la richiamata è indipendente.
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 dei log con le risorse fornite.
Inizializza LoggingManagement con un array di LogStorageResources. L'array deve fornire una risorsa per ogni livello di importanza valido, gli elementi dell'array devono essere in valore numerico crescente e decrescente; il primo elemento dell'array corrisponde alle risorse allocate per gli eventi più critici e l'ultimo agli eventi meno importanti.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
DestroyLoggingManagement
void DestroyLoggingManagement( void )
Eseguire le azioni necessarie alla chiusura.