nl:: Weave:: DataManagement_Current:: DataManagement_Current:: Administración de datos
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
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 datos y encabezados de eventos según el protocolo de registro de eventos.
|
CancelShutdownInProgress(void)
|
void
Configura la marca mShutdownInProgress como falsa.
|
CheckShouldRunWDM(void)
|
bool
Decide si quieres que los eventos se descarguen en función de la cantidad de bytes en el búfer de eventos no programados 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
Obtén la cantidad total de bytes escritos (en todas las importancias de los eventos) en este registro desde la creación de su instancia.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Un método útil para examinar los búferes de registro en la memoria.
|
GetFirstEventID(ImportanceType inImportance)
|
Recuperar el primer ID de evento actualmente almacenado para un nivel de importancia determinado
|
GetLastEventID(ImportanceType inImportance)
|
Recupera el ID vendido más recientemente para un nivel de importancia determinado.
|
IsShutdownInProgress(void)
|
bool
Comprueba la marca mShutdownInProgress.
|
IsValid(void)
|
bool
IsValid muestra si la instancia LoggingManagement es válida.
|
LoadEvents(TLVReader & reader)
|
Carga un evento de Weave persistente 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
Se 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 importancias.
|
SetBDXUploader(LogBDXUpload *inUploader)
|
void
|
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
|
Configura WeaveExchangeManager para 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
UnceleLogger 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 e inicializa el subsistema de administración de registros con los recursos proporcionados.
|
DestroyLoggingManagement(void)
|
void
Realiza las acciones que sean necesarias durante el cierre.
|
GetInstance(void)
|
Funciones públicas
BliEvent
WEAVE_ERROR BlitEvent( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Función auxiliar para escribir datos y encabezados de eventos según el protocolo de registro de eventos.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
CancelarApellidoEnProgreso
void CancelShutdownInProgress( void )
Configura la marca mShutdownInProgress como falsa.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Decide si quieres que los eventos se descarguen en función de la cantidad de bytes en el búfer de eventos no programados para la carga.
El comportamiento de la función se controla mediante 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 de WDM, la función indicará que es el momento de activar NotificationEngine.
Detalles | |||||
---|---|---|---|---|---|
Valores que se muestran |
|
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.
Dada una nl::Weave::TLV::TLVWriter, un tipo de importancia y un ID de evento, la función recuperará eventos de importancia específica desde el evento especificado. La función continuará 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 que se muestran |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Obtén la cantidad total de bytes escritos (en todas las importancias de los eventos) en este registro desde la creación de su instancia.
Detalles | |
---|---|
Qué muestra |
La cantidad de bytes escritos en el registro.
|
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Un método útil para examinar los búferes de registro en la memoria.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Qué muestra |
WEAVE_NO_ERROR Incondicionalmente.
|
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Recuperar el primer ID de evento actualmente almacenado para un nivel de importancia determinado
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
event_id_t Primer ID de evento almacenado actualmente para esa importancia
|
Obtener últimoID del evento
event_id_t GetLastEventID( ImportanceType inImportance )
Recupera el ID vendido más recientemente para un nivel de importancia determinado.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
event_id_t ID de evento vendido más recientemente para esa importancia de evento
|
Está apagado en progreso
bool IsShutdownInProgress( void )
Comprueba la marca mShutdownInProgress.
Es válido
bool IsValid( void )
IsValid muestra si la instancia LoggingManagement es válida.
Detalles | |||||
---|---|---|---|---|---|
Valores que se muestran |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Carga un evento de Weave persistente anteriormente.
Evento de registro
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 de 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 el contexto inAppData
para que el código del usuario pueda emitir los datos del evento directamente en el registro del evento. Esta forma de registro de eventos minimiza el consumo de memoria, ya que los datos del evento se serializan directamente en el búfer de destino. Los datos de evento DEBEN contener etiquetas de contexto que se interpreten dentro del esquema identificado por inProfileID
y inEventType
. Se ignorará la etiqueta del primer elemento, y el sistema de registro de eventos la reemplazará por 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 ID de evento resultante.
Esta variante de la invocación permite que el llamador establezca cualquier combinación de EventOptions
:
- marca de tiempo, cuando 0 se establece de forma predeterminada en la hora actual en el punto de llamada,
- "root" de la fuente del evento (ID del origen y de la función; si es NULL, se establece de manera predeterminada en el dispositivo actual. El evento se marca como relacionado con el dispositivo que realiza la llamada).
- un ID de evento relacionado para agrupar los ID de evento; cuando el ID de evento relacionado es 0, el evento se marca como no relacionado con ningún otro evento
- urgentes; de manera predeterminada, no urgente.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Qué muestra |
event_id_t Si el evento se escribió en el registro, de lo contrario, es 0.
|
Administración de registros
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Inicializa LoggingManagement con un arreglo 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 importante (y de menor importancia). El primer elemento del array corresponde a los recursos asignados para los eventos más críticos, y el último corresponde a los eventos menos importantes.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
Administración de registros
LoggingManagement( void )
Se proporciona principalmente para que el compilador sea feliz.
Detalles | |
---|---|
Qué muestra |
Marcar en curso
void MarkShutdownInProgress( void )
Se establece la marca mShutdownInProgress como verdadera.
NotifyEventss entregados
void NotifyEventsDelivered( ImportanceType inImportance, event_id_t inLastDeliveredEventID, uint64_t inRecipientNodeID )
RegistrarEventCallbackForImportance
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 registrados. Los procesos internos también requieren que esta cantidad sea constante. Esta API no permite que la plataforma registre ID de eventos específicos, lo que evita que la plataforma conserve el almacenamiento de eventos (al menos con ID de eventos únicos).
Se llamará a la devolución de llamada cada vez que un suscriptor intente recuperar los ID de eventos dentro del rango cualquier cantidad de veces hasta que se anule el registro.
Esta variante de la función se debe usar cuando el proveedor externo desea recibir una notificación cuando se entregan los eventos a un suscriptor y si se expulsa el objeto de eventos externos.
Cuando se entregan los eventos, se notifica al proveedor externo eso junto con el ID del nodo del destinatario y el ID del último evento que se entregó a ese destinatario. Tenga en cuenta que es posible que el proveedor externo reciba varias notificaciones sobre el mismo ID del evento. No hay restricciones específicas en el controlador; en particular, este puede cancelar el registro de los ID de eventos externos.
Si el objeto de eventos externos se expulsa de los búferes de registro, el proveedor externo recibe una notificación junto con una copia del objeto de eventos externos.
El puntero de la struct ExternalEvents será NULL en caso de error. De lo contrario, se propagará con los ID de eventos de inicio y finalización asignados a la devolución de llamada. Este puntero debería usarse para anular 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 que se muestran |
|
RegistrarEventCallbackForImportance
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 registrados. Los procesos internos también requieren que esta cantidad sea constante. Esta API no permite que la plataforma registre ID de eventos específicos, lo que evita que la plataforma conserve el almacenamiento de eventos (al menos con ID de eventos únicos).
Se llamará a la devolución de llamada cada vez que un suscriptor intente recuperar los ID de eventos dentro del rango cualquier cantidad de veces hasta que se anule el registro.
Esta variante de la función debe usarse cuando el proveedor externo desea recibir una notificación cuando los eventos se entregan a un suscriptor, pero no cuando se expulsa el objeto de eventos externos. Cuando se entregan los eventos, se notifica al proveedor externo eso junto con el ID del nodo del destinatario y el ID del último evento que se entregó a ese destinatario. Tenga en cuenta que es posible que el proveedor externo reciba varias notificaciones sobre el mismo ID del evento. No hay restricciones específicas en el controlador; en particular, este puede cancelar el registro de los ID de eventos externos.
El puntero de la struct ExternalEvents será NULL en caso de error. De lo contrario, se propagará con los ID de eventos de inicio y finalización asignados a la devolución de llamada. Este puntero debería usarse para anular 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 que se muestran |
|
RegistrarEventCallbackForImportance
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 registrados. Los procesos internos también requieren que esta cantidad sea constante. Esta API no permite que la plataforma registre ID de eventos específicos, lo que evita que la plataforma conserve el almacenamiento de eventos (al menos con ID de eventos únicos).
Se llamará a la devolución de llamada cada vez que un suscriptor intente recuperar los ID de eventos dentro del rango cualquier cantidad de veces hasta que se anule el registro.
Esta variante de la función debe usarse cuando el proveedor externo desea una notificación, ya sea cuando se entregan los eventos externos o cuando se expulsa el objeto de eventos externos.
El puntero de la struct ExternalEvents será NULL en caso de error. De lo contrario, se propagará con los ID de eventos de inicio y finalización asignados a la devolución de llamada. Este puntero debería usarse para anular 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 que se muestran |
|
ProgramaFlushIfNeeded Needed
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Programar una tarea de descarga de registros
La función decide si es necesario programar un proceso de descarga de tareas y, si es así, programa la ejecución de LoggingFlushHandler
en el subproceso de Weave.
La decisión de programar un vaciado 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 se sincronizaron con los consumidores de eventos
si ya hay un evento de solicitud de vaciado de solicitudes pendiente.
La solicitud explícita para programar un vaciado se pasa por medio de un parámetro de entrada.
Normalmente, la limpieza automática se programa cuando los búferes de eventos contienen suficientes datos como para recibir el comienzo de una descarga nueva. Según la estrategia de descarga, también se pueden considerar los activadores adicionales, como el tiempo mínimo y máximo entre descargas.
La variable mUploadRequested
indica el estado pendiente del registro de eventos. Dado que varios subprocesos pueden llamar a esta función, mUploadRequested
debe leerse y configurarse de manera atómica para evitar programar un LoggingFlushHandler
redundante antes de que se envíe la notificación.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
SerializarEventos
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Serializa los eventos de Weave de todos los tipos de importancias.
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 la memoria RAM mientras duermen, lo que les permite conservar eventos antes de suspenderlos y, por lo tanto, prevenir la pérdida de eventos.
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Configura WeaveExchangeManager para usar con este subsistema de registro.
En algunas plataformas, es posible que esto deba ocurrir por separado de CreateLoggingManagement(),
Detalles | |||
---|---|---|---|
Parámetros |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
Omitir evento
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.
Cancelar el registro del eventoEventCallbackForImportance
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.
Si se cancela el registro de la devolución de llamada, LoggingManagement no la llamará para un conjunto de eventos. LoggingManagement ya no enviará esos ID de evento a los suscriptores.
El intent es para que una función entregue un conjunto de eventos a la vez. Si es necesario registrar un nuevo conjunto de eventos con 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 de forma incondicional. Si la devolución de llamada nunca se registró o si ya no está registrada, es una no-op.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
UnlimitLogger
void UnthrottleLogger( void )
UnceleLogger 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 e inicializa el subsistema de administración de registros con los recursos proporcionados.
Inicializa LoggingManagement con un arreglo 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 importante (y de menor importancia). El primer elemento del array corresponde a los recursos asignados para los eventos más críticos, y el último corresponde a los eventos menos importantes.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
DestroyLoggingManagement
void DestroyLoggingManagement( void )
Realiza las acciones que sean necesarias durante el cierre.