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)
Constructor predeterminado LoggingManagement.
|
Funciones públicas |
|
---|---|
BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Función auxiliar para escribir encabezados y datos de eventos 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 búferes de eventos no programados para 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 eventos) en este registro desde que se crearon sus instancias.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Un método de ayuda útil para examinar los búferes de registro en la memoria
|
GetFirstEventID(ImportanceType inImportance)
|
Recupera el primer ID de evento almacenado para un nivel de importancia determinado.
|
GetLastEventID(ImportanceType inImportance)
|
Recupera el ID de venta más reciente para un nivel de importancia determinado.
|
IsShutdownInProgress(void)
|
bool
Verifica la marca mShutdownInProgress.
|
IsValid(void)
|
bool
IsValid muestra si la instancia de LoggingManagement es válida.
|
LoadEvents(TLVReader & reader)
|
Carga un evento de Weave que se guardó anteriormente.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Registra un evento con una devolución de llamada, con opciones.
|
MarkShutdownInProgress(void)
|
void
Establece la marca mShutdownInProgress como verdadero.
|
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)
|
Configura WeaveExchangeManager para usarlo con este subsistema de registro.
|
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
|
|
SkipEvent(EventLoadOutContext *aContext)
|
void
Es una función auxiliar que omite 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 el objeto LoggingManagement y, luego, inicializa el subsistema de administración de registros con los recursos proporcionados.
|
DestroyLoggingManagement(void)
|
void
Realizar las acciones que necesitemos 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 encabezados y datos de eventos 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 búferes de eventos no programados para 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 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.
Con 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á el evento que escribe 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 eventos) en este registro desde que se crearon sus instancias.
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 de ayuda ú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 )
Recupera el primer ID de evento almacenado para un nivel de importancia determinado.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
event_id_t El primer ID del evento almacenado actualmente para esa importancia del evento
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Recupera el ID de venta más reciente para un nivel de importancia determinado.
Detalles | |||
---|---|---|---|
Parámetros |
|
||
Qué muestra |
event_id_t ID del evento vendido más recientemente para esa importancia del evento
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
Verifica la marca mShutdownInProgress.
IsValid
bool IsValid( void )
IsValid muestra si la instancia de LoggingManagement es válida.
Detalles | |||||
---|---|---|---|---|---|
Valores que se muestran |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Carga un evento de Weave que se guardó anteriormente.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Registra un evento con una devolución de llamada, con opciones.
La función registra un evento representado como 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 un contexto de inAppData
para que el código del 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 del evento DEBEN contener etiquetas de contexto para que se interpreten dentro del esquema identificado por inProfileID
y inEventType
. Se ignorará la etiqueta del primer elemento; el sistema de registro de eventos la 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 que el llamador establezca cualquier combinación de EventOptions
:
- marca de tiempo, cuando 0 muestra de manera predeterminada la hora actual en el punto de la llamada,
- Sección “raíz” de la fuente del evento (fuente del evento e 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 IDs de eventos; cuando el ID de evento relacionado es 0, el evento se marca como no relacionado con ningún otro evento.
- urgencia; de forma predeterminada no es urgente.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Qué 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 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 |
|
LoggingManagement
LoggingManagement( void )
Constructor predeterminado LoggingManagement.
Se proporciona principalmente para satisfacer al compilador.
Detalles | |
---|---|
Qué muestra |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Establece la marca mShutdownInProgress como verdadero.
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 un 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 ID de eventos dentro del rango, cualquier cantidad de veces hasta que se cancele su registro.
Esta variante de la función se debe usar cuando el proveedor externo desea recibir una notificación cuando los eventos se entregan a un suscriptor y si el objeto de eventos externos se expulsa.
Cuando se entregan los eventos, el proveedor externo recibe una notificación sobre eso junto con el ID de nodo del destinatario y el ID del último evento entregado a ese destinatario. Ten en cuenta que el proveedor externo puede recibir varias notificaciones sobre el mismo ID de evento. No hay restricciones específicas para el controlador; en particular, este puede cancelar el registro de los ID de eventos externos.
Si el objeto de eventos externo 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 a la estructura ExternalEvents será NULL si se produce un error; de lo contrario, se propagará con los ID de evento de inicio y finalización asignados a la devolución de llamada. Este puntero se debe usar 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 que se muestran |
|
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 un 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 ID de eventos dentro del rango, cualquier cantidad de veces hasta que se cancele su 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, el proveedor externo recibe una notificación sobre eso junto con el ID de nodo del destinatario y el ID del último evento entregado a ese destinatario. Ten en cuenta que el proveedor externo puede recibir varias notificaciones sobre el mismo ID de evento. No hay restricciones específicas para el controlador; en particular, este puede cancelar el registro de los ID de eventos externos.
El puntero a la estructura ExternalEvents será NULL si se produce un error; de lo contrario, se propagará con los ID de evento de inicio y finalización asignados a la devolución de llamada. Este puntero se debe usar 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 que se muestran |
|
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 un 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 ID de eventos dentro del rango, cualquier cantidad de veces hasta que se cancele su registro.
Esta variante de la función debe usarse cuando el proveedor externo desea una notificación cuando no se entregan los eventos externos ni cuando se expulsa el objeto de eventos externos.
El puntero a la estructura ExternalEvents será NULL si se produce un error; de lo contrario, se propagará con los ID de evento de inicio y finalización asignados a la devolución de llamada. Este puntero se debe usar 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 que se muestran |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Programar una tarea de descarga de registros
La función decide si programar un proceso de descarga de tareas y, de ser así, programa el LoggingFlushHandler
para que se ejecute de forma 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 se han sincronizado con los consumidores de eventos
si ya hay un evento de solicitud de vaciado pendiente.
La solicitud explícita para programar una limpieza se pasa a través de un parámetro de entrada.
Por lo general, el vaciado automático se programa cuando los búferes de eventos contienen datos suficientes para iniciar una nueva descarga. Según la estrategia de descarga, también se pueden tener en cuenta 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 forma atómica para evitar programar un LoggingFlushHandler
redundante antes de que se envíe la notificación.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
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 su uso en dispositivos que no retienen RAM mientras están en suspensión, lo que les permite conservar eventos antes de ponerse en modo de suspensión y, por lo tanto, evitar la pérdida de eventos.
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Configura WeaveExchangeManager para usarlo con este subsistema de registro.
En algunas plataformas, es posible que esto deba suceder 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 )
Es una función auxiliar que omite 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.
Si anulas el registro de la devolución de llamada, LoggingManagement no podrá llamarla para un conjunto de eventos. LoggingManagement ya no enviará esos ID de eventos a los suscriptores.
El intent es 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, se debe volver a registrar. Esto significa que ya no se puede recuperar el conjunto original de eventos.
Esta función se ejecuta correctamente de manera incondicional. Si la devolución de llamada nunca se registró o ya se anuló el registro, es una 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 el 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 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 )
Realizar las acciones que necesitemos durante el cierre