nl :: Tejido:: Perfiles: DataManagement_Current :: Gestión de registros
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Una clase para administrar los registros de eventos en memoria.
Resumen
Constructores y Destructores | |
---|---|
LoggingManagement ( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources) Constructor LoggingManagement . | |
LoggingManagement (void) Constructor predeterminado de LoggingManagement . |
Funciones publicas | |
---|---|
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 de acuerdo con el protocolo de registro de eventos. |
CancelShutdownInProgress (void) | void Establezca el indicador mShutdownInProgress en falso. |
CheckShouldRunWDM (void) | bool Decida si desea descargar los eventos en función del número de bytes en los búferes 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 Obtenga el número total de bytes escritos (en todos los eventos importantes) en este registro desde su instanciación. |
GetEventReader (nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance) | Un método auxiliar útil para examinar los búferes de registro en memoria. |
GetFirstEventID ( ImportanceType inImportance) | Obtenga el primer ID de evento almacenado actualmente para un nivel de importancia particular. |
GetLastEventID ( ImportanceType inImportance) | Obtenga el ID vendido más recientemente para un nivel de importancia particular. |
IsShutdownInProgress (void) | bool Compruebe el indicador mShutdownInProgress. |
IsValid (void) | bool IsValid devuelve si la instancia de LoggingManagement es válida. |
LoadEvents (TLVReader & reader) | Cargar el evento Weave persistente anteriormente. |
LogEvent (const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions) | Registre un evento a través de una devolución de llamada, con opciones. |
MarkShutdownInProgress (void) | void Establezca el indicador mShutdownInProgress en 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 externamente. |
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 externamente. |
RegisterEventCallbackForImportance ( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID) | La API pública para registrar un conjunto de eventos almacenados externamente. |
ScheduleFlushIfNeeded (bool inFlushRequested) | Programe una tarea de descarga de registros. |
SerializeEvents (TLVWriter & writer) | Serialice los eventos de Weave de todo tipo de importancia. |
SetBDXUploader ( LogBDXUpload *inUploader) | void |
SetExchangeManager ( nl::Weave::WeaveExchangeManager *inMgr) | Configure el WeaveExchangeManager que se utilizará 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 anular el registro de un conjunto de eventos almacenados externamente. |
UnthrottleLogger (void) | void UnthrottleLogger restaura 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 Cree el objeto LoggingManagement e inicialice el subsistema de gestión de registro con los recursos proporcionados. |
DestroyLoggingManagement (void) | void Realice cualquier acción que necesitemos al apagar. |
GetInstance (void) |
Funciones publicas
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 de acuerdo con el protocolo de registro de eventos.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
Establezca el indicador mShutdownInProgress en falso.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Decida si desea descargar los eventos según la cantidad de bytes en los búferes 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 de ese número de bytes desde la última vez que se envió una Notificación WDM, la función indicará que es hora de activar el NotificationEngine .
Detalles | |||||
---|---|---|---|---|---|
Valores devueltos |
|
FetchEventsDesde
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.
Dado unnl :: Weave :: TLV :: TLVWriter , un tipo de importancia y un ID de evento, la función buscará eventos de importancia especificada desde el evento especificado. La función continuará obteniendo eventos hasta que se quede sin espacio ennl :: Weave :: TLV :: TLVWriter o en el registro. La función terminará la escritura del evento en el límite del evento.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
| ||||||
Valores devueltos |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Obtenga el número total de bytes escritos (en todos los eventos importantes) en este registro desde su instanciación.
Detalles | |
---|---|
Devoluciones | El número 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 memoria.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
| ||||
Devoluciones | WEAVE_NO_ERROR Incondicionalmente. |
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Obtenga el primer ID de evento almacenado actualmente para un nivel de importancia particular.
Detalles | |||
---|---|---|---|
Parámetros |
| ||
Devoluciones | event_id_t Primer ID de evento actualmente almacenado para la importancia de ese evento |
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Obtenga el ID vendido más recientemente para un nivel de importancia particular.
Detalles | |||
---|---|---|---|
Parámetros |
| ||
Devoluciones | event_id_t ID de evento vendido más recientemente para la importancia de ese evento |
IsShutdownInProgress
bool IsShutdownInProgress( void )
Compruebe el indicador mShutdownInProgress.
Es válida
bool IsValid( void )
IsValid devuelve si la instancia de LoggingManagement es válida.
Detalles | |||||
---|---|---|---|---|---|
Valores devueltos |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Cargar el evento Weave persistente anteriormente.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Registre un evento a través de una devolución de llamada, con opciones.
La función registra un evento representado como EventWriterFunct y un contexto appData
específico de la appData
. La función escribe los metadatos del evento y llama a inEventWriter
con una referencianl :: Weave :: TLV :: TLVWriter y inAppData
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 del evento DEBEN contener etiquetas de contexto para ser interpretadas dentro del esquema identificado por inProfileID
e 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 alcanza el umbral actual, se descarta y la función devuelve un 0
como ID del evento resultante.
Esta variante de la invocación permite a la persona que llama establecer cualquier combinación de EventOptions
:
- marca de tiempo, cuando 0 por defecto es la hora actual en el punto de la llamada,
- sección "raíz" del origen del evento (origen del evento e ID de rasgo); si es NULL, toma como valor predeterminado el dispositivo actual. el evento está marcado como relacionado con el dispositivo que está haciendo la llamada,
- un ID de evento relacionado para agrupar ID de eventos; cuando el ID de evento relacionado es 0, el evento se marca como no relacionado con ningún otro evento,
- urgencia; por defecto no urgente.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
| ||||||||
Devoluciones | event_id_t El ID del evento si el evento se escribió en el registro, 0 en caso contrario. |
Gestión de registros
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Constructor LoggingManagement .
Inicialice LoggingManagement con una matriz de LogStorageResources . La matriz debe proporcionar un recurso para cada nivel de importancia válido, los elementos de la matriz deben tener un valor numérico creciente de importancia (y una 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 |
|
Gestión de registros
LoggingManagement( void )
Constructor predeterminado de LoggingManagement .
Se proporciona principalmente para hacer feliz al compilador.
Detalles | |
---|---|
Devoluciones |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Establezca el indicador mShutdownInProgress en 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 externamente.
Registre una devolución de llamada del formulario FetchExternalEventsFunct . Esta API requiere que la plataforma conozca la cantidad de eventos en el registro. El funcionamiento interno también requiere que este número sea constante. Dado que esta API no permite que la plataforma registre ID de eventos específicos, esto evita que la plataforma persista en 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 obtener ID de eventos dentro del rango cualquier cantidad de veces hasta que se cancele el registro.
Esta variante de la función debe utilizarse cuando el proveedor externo desea ser notificado tanto cuando los eventos se han entregado a un suscriptor como si el objeto de eventos externos es desalojado.
Cuando se entregan los eventos, se notifica al proveedor externo sobre eso junto con el ID de nodo del destinatario y el ID del último evento entregado a ese destinatario. Tenga en cuenta que el proveedor externo puede ser notificado varias veces para el mismo ID de evento. No hay restricciones específicas para el controlador, en particular, el controlador puede anular el registro de los ID de eventos externos.
Si el objeto de eventos externos se expulsa de los búferes de registro, se notifica al proveedor externo junto con una copia del objeto de eventos externos.
El puntero a la estructura ExternalEvents será NULL en caso de falla; de lo contrario, se completará con los ID de evento de inicio y finalización asignados a la devolución de llamada. Este puntero debe usarse para anular el registro del conjunto de eventos.
Consulte la documentación de FetchExternalEventsFunct para obtener detalles sobre lo que debe implementar la devolución de llamada.
Detalles | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
| ||||||||||||
Valores devueltos |
|
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 externamente.
Registre una devolución de llamada del formulario FetchExternalEventsFunct . Esta API requiere que la plataforma conozca la cantidad de eventos en el registro. El funcionamiento interno también requiere que este número sea constante. Dado que esta API no permite que la plataforma registre ID de eventos específicos, esto evita que la plataforma persista en 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 obtener ID 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 ser notificado cuando los eventos se han entregado a un suscriptor, pero no cuando el objeto de eventos externos es desalojado. Cuando se entregan los eventos, se notifica al proveedor externo sobre eso junto con el ID de nodo del destinatario y el ID del último evento entregado a ese destinatario. Tenga en cuenta que el proveedor externo puede ser notificado varias veces para el mismo ID de evento. No hay restricciones específicas para el controlador, en particular, el controlador puede anular el registro de los ID de eventos externos.
El puntero a la estructura ExternalEvents será NULL en caso de falla; de lo contrario, se completará con los ID de eventos de inicio y finalización asignados a la devolución de llamada. Este puntero debe usarse para anular el registro del conjunto de eventos.
Consulte la documentación de FetchExternalEventsFunct para obtener detalles sobre lo que debe implementar la devolución de llamada.
Detalles | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
| ||||||||||
Valores devueltos |
|
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 externamente.
Registre una devolución de llamada del formulario FetchExternalEventsFunct . Esta API requiere que la plataforma conozca la cantidad de eventos en el registro. El funcionamiento interno también requiere que este número sea constante. Dado que esta API no permite que la plataforma registre ID de eventos específicos, esto evita que la plataforma persista en 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 obtener ID de eventos dentro del rango cualquier cantidad de veces hasta que se cancele el registro.
Esta variante de la función debe utilizarse cuando el proveedor externo desee una notificación ni cuando se hayan entregado los eventos externos ni cuando se haya desalojado el objeto de eventos externos.
El puntero a la estructura ExternalEvents será NULL en caso de falla; de lo contrario, se completará con los ID de evento de inicio y finalización asignados a la devolución de llamada. Este puntero debe usarse para anular el registro del conjunto de eventos.
Consulte la documentación de FetchExternalEventsFunct para obtener detalles sobre lo que debe implementar la devolución de llamada.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
| ||||||||
Valores devueltos |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Programe una tarea de descarga de registros.
La función decide si programar un proceso de descarga de tareas y, de ser así, programa LoggingFlushHandler
para que se ejecute de forma asíncrona en el hilo Weave.
La decisión de programar una descarga 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 aún no sincronizados con los consumidores de eventos
si ya hay un evento de solicitud de descarga de solicitud pendiente.
La solicitud explícita para programar una descarga se pasa a través de un parámetro de entrada.
El vaciado automático suele programarse cuando los búferes de eventos contienen datos suficientes para merecer el inicio de una nueva descarga. También se pueden tener en cuenta factores desencadenantes adicionales, como el tiempo mínimo y máximo entre descargas, según la estrategia de descarga.
El estado pendiente del registro de eventos se indica mediante la variable mUploadRequested
. Dado que esta función puede ser mUploadRequested
por varios subprocesos, mUploadRequested
debe leerse y configurarse de forma atómica, para evitar programar un LoggingFlushHandler
redundante antes de que se LoggingFlushHandler
la notificación.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
| ||||
Valores devueltos |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Serialice 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á destinado a ser utilizado por dispositivos que no retienen RAM mientras duermen, lo que les permite persistir los eventos antes de irse a dormir y así evitar la pérdida de eventos.
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Configure el WeaveExchangeManager que se utilizará con este subsistema de registro.
En algunas plataformas, es posible que esto deba suceder por separado de CreateLoggingManagement () anterior.
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 |
|
Acelerador
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 anular el registro de un conjunto de eventos almacenados externamente.
Anular 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 ID de eventos a los suscriptores.
La intención es que una función sirva a un conjunto de eventos a la vez. Si es necesario registrar un nuevo conjunto de eventos con la misma función, primero se debe anular el registro de la devolución de llamada y luego se debe registrar nuevamente. Esto significa que ya no se puede recuperar el conjunto original de eventos.
Esta función tiene éxito incondicionalmente. Si la devolución de llamada nunca se registró o ya no se registró, no es posible.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
Desacelerador
void UnthrottleLogger( void )
UnthrottleLogger restaura 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 )
Cree el objeto LoggingManagement e inicialice el subsistema de gestión de registro con los recursos proporcionados.
Inicialice LoggingManagement con una matriz de LogStorageResources . La matriz debe proporcionar un recurso para cada nivel de importancia válido, los elementos de la matriz deben tener un valor numérico creciente de importancia (y una 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 |
|
Destruir Registro Gestión
void DestroyLoggingManagement( void )
Realice cualquier acción que necesitemos al apagar.
Obtener Instancia
LoggingManagement & GetInstance( void )