nl:: Weave:: Profiles:: DataManagement_Current:: LoggingManagement
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Es una clase para administrar los registros de eventos en la memoria.
Resumen
Constructores y destructores |
|
---|---|
LoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
|
|
LoggingManagement(void)
|
Funciones públicas |
|
---|---|
BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Función auxiliar para escribir el encabezado y los datos del evento según el protocolo de registro de eventos.
|
CancelShutdownInProgress(void)
|
void
Establece el valor de la marca mShutdownInProgress como falso.
|
CheckShouldRunWDM(void)
|
bool
Decide si quieres descargar eventos en función de la cantidad de bytes en los búferes de eventos sin programar para la carga.
|
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
|
Una función para recuperar eventos de importancia especificada desde un ID de evento especificado.
|
GetBytesWritten(void) const
|
uint32_t
Obtiene la cantidad total de bytes escritos (en todas las importancias de los eventos) en este registro desde su creación.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Un método auxiliar útil para examinar los búferes de registro en la memoria.
|
GetFirstEventID(ImportanceType inImportance)
|
Recupera el primer ID de evento almacenado actualmente para un nivel de importancia en particular.
|
GetLastEventID(ImportanceType inImportance)
|
Obtén el ID vendido más recientemente para un nivel de importancia específico.
|
IsShutdownInProgress(void)
|
bool
Marca la marca mShutdownInProgress.
|
IsValid(void)
|
bool
IsValid muestra si la instancia LoggingManagement es válida.
|
LoadEvents(TLVReader & reader)
|
Cargar un evento de Weave que se guardó anteriormente
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Registra un evento mediante una devolución de llamada con opciones.
|
MarkShutdownInProgress(void)
|
void
Establece la marca mShutdownInProgress como verdadera.
|
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)
|
La API pública para registrar un conjunto de eventos almacenados de forma externa.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
La API pública para registrar un conjunto de eventos almacenados de forma externa.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
La API pública para registrar un conjunto de eventos almacenados de forma externa.
|
ScheduleFlushIfNeeded(bool inFlushRequested)
|
Programar una tarea de descarga de registros
|
SerializeEvents(TLVWriter & writer)
|
Serializa los eventos de Weave de todos los tipos de importancia.
|
SetBDXUploader(LogBDXUpload *inUploader)
|
void
|
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
|
Establece el WeaveExchangeManager que se usará con este subsistema de registro.
|
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
|
|
SkipEvent(EventLoadOutContext *aContext)
|
void
Función auxiliar para omitir la escritura de un evento correspondiente a un ID de evento asignado.
|
ThrottleLogger(void)
|
void
ThrottleLogger eleva el nivel de registro efectivo al nivel de producción.
|
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
|
void
La API pública para cancelar el registro de un conjunto de eventos almacenados de forma externa.
|
UnthrottleLogger(void)
|
void
UnthrottleLogger restablece el nivel de registro efectivo al nivel de registro configurado.
|
Funciones estáticas públicas |
|
---|---|
CreateLoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
|
void
Crea un objeto LoggingManagement y, luego, inicializa el subsistema de administración de registros con los recursos proporcionados.
|
DestroyLoggingManagement(void)
|
void
Realiza las acciones necesarias durante el cierre.
|
GetInstance(void)
|
Funciones públicas
BlitEvent
WEAVE_ERROR BlitEvent( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Función auxiliar para escribir el encabezado y los datos del evento según el protocolo de registro de eventos.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
Establece el valor de la marca mShutdownInProgress como falso.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Decide si quieres descargar eventos en función de la cantidad de bytes en los búferes de eventos sin programar para la carga.
El comportamiento de la función se controla con la constante WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD. Si el sistema escribió más que esa cantidad de bytes desde la última vez que se envió una notificación WDM, la función indicará que es momento de activar NotificationEngine.
Detalles | |||||
---|---|---|---|---|---|
Valores de retorno |
|
FetchEventsSince
WEAVE_ERROR FetchEventsSince( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID )
Una función para recuperar eventos de importancia especificada desde un ID de evento especificado.
Con un nl::Weave::TLV::TLVWriter, un tipo de importancia y un ID de evento, la función recuperará eventos de importancia especificada desde el evento especificado. La función seguirá recuperando eventos hasta que se quede sin espacio en nl::Weave::TLV::TLVWriter o en el registro. La función finalizará la escritura del evento en el límite del evento.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Obtiene la cantidad total de bytes escritos (en todas las importancias de los eventos) en este registro desde su creación.
Detalles | |
---|---|
Resultado que se muestra |
La cantidad de bytes escritos en el registro.
|
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Un método auxiliar útil para examinar los búferes de registro en la memoria.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Resultado que se muestra |
WEAVE_NO_ERROR en todos los casos.
|
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Recupera el primer ID de evento almacenado actualmente para un nivel de importancia en particular.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Resultado que se muestra |
event_id_t El primer ID de evento almacenado actualmente para esa importancia del evento
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Obtén el ID vendido más recientemente para un nivel de importancia específico.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Resultado que se muestra |
El ID de evento vendido más reciente de event_id_t correspondiente a esa importancia del evento
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
Marca la marca mShutdownInProgress.
IsValid
bool IsValid( void )
IsValid muestra si la instancia LoggingManagement es válida.
Detalles | |||||
---|---|---|---|---|---|
Valores de retorno |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Cargar un evento de Weave persistente previamente.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Registra un evento mediante una devolución de llamada con opciones.
La función registra un evento representado como un EventWriterFunct y un contexto appData
específico de la app. La función escribe los metadatos del evento y llama a inEventWriter
con una referencia nl::Weave::TLV::TLVWriter y contexto inAppData
para que el código de usuario pueda emitir los datos del evento directamente en el registro de eventos. Esta forma de registro de eventos minimiza el consumo de memoria, ya que los datos de eventos se serializan directamente en el búfer de destino. Los datos de eventos DEBEN contener etiquetas de contexto para interpretarse dentro del esquema identificado por inProfileID
y inEventType
. Se ignorará la etiqueta del primer elemento. el sistema de registro de eventos lo reemplazará con la etiqueta eventData.
El evento se registra si la importancia del esquema supera el umbral de registro especificado en LoggingConfiguration. Si la importancia del evento no cumple con el umbral actual, se descarta y la función muestra un 0
como el ID del evento resultante.
Esta variante de la invocación permite al llamador establecer cualquier combinación de EventOptions
:
- marca de tiempo, cuando 0 se configura de forma predeterminada en la hora actual en el momento de la llamada,
- “raíz” la sección de la fuente del evento (la fuente del evento y el ID de la característica) si es NULL, el valor predeterminado es el dispositivo actual. el evento se marca como relacionado con el dispositivo que realiza la llamada.
- un ID de evento relacionado para agrupar los IDs de eventos Cuando el ID de evento relacionado es 0, el evento se marca como no relacionado con ningún otro evento.
- la urgencia; de forma predeterminada, no urgente.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Resultado que se muestra |
event_id_t Es el ID del evento si el evento se escribió en el registro. De lo contrario, es 0.
|
LoggingManagement
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Inicializa LoggingManagement con un array de LogStorageResources. El array debe proporcionar un recurso para cada nivel de importancia válido. Los elementos del array deben tener un valor numérico de importancia creciente (y de importancia decreciente). El primer elemento del array corresponde a los recursos asignados para los eventos más importantes y el último corresponde a los eventos menos importantes.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
LoggingManagement
LoggingManagement( void )
Se proporciona principalmente para satisfacer al compilador.
Detalles | |
---|---|
Resultado que se muestra |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Establece la marca mShutdownInProgress como verdadera.
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 )
La API pública para registrar un conjunto de eventos almacenados de forma externa.
Registra una devolución de llamada con el formato FetchExternalEventsFunct. Esta API requiere que la plataforma conozca la cantidad de eventos durante el registro. El funcionamiento interno también requiere que este número sea constante. Dado que esta API no permite que la plataforma registre IDs de eventos específicos, esto evita que la plataforma conserve el almacenamiento de eventos (al menos con IDs de eventos únicos).
Se llamará a la devolución de llamada cada vez que un suscriptor intente recuperar los IDs de eventos dentro del rango cualquier cantidad de veces hasta que se cancele el registro.
Esta variante de la función se debe usar cuando el proveedor externo desea recibir notificaciones cuando los eventos se entregaron a un suscriptor y si se expulsa el objeto de eventos externos.
Cuando se entregan los eventos, el proveedor externo recibe una notificación al respecto junto con el ID de nodo del destinatario y el ID del último evento entregado a ese destinatario. Ten en cuenta que es posible que al proveedor externo se le notifique varias veces para el mismo ID de evento. No hay restricciones específicas para el controlador, en particular, el controlador puede cancelar el registro de los IDs de eventos externos.
Si se expulsa el objeto de eventos externos de los búferes de registro, se notifica al proveedor externo junto con una copia del objeto de eventos externo.
El puntero al struct ExternalEvents será NULL en caso de falla; de lo contrario, se propagará con los IDs de los eventos de inicio y finalización asignados a la devolución de llamada. Este puntero debe usarse para cancelar el registro del conjunto de eventos.
Consulta la documentación de FetchExternalEventsFunct para obtener detalles sobre lo que debe implementar la devolución de llamada.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||
Valores de retorno |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
La API pública para registrar un conjunto de eventos almacenados de forma externa.
Registra una devolución de llamada con el formato FetchExternalEventsFunct. Esta API requiere que la plataforma conozca la cantidad de eventos durante el registro. El funcionamiento interno también requiere que este número sea constante. Dado que esta API no permite que la plataforma registre IDs de eventos específicos, esto evita que la plataforma conserve el almacenamiento de eventos (al menos con IDs de eventos únicos).
Se llamará a la devolución de llamada cada vez que un suscriptor intente recuperar los IDs de eventos dentro del rango cualquier cantidad de veces hasta que se cancele el registro.
Esta variante de la función se debe usar cuando el proveedor externo desea recibir notificaciones cuando los eventos se entregaron a un suscriptor, pero no cuando se expulse el objeto de eventos externos. Cuando se entregan los eventos, el proveedor externo recibe una notificación al respecto junto con el ID de nodo del destinatario y el ID del último evento entregado a ese destinatario. Ten en cuenta que es posible que al proveedor externo se le notifique varias veces para el mismo ID de evento. No hay restricciones específicas para el controlador, en particular, el controlador puede cancelar el registro de los IDs de eventos externos.
El puntero al struct ExternalEvents será NULL en caso de falla; de lo contrario, se propagará con los IDs de los eventos de inicio y finalización asignados a la devolución de llamada. Este puntero debe usarse para cancelar el registro del conjunto de eventos.
Consulta la documentación de FetchExternalEventsFunct para obtener detalles sobre lo que debe implementar la devolución de llamada.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||
Valores de retorno |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
La API pública para registrar un conjunto de eventos almacenados de forma externa.
Registra una devolución de llamada con el formato FetchExternalEventsFunct. Esta API requiere que la plataforma conozca la cantidad de eventos durante el registro. El funcionamiento interno también requiere que este número sea constante. Dado que esta API no permite que la plataforma registre IDs de eventos específicos, esto evita que la plataforma conserve el almacenamiento de eventos (al menos con IDs de eventos únicos).
Se llamará a la devolución de llamada cada vez que un suscriptor intente recuperar los IDs de eventos dentro del rango cualquier cantidad de veces hasta que se cancele el registro.
Esta variante de la función debe usarse cuando el proveedor externo desea una notificación, ni cuando se entregan los eventos externos ni cuando se expulsa el objeto de eventos externos.
El puntero al struct ExternalEvents será NULL en caso de falla; de lo contrario, se propagará con los IDs de los eventos de inicio y finalización asignados a la devolución de llamada. Este puntero debe usarse para cancelar el registro del conjunto de eventos.
Consulta la documentación de FetchExternalEventsFunct para obtener detalles sobre lo que debe implementar la devolución de llamada.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Programar una tarea de descarga de registros
La función decide si programa un proceso de descarga de tareas y, de ser así, programa la ejecución de LoggingFlushHandler
de manera asíncrona en el subproceso de Weave.
La decisión de programar una limpieza depende de tres factores:
una solicitud explícita para vaciar el búfer
el estado del búfer de eventos y la cantidad de datos que aún no están sincronizados con los consumidores de eventos
si ya hay un evento de solicitud de limpieza pendiente.
La solicitud explícita para programar una limpieza se pasa a través de un parámetro de entrada.
El vaciado automático generalmente se programa cuando los búferes de eventos contienen suficientes datos para justificar el inicio de una nueva descarga. También se pueden tener en cuenta desencadenantes adicionales, como el tiempo mínimo y máximo entre descargas, según la estrategia de descarga.
La variable mUploadRequested
indica el estado pendiente del registro de eventos. Como varios subprocesos pueden llamar a esta función, se debe leer y configurar mUploadRequested
de forma atómica para evitar programar una LoggingFlushHandler
redundante antes de que se envíe la notificación.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores de retorno |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Serializa los eventos de Weave de todos los tipos de importancia.
Serializa los eventos en WeaveCircularTLVBuffer y los estados asociados en el búfer proporcionado.
Este método está diseñado para que lo usen los dispositivos que no retienen RAM mientras están suspendidos, lo que les permite conservar eventos antes de irse a dormir y, por lo tanto, evitar la pérdida de eventos
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Establece el WeaveExchangeManager que se usará con este subsistema de registro.
En algunas plataformas, es posible que esto deba hacerse por separado de CreateLoggingManagement(), más arriba.
Detalles | |||
---|---|---|---|
Parámetros |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
SkipEvent
void SkipEvent( EventLoadOutContext *aContext )
Función auxiliar para omitir la escritura de un evento correspondiente a un ID de evento asignado.
Detalles | |||
---|---|---|---|
Parámetros |
|
ThrottleLogger
void ThrottleLogger( void )
ThrottleLogger eleva el nivel de registro efectivo al nivel de producción.
UnregisterEventCallbackForImportance
void UnregisterEventCallbackForImportance( ImportanceType inImportance, event_id_t inEventID )
La API pública para cancelar el registro de un conjunto de eventos almacenados de forma externa.
Cancelar el registro de la devolución de llamada evitará que LoggingManagement llame a la devolución de llamada para un conjunto de eventos. LoggingManagement ya no enviará esos IDs de eventos a los suscriptores.
El intent sirve para que una función entregue un conjunto de eventos a la vez. Si es necesario registrar un nuevo conjunto de eventos usando la misma función, primero se debe cancelar el registro de la devolución de llamada y luego volver a registrarse. Esto significa que ya no se puede recuperar el conjunto original de eventos.
Esta función se ejecuta correctamente de forma incondicional. Si nunca se registró la devolución de llamada o ya se canceló el registro, no-op.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
UnthrottleLogger
void UnthrottleLogger( void )
UnthrottleLogger restablece el nivel de registro efectivo al nivel de registro configurado.
Funciones estáticas públicas
CreateLoggingManagement
void CreateLoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Crea un objeto LoggingManagement y, luego, inicializa el subsistema de administración de registros con los recursos proporcionados.
Inicializa LoggingManagement con un array de LogStorageResources. El array debe proporcionar un recurso para cada nivel de importancia válido. Los elementos del array deben tener un valor numérico de importancia creciente (y de importancia decreciente). el primer elemento de la matriz corresponde a los recursos asignados para los eventos más críticos y el último elemento corresponde a los eventos menos importantes.
.Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
DestroyLoggingManagement
void DestroyLoggingManagement( void )
Realiza las acciones necesarias durante el cierre.