nl :: Tecer:: Perfis :: DataManagement_Current :: LoggingManagement
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Uma classe para gerenciar os logs de eventos na memória.
Resumo
Construtores e Destruidores | |
---|---|
LoggingManagement ( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources) | |
LoggingManagement (void) Construtor padrão LoggingManagement . |
Funções públicas | |
---|---|
BlitEvent ( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions) | Função auxiliar para escrever cabeçalhos de eventos e dados de acordo com o protocolo de registro de eventos. |
CancelShutdownInProgress (void) | void Defina o sinalizador mShutdownInProgress como falso. |
CheckShouldRunWDM (void) | bool Decida se deseja descarregar eventos com base no número de bytes em buffers de eventos não agendados para upload. |
FetchEventsSince (nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID) | Uma função para recuperar eventos de importância especificada desde um ID de evento especificado. |
GetBytesWritten (void) const | uint32_t Obtenha o número total de bytes gravados (em todas as importâncias do evento) neste log desde sua instanciação. |
GetEventReader (nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance) | Um método auxiliar útil para examinar os buffers de log na memória. |
GetFirstEventID ( ImportanceType inImportance) | Busque o primeiro ID de evento atualmente armazenado para um nível de importância particular. |
GetLastEventID ( ImportanceType inImportance) | Busque o ID vendido mais recentemente para um determinado nível de importância. |
IsShutdownInProgress (void) | bool Verifique o sinalizador mShutdownInProgress. |
IsValid (void) | bool IsValid retorna se a instância LoggingManagement é válida. |
LoadEvents (TLVReader & reader) | Carregue o evento Weave persistido anteriormente. |
LogEvent (const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions) | Registre um evento por meio de um retorno de chamada, com opções. |
MarkShutdownInProgress (void) | void Defina o sinalizador mShutdownInProgress como verdadeiro. |
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) | A API pública para registrar um conjunto de eventos armazenados externamente. |
RegisterEventCallbackForImportance ( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID) | A API pública para registrar um conjunto de eventos armazenados externamente. |
RegisterEventCallbackForImportance ( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID) | A API pública para registrar um conjunto de eventos armazenados externamente. |
ScheduleFlushIfNeeded (bool inFlushRequested) | Agende uma tarefa de descarregamento de log. |
SerializeEvents (TLVWriter & writer) | Serialize os eventos Weave de todos os tipos de importância. |
SetBDXUploader ( LogBDXUpload *inUploader) | void |
SetExchangeManager ( nl::Weave::WeaveExchangeManager *inMgr) | Defina o WeaveExchangeManager a ser usado com este subsistema de registro. |
SetLoggingEndpoint ( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition) | |
SkipEvent ( EventLoadOutContext *aContext) | void Função auxiliar para pular a gravação de um evento correspondente a um id de evento alocado. |
ThrottleLogger (void) | void ThrottleLogger eleva o nível de registro efetivo para o nível de produção. |
UnregisterEventCallbackForImportance ( ImportanceType inImportance, event_id_t inEventID) | void A API pública para cancelar o registro de um conjunto de eventos armazenados externamente. |
UnthrottleLogger (void) | void UnthrottleLogger restaura o nível de log efetivo para o nível de log configurado. |
Funções estáticas públicas | |
---|---|
CreateLoggingManagement ( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources) | void Crie o objeto LoggingManagement e inicialize o subsistema de gerenciamento de registro com os recursos fornecidos. |
DestroyLoggingManagement (void) | void Execute todas as ações necessárias no desligamento. |
GetInstance (void) |
Funções públicas
BlitEvent
WEAVE_ERROR BlitEvent( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Função auxiliar para escrever cabeçalhos de eventos e dados de acordo com o protocolo de registro de eventos.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
Defina o sinalizador mShutdownInProgress como falso.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Decida se deseja descarregar eventos com base no número de bytes em buffers de eventos não agendados para upload.
O comportamento da função é controlado por meio da constante WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD . Se o sistema gravou mais do que esse número de bytes desde a última vez que uma Notificação WDM foi enviada, a função indicará que é hora de acionar o NotificationEngine .
Detalhes | |||||
---|---|---|---|---|---|
Valores Retornados |
|
FetchEventsSince
WEAVE_ERROR FetchEventsSince( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID )
Uma função para recuperar eventos de importância especificada desde um ID de evento especificado.
Dado umnl :: Weave :: TLV :: TLVWriter , um tipo de importância e um ID de evento, a função irá buscar eventos de importância especificada desde o evento especificado. A função continuará obtendo eventos até quefique sem espaço nonl :: Weave :: TLV :: TLVWriter ou no log. A função encerrará a gravação do evento no limite do evento.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||
Valores Retornados |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Obtenha o número total de bytes gravados (em todas as importâncias do evento) neste log desde sua instanciação.
Detalhes | |
---|---|
Devoluções | O número de bytes gravados no log. |
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Um método auxiliar útil para examinar os buffers de log na memória.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Devoluções | WEAVE_NO_ERROR Incondicionalmente. |
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Busque o primeiro ID de evento atualmente armazenado para um nível de importância particular.
Detalhes | |||
---|---|---|---|
Parâmetros |
| ||
Devoluções | event_id_t Primeiro ID de evento armazenado atualmente para a importância desse evento |
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Busque o ID vendido mais recentemente para um determinado nível de importância.
Detalhes | |||
---|---|---|---|
Parâmetros |
| ||
Devoluções | event_id_t ID de evento vendido mais recentemente para a importância desse evento |
IsShutdownInProgress
bool IsShutdownInProgress( void )
Verifique o sinalizador mShutdownInProgress.
É válido
bool IsValid( void )
IsValid retorna se a instância LoggingManagement é válida.
Detalhes | |||||
---|---|---|---|---|---|
Valores Retornados |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Carregue o evento Weave persistido anteriormente.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Registre um evento por meio de um retorno de chamada, com opções.
A função registra um evento representado como um EventWriterFunct e um contexto appData
específico do aplicativo. A função grava os metadados do evento e chama o inEventWriter
com uma referêncianl :: Weave :: TLV :: TLVWriter e contexto inAppData
para que o código do usuário possa emitir os dados do evento diretamente no log de eventos. Essa forma de registro de eventos minimiza o consumo de memória, pois os dados do evento são serializados diretamente no buffer de destino. Os dados do evento DEVEM conter tags de contexto a serem interpretados dentro do esquema identificado por inProfileID
e inEventType
. A tag do primeiro elemento será ignorada; o sistema de registro de eventos irá substituí-lo pela tag eventData.
O evento é registrado se a importância do esquema exceder o limite de registro especificado em LoggingConfiguration . Se a importância do evento não atingir o limite atual, ele será descartado e a função retornará 0
como o ID do evento resultante.
Esta variante da invocação permite que o chamador defina qualquer combinação de EventOptions
:
- timestamp, quando 0 padroniza para a hora atual no ponto da chamada,
- seção "raiz" da fonte do evento (fonte do evento e ID do trait); se NULL, o padrão é o dispositivo atual. o evento é marcado como relacionado ao dispositivo que está fazendo a chamada,
- um ID de evento relacionado para agrupar IDs de eventos; quando o ID do evento relacionado é 0, o evento é marcado como não relacionado a nenhum outro evento,
- urgência; por padrão, não urgente.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||
Devoluções | event_id_t O ID do evento se o evento foi gravado no log, 0 caso contrário. |
LoggingManagement
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Construtor LoggingManagement .
Inicialize o LoggingManagement com uma matriz de LogStorageResources . A matriz deve fornecer um recurso para cada nível de importância válido, os elementos da matriz devem estar em valor numérico crescente de importância (e em importância decrescente); o primeiro elemento da matriz corresponde aos recursos alocados para os eventos mais críticos e o último elemento corresponde aos eventos menos importantes.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
LoggingManagement
LoggingManagement( void )
Construtor padrão LoggingManagement .
Fornecido principalmente para deixar o compilador feliz.
Detalhes | |
---|---|
Devoluções |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Defina o sinalizador mShutdownInProgress como verdadeiro.
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 )
A API pública para registrar um conjunto de eventos armazenados externamente.
Registre um retorno de chamada do formulário FetchExternalEventsFunct . Esta API requer que a plataforma saiba o número de eventos no registro. O funcionamento interno também exige que esse número seja constante. Como essa API não permite que a plataforma registre IDs de eventos específicos, isso impede que a plataforma persista no armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O retorno de chamada será chamado sempre que um assinante tentar buscar IDs de evento dentro do intervalo qualquer número de vezes até que seja cancelado.
Essa variante da função deve ser usada quando o provedor externo deseja ser notificado quando os eventos foram entregues a um assinante e se o objeto de eventos externos foi removido.
Quando os eventos são entregues, o provedor externo é notificado sobre isso, juntamente com o ID do nó do destinatário e o id do último evento entregue a esse destinatário. Observe que o provedor externo pode ser notificado várias vezes para o mesmo ID de evento. Não há restrições específicas ao manipulador, em particular, o manipulador pode cancelar o registro dos IDs de eventos externos.
Se o objeto de eventos externos for removido dos buffers de log, o provedor externo será notificado junto com uma cópia do objeto de eventos externos.
O ponteiro para a estrutura ExternalEvents será NULL em caso de falha, caso contrário, será preenchido com IDs de evento inicial e final atribuídos ao retorno de chamada. Este ponteiro deve ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação de FetchExternalEventsFunct para obter detalhes sobre o que o retorno de chamada deve implementar.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||||
Valores Retornados |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
A API pública para registrar um conjunto de eventos armazenados externamente.
Registre um retorno de chamada do formulário FetchExternalEventsFunct . Esta API requer que a plataforma saiba o número de eventos no registro. O funcionamento interno também exige que esse número seja constante. Como essa API não permite que a plataforma registre IDs de eventos específicos, isso impede que a plataforma persista no armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O retorno de chamada será chamado sempre que um assinante tentar buscar IDs de evento dentro do intervalo qualquer número de vezes até que seja cancelado.
Essa variante da função deve ser usada quando o provedor externo deseja ser notificado quando os eventos foram entregues a um assinante, mas não quando o objeto de eventos externos é removido. Quando os eventos são entregues, o provedor externo é notificado sobre isso, juntamente com o ID do nó do destinatário e o id do último evento entregue a esse destinatário. Observe que o provedor externo pode ser notificado várias vezes para o mesmo ID de evento. Não há restrições específicas no manipulador, em particular, o manipulador pode cancelar o registro dos IDs de eventos externos.
O ponteiro para a estrutura ExternalEvents será NULL em caso de falha, caso contrário, será preenchido com IDs de evento de início e término atribuídos ao retorno de chamada. Este ponteiro deve ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação de FetchExternalEventsFunct para obter detalhes sobre o que o retorno de chamada deve implementar.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||||
Valores Retornados |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
A API pública para registrar um conjunto de eventos armazenados externamente.
Registre um retorno de chamada do formulário FetchExternalEventsFunct . Esta API requer que a plataforma saiba o número de eventos no registro. O funcionamento interno também exige que esse número seja constante. Como essa API não permite que a plataforma registre IDs de eventos específicos, isso impede que a plataforma persista no armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O retorno de chamada será chamado sempre que um assinante tentar buscar IDs de evento dentro do intervalo qualquer número de vezes até que seja cancelado.
Essa variante da função deve ser usada quando o provedor externo deseja uma notificação, nem quando os eventos externos foram entregues nem quando o objeto de eventos externos é removido.
O ponteiro para a estrutura ExternalEvents será NULL em caso de falha, caso contrário, será preenchido com IDs de evento inicial e final atribuídos ao retorno de chamada. Este ponteiro deve ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação de FetchExternalEventsFunct para obter detalhes sobre o que o retorno de chamada deve implementar.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||
Valores Retornados |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Agende uma tarefa de descarregamento de log.
A função decide se deve agendar um processo de descarregamento de tarefa e, em caso afirmativo, agenda o LoggingFlushHandler
para ser executado de forma assíncrona no thread Weave.
A decisão de agendar uma descarga depende de três fatores:
uma solicitação explícita para limpar o buffer
o estado do buffer do evento e a quantidade de dados ainda não sincronizada com os consumidores do evento
se já existe um evento de solicitação de liberação de solicitação pendente.
A solicitação explícita para agendar uma liberação é passada por meio de um parâmetro de entrada.
A liberação automática normalmente é agendada quando os buffers de eventos contêm dados suficientes para merecer o início de um novo descarregamento. Gatilhos adicionais, como tempo mínimo e máximo entre os descarregamentos, também podem ser levados em consideração, dependendo da estratégia de descarregamento.
O estado pendente do log de eventos é indicado pela variável mUploadRequested
. Como essa função pode ser chamada por vários encadeamentos, mUploadRequested
deve ser lido e definido atomicamente, para evitar o agendamento de um LoggingFlushHandler
redundante antes do LoggingFlushHandler
da notificação.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Serialize os eventos Weave de todos os tipos de importância.
Serializa os eventos em WeaveCircularTLVBuffer e os estados associados no buffer fornecido.
Este método deve ser usado por dispositivos que não retêm RAM durante o hibernação, permitindo que persistam os eventos antes de adormecer e, assim, evitar a perda de eventos
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Defina o WeaveExchangeManager a ser usado com este subsistema de registro.
Em algumas plataformas, isso pode precisar acontecer separadamente do CreateLoggingManagement () acima.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
SkipEvent
void SkipEvent( EventLoadOutContext *aContext )
Função auxiliar para pular a gravação de um evento correspondente a um id de evento alocado.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
ThrottleLogger
void ThrottleLogger( void )
ThrottleLogger eleva o nível de registro efetivo para o nível de produção.
UnregisterEventCallbackForImportance
void UnregisterEventCallbackForImportance( ImportanceType inImportance, event_id_t inEventID )
A API pública para cancelar o registro de um conjunto de eventos armazenados externamente.
Cancelar o registro do retorno de chamada impedirá que o LoggingManagement chame o retorno de chamada para um conjunto de eventos. O LoggingManagement não enviará mais esses IDs de eventos aos assinantes.
A intenção é que uma função atenda a um conjunto de eventos por vez. Se um novo conjunto de eventos precisar ser registrado usando a mesma função, o retorno de chamada deve primeiro ser cancelado e, em seguida, registrado novamente. Isso significa que o conjunto original de eventos não pode mais ser obtido.
Esta função é bem-sucedida incondicionalmente. Se o retorno de chamada nunca foi registrado ou já foi cancelado, é um ambiente autônomo.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
UnthrottleLogger
void UnthrottleLogger( void )
UnthrottleLogger restaura o nível de log efetivo para o nível de log configurado.
Funções estáticas públicas
CreateLoggingManagement
void CreateLoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Crie o objeto LoggingManagement e inicialize o subsistema de gerenciamento de registro com os recursos fornecidos.
Inicialize o LoggingManagement com uma matriz de LogStorageResources . A matriz deve fornecer um recurso para cada nível de importância válido, os elementos da matriz devem estar em valor numérico crescente de importância (e em importância decrescente); o primeiro elemento na matriz corresponde aos recursos alocados para os eventos mais críticos e o último elemento corresponde aos eventos menos importantes.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
DestroyLoggingManagement
void DestroyLoggingManagement( void )
Execute todas as ações necessárias no desligamento.
GetInstance
LoggingManagement & GetInstance( void )