nl:: Weave:: Profiles:: 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)
Construtor LoggingManagement.
|
|
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 gravar o cabeçalho e dados de eventos de acordo com o protocolo de log de eventos.
|
CancelShutdownInProgress(void)
|
void
Defina a sinalização mShutdownInProgress como falso.
|
CheckShouldRunWDM(void)
|
bool
Decida se descarregar eventos com base no número de bytes nos buffers de evento não programados 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
Receber o número total de bytes gravados (em todas as importâncias de eventos) neste registro desde a instanciação.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Um método auxiliar útil para examinar os buffers de registro na memória.
|
GetFirstEventID(ImportanceType inImportance)
|
Buscar o primeiro ID de evento atualmente armazenado para um nível de importância específico.
|
GetLastEventID(ImportanceType inImportance)
|
Buscar o ID mais recente buscado em um nível de importância específico.
|
IsShutdownInProgress(void)
|
bool
Verifique a sinalização mShutdownInProgress.
|
IsValid(void)
|
bool
IsValid retorna se a instância LoggingManagement é válida.
|
LoadEvents(TLVReader & reader)
|
Carregue o evento Weave mantido anteriormente.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Registrar um evento usando um callback com opções
|
MarkShutdownInProgress(void)
|
void
Defina a sinalização 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)
|
Programe uma tarefa de descarregamento de registros.
|
SerializeEvents(TLVWriter & writer)
|
Serializa os eventos do Weave de todos os tipos de importância.
|
SetBDXUploader(LogBDXUpload *inUploader)
|
void
|
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
|
Defina o WeaveExchangeManager para ser usado com este subsistema de geração de registros.
|
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 código de evento alocado.
|
ThrottleLogger(void)
|
void
O ThrottleLogger eleva o nível de geração de registros 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
UnSomenteLogger restaura o nível de registro efetivo para o nível de registro 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 geração de registros com os recursos fornecidos.
|
DestroyLoggingManagement(void)
|
void
Realizar as ações necessárias após o encerramento.
|
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 gravar o cabeçalho e dados de eventos de acordo com o protocolo de log de eventos.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
Defina a sinalização mShutdownInProgress como falso.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Decida se descarregar eventos com base no número de bytes nos buffers de evento não programados para upload.
O comportamento da função é controlado pela constante WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD. Se o sistema tiver gravado mais que esse número de bytes desde a última vez em que uma Notificação WDM foi enviada, a função indicará que é hora de acionar o NotificationEngine.
Detalhes | |||||
---|---|---|---|---|---|
Valores de retorno |
|
FetchEvents Desde
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.
Com uma nl::Weave::TLV::TLVwriter, um tipo de importância e um código de evento, a função buscará eventos de importância especificada desde o evento especificado. A função continuará buscando eventos até ficar sem espaço no nl::Weave::TLV::TLVwriter ou no registro. A função encerrará a gravação de eventos no limite de eventos.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Receber o número total de bytes gravados (em todas as importâncias de eventos) neste registro desde a instanciação.
Detalhes | |
---|---|
Retorna |
O número de bytes gravados no registro.
|
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Um método auxiliar útil para examinar os buffers de registro na memória.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Retorna |
WEAVE_NO_ERROR incondicionalmente.
|
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Buscar o primeiro ID de evento atualmente armazenado para um nível de importância específico.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
event_id_t Primeira ID do evento armazenado para a importância do evento
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Buscar o ID mais recente buscado em um nível de importância específico.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
ID do evento reemitido mais recentemente para a importância do evento
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
Verifique a sinalização mShutdownInProgress.
Validade
bool IsValid( void )
IsValid retorna se a instância LoggingManagement é válida.
Detalhes | |||||
---|---|---|---|---|---|
Valores de retorno |
|
Eventos de carregamento
WEAVE_ERROR LoadEvents( TLVReader & reader )
Carregue o evento Weave mantido anteriormente.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Registrar um evento usando um callback com opções
A função registra um evento representado como um EventWriterFunct e um contexto appData
específico do app. A função grava os metadados do evento e chama a inEventWriter
com uma referência nl::Weave::TLV::TLVWriter e um contexto inAppData
para que o código do usuário possa emitir os dados do evento diretamente no log de eventos. Essa forma de log de eventos minimiza o consumo de memória, já que os dados de evento são serializados diretamente no buffer de destino. Os dados do evento PRECISAM conter tags de contexto que serão interpretadas no esquema identificado por inProfileID
e inEventType
. A tag do primeiro elemento será ignorada, e o sistema de log de eventos a substituirá pela tag eventData.
O evento será registrado se a importância do esquema exceder o limite de geração de registros especificado em LoggingConfiguration. Se a importância do evento não atingir o limite atual, ela será descartada e a função retornará um 0
como o ID do evento resultante.
Esta variante da invocação permite que o autor da chamada defina qualquer combinação de EventOptions
:
- carimbo de data/hora, quando 0 é o padrão para o horário atual no ponto da chamada,
- Seção "root" da fonte do evento (origem do evento e código da característica); se for NULL, o dispositivo será padronizado. 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 de evento relacionado é 0, o evento é marcado como não relacionado a outros eventos.
- urgência; por padrão, não urgente.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Retorna |
event_id_t: o ID do evento, se o evento tiver sido gravado no registro. Caso contrário, será 0.
|
Gerenciamento de registros
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Construtor LoggingManagement.
Inicialize o LoggingManagement com uma matriz de LogStorageResources. A matriz precisa fornecer um recurso para cada nível de importância válido. Os elementos da matriz precisam estar aumentando o valor numérico 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 |
|
Gerenciamento de registros
LoggingManagement( void )
Construtor padrão LoggingManagement.
Eles são fornecidos principalmente para deixar o compilador feliz.
Detalhes | |
---|---|
Retorna |
LoggingManagement (em inglês)
|
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Defina a sinalização mShutdownInProgress como verdadeiro.
NotificationsEventsEntregues
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 callback de formulário FetchExternalEventsFunct. Essa API exige 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, ela não pode manter o armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O callback será chamado sempre que um assinante tentar buscar IDs de eventos no intervalo quantas vezes for necessário para que o registro dele não seja cancelado.
Essa variante da função deve ser usada quando o provedor externo quiser ser notificado quando os eventos forem entregues a um assinante e se o objeto de eventos externos for removido.
Quando os eventos forem entregues, o provedor externo será notificado sobre isso junto com o código do nó do destinatário e o código do último evento entregue a esse destinatário. O provedor externo pode ser notificado várias vezes sobre o mesmo código de evento. Não há restrições específicas no manipulador, em particular, ele pode cancelar o registro de IDs de eventos externos.
Se o objeto de eventos externos for removido dos buffers de registro, 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 os IDs de evento de início e término atribuídos ao callback. Esse ponteiro precisa ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação do FetchExternalEventsFunct para ver detalhes sobre o que o callback precisa implementar.
Detalhes | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||||
Valores de retorno |
|
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 callback de formulário FetchExternalEventsFunct. Essa API exige 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, ela não pode manter o armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O callback será chamado sempre que um assinante tentar buscar IDs de eventos no intervalo quantas vezes for necessário para que o registro dele não seja cancelado.
Essa variante da função deve ser usada quando o provedor externo quiser ser notificado quando os eventos forem entregues a um assinante, mas não quando o objeto de eventos externos for removido. Quando os eventos forem entregues, o provedor externo será notificado sobre isso junto com o código do nó do destinatário e o código do último evento entregue a esse destinatário. O provedor externo pode ser notificado várias vezes sobre o mesmo código de evento. Não há restrições específicas no manipulador, em particular, ele pode cancelar o registro de IDs de eventos externos.
O ponteiro para a estrutura ExternalEvents será NULL em caso de falha. Caso contrário, será preenchido com os IDs de evento de início e término atribuídos ao callback. Esse ponteiro precisa ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação do FetchExternalEventsFunct para ver detalhes sobre o que o callback precisa implementar.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||||
Valores de retorno |
|
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 callback de formulário FetchExternalEventsFunct. Essa API exige 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, ela não pode manter o armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O callback será chamado sempre que um assinante tentar buscar IDs de eventos no intervalo quantas vezes for necessário para que o registro dele não seja cancelado.
Essa variante da função precisa ser usada quando o provedor externo quiser uma notificação quando os eventos externos forem entregues ou quando o objeto de eventos externos for removido.
O ponteiro para a estrutura ExternalEvents será NULL em caso de falha. Caso contrário, será preenchido com os IDs de evento de início e término atribuídos ao callback. Esse ponteiro precisa ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação do FetchExternalEventsFunct para ver detalhes sobre o que o callback precisa implementar.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Programe uma tarefa de descarregamento de registros.
A função decide se programa um processo de descarregamento de tarefas e, se sim, programa a LoggingFlushHandler
para ser executada de forma assíncrona na linha de execução do Weave.
A decisão de programar uma limpeza 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 há um evento de solicitação de limpeza pendente.
A solicitação explícita para programar uma limpeza é transmitida por meio de um parâmetro de entrada.
Em geral, a limpeza automática é programada quando os buffers de evento contêm dados suficientes para iniciar uma nova descarga. Acionadores adicionais, como tempo mínimo e máximo entre os downloads, também podem ser considerados dependendo da estratégia de descarga.
O estado pendente do log de eventos é indicado pela variável mUploadRequested
. Como essa função pode ser chamada por várias linhas de execução, o mUploadRequested
precisa ser lido e definido atomicamente, para evitar o agendamento de um LoggingFlushHandler
redundante antes do envio da notificação.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
SerializeEventos
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Serializa os eventos do Weave de todos os tipos de importância.
Serializa os eventos no WeaveCircularTLVBuffer e os estados associados no buffer fornecido.
Este método deve ser usado por dispositivos que não retêm RAM durante o sono, permitindo que persistam eventos antes de entrarem em modo de espera e, assim, evitam a perda de eventos.
SetBDXUploader.
void SetBDXUploader( LogBDXUpload *inUploader )
SetManagerManager.
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Defina o WeaveExchangeManager para ser usado com este subsistema de geração de registros.
Em algumas plataformas, isso pode acontecer separadamente de CreateLoggingManagement() acima.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
Pular evento
void SkipEvent( EventLoadOutContext *aContext )
Função auxiliar para pular a gravação de um evento correspondente a um código de evento alocado.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
ThrottleLogger
void ThrottleLogger( void )
O ThrottleLogger eleva o nível de geração de registros 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.
O cancelamento do registro do callback impedirá que o LoggingManagement chame o callback para um conjunto de eventos. O LoggingManagement não vai mais enviar esses IDs de evento para os assinantes.
A intenção é que uma função veicule um conjunto de eventos por vez. Se um novo conjunto de eventos precisar ser registrado usando a mesma função, o callback precisará ser cancelado e depois cancelado. Isso significa que não é mais possível buscar o conjunto original de eventos.
Essa função é bem-sucedida incondicionalmente. Se o retorno de chamada nunca tiver sido registrado ou já tiver sido cancelado, ele será um ambiente autônomo.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
UnSomenteImplementar
void UnthrottleLogger( void )
UnSomenteLogger restaura o nível de registro efetivo para o nível de registro 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 geração de registros com os recursos fornecidos.
Inicialize o LoggingManagement com uma matriz de LogStorageResources. A matriz precisa fornecer um recurso para cada nível de importância válido. Os elementos da matriz precisam estar aumentando o valor numérico 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 )
Realizar as ações necessárias após o encerramento.