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 destrutores |
|
---|---|
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 os dados do evento de acordo com o protocolo de registro de eventos.
|
CancelShutdownInProgress(void)
|
void
Define a sinalização mShutdownInProgress como falso.
|
CheckShouldRunWDM(void)
|
bool
Decida se você quer descarregar os 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 determinado.
|
GetBytesWritten(void) const
|
uint32_t
Mostra o número total de bytes gravados (em todas as importâncias dos eventos) nesse 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)
|
Busque o primeiro ID de evento armazenado no momento para um nível de importância específico.
|
GetLastEventID(ImportanceType inImportance)
|
Busque o ID de venda mais recente para 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)
|
Carrega um evento Weave persistido anteriormente.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Registre um evento usando um callback com opções.
|
MarkShutdownInProgress(void)
|
void
Define 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)
|
Agendar uma tarefa de descarga de registro.
|
SerializeEvents(TLVWriter & writer)
|
Serializar os eventos do Weave de todos os tipos de importância.
|
SetBDXUploader(LogBDXUpload *inUploader)
|
void
|
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
|
Defina o WeaveExchangeManager a ser usado com esse 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
O 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
O UnsustainabilityLogger restaura o nível de registro efetivo para o nível 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
Realize as ações necessárias quando o dispositivo for desligado.
|
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 os dados do evento de acordo com o protocolo de registro de eventos.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
Define a sinalização mShutdownInProgress como falso.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Decida se você quer descarregar os 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 do que esse número de bytes desde a última vez que uma notificação WDM foi enviada, a função vai indicar que é hora de acionar o NotificationEngine.
Detalhes | |||||
---|---|---|---|---|---|
Valores de retorno |
|
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 determinado.
Considerando nl::Weave::TLV::TLVWriter, um tipo de importância e um ID de evento, a função buscará eventos de importância especificada desde o evento em questão. A função vai continuar buscando eventos até ficar sem espaço em nl::Weave::TLV::TLVWriter ou no registro. A função encerrará a gravação de eventos no limite de evento.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Mostra o número total de bytes gravados (em todas as importâncias dos eventos) nesse 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 )
Busque o primeiro ID de evento armazenado no momento para um nível de importância específico.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
event_id_t Primeiro, o ID do evento armazenado para essa importância de evento
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Busque o ID de venda mais recente para um nível de importância específico.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retorna |
event_id_t ID do evento vendido mais recentemente para a importância desse evento
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
Verifique a sinalização mShutdownInProgress.
IsValid
bool IsValid( void )
IsValid retorna se a instância LoggingManagement é válida.
Detalhes | |||||
---|---|---|---|---|---|
Valores de retorno |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Carrega um evento Weave persistido anteriormente.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Registre um evento usando um callback com opções.
A função registra um evento representado como EventWriterFunct e um contexto appData
específico do app. A função grava os metadados do evento e chama inEventWriter
com uma referência nl::Weave::TLV::TLVWriter e um contexto inAppData
, para que o código do usuário emita 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 eventos são serializados diretamente no buffer de destino. Os dados do evento PRECISAM conter tags de contexto para serem interpretadas dentro do esquema identificado por inProfileID
e inEventType
. A tag do primeiro elemento será ignorada; 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 na LoggingConfiguration. Se a importância do evento não atingir o limite atual, ela será descartada e a função vai retornar um 0
como o ID do evento resultante.
Essa 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 a hora atual no ponto da chamada
- seção "raiz" da fonte de eventos (origem do evento e ID da característica). Se for NULL, o padrão será o dispositivo atual. O evento é marcado como relacionado ao dispositivo que está fazendo a chamada.
- um ID de evento relacionado para agrupar IDs de evento. Quando o ID do 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.
|
LoggingManagement
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Construtor LoggingManagement.
Inicialize LoggingManagement com uma matriz de LogStorageResources. A matriz precisa fornecer um recurso para cada nível de importância válido, e os elementos dela precisam estar em um valor numérico de importância crescente (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 |
|
LoggingManagement
LoggingManagement( void )
Construtor padrão LoggingManagement.
Fornecido principalmente para agradar o compilador.
Detalhes | |
---|---|
Retorna |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Define a sinalização 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 callback no formato 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, isso impede que a plataforma mantenha o armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O retorno de chamada será chamado sempre que o assinante tentar buscar IDs de evento no intervalo qualquer número de vezes até que o registro 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 são entregues, o provedor externo é notificado sobre isso com o ID do nó do destinatário e o ID do último evento entregue a esse destinatário. O provedor externo pode ser notificado várias vezes sobre o mesmo ID de evento. Não há restrições específicas sobre o manipulador. Em especial, ele pode cancelar o registro de IDs de evento externos.
Se o objeto de eventos externos for removido dos buffers de registro, o provedor externo será notificado com uma cópia do objeto de eventos externos.
O ponteiro para o struct ExternalEvents será NULL em caso de falha. Caso contrário, ele será preenchido com os IDs de evento inicial e final atribuídos ao callback. Esse ponteiro deve ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação de 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 no formato 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, isso impede que a plataforma mantenha o armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O retorno de chamada será chamado sempre que o assinante tentar buscar IDs de evento no intervalo qualquer número de vezes até que o registro 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 são entregues, o provedor externo é notificado sobre isso com o ID do nó do destinatário e o ID do último evento entregue a esse destinatário. O provedor externo pode ser notificado várias vezes sobre o mesmo ID de evento. Não há restrições específicas sobre o manipulador. Em especial, ele pode cancelar o registro de IDs de evento externos.
O ponteiro para o struct ExternalEvents será NULL em caso de falha. Caso contrário, ele será preenchido com os IDs de evento inicial e final atribuídos ao callback. Esse ponteiro deve ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação de 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 no formato 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, isso impede que a plataforma mantenha o armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O retorno de chamada será chamado sempre que o assinante tentar buscar IDs de evento no intervalo qualquer número de vezes até que o registro seja cancelado.
Essa variante da função deve ser usada quando o provedor externo quiser uma notificação, nem quando os eventos externos forem entregues, nem quando o objeto de eventos externos for removido.
O ponteiro para o struct ExternalEvents será NULL em caso de falha. Caso contrário, ele será preenchido com os IDs de evento inicial e final atribuídos ao callback. Esse ponteiro deve ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação de FetchExternalEventsFunct para ver detalhes sobre o que o callback precisa implementar.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Agendar uma tarefa de descarga de registro.
A função decide se programa um processo de descarga de tarefas e, em caso afirmativo, programa a LoggingFlushHandler
para ser executada de maneira assíncrona na linha de execução do Weave.
A decisão de agendar uma limpeza depende de três fatores:
uma solicitação explícita para limpar o buffer
O estado do buffer de evento e a quantidade de dados ainda não sincronizados com os consumidores do evento
se já existe um evento de solicitação de remoção de solicitação pendente.
A solicitação explícita para programar uma limpeza é transmitida por um parâmetro de entrada.
A limpeza automática normalmente é agendada quando os buffers de evento contêm dados suficientes para merecer o início de uma nova descarga. Outros gatilhos, como tempo mínimo e máximo entre as descargas, 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, mUploadRequested
precisa ser lido e definido atomicamente para evitar a programação de um LoggingFlushHandler
redundante antes do envio da notificação.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Serializar os eventos do Weave de todos os tipos de importância.
Serializa os eventos em WeaveCircularTLVBuffer e os estados associados no buffer fornecido.
Este método é destinado a dispositivos que não retêm RAM durante o sono, permitindo que eles persistam eventos antes de serem colocados em suspensão e, assim, evitem a perda de eventos.
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Defina o WeaveExchangeManager a ser usado com esse 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 )
O 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 callback vai impedir que LoggingManagement chame o callback para um conjunto de eventos. LoggingManagement não enviará mais esses IDs de evento para os assinantes.
A intenção é que uma função exiba um conjunto de eventos por vez. Se for preciso registrar um novo conjunto de eventos usando a mesma função, primeiro o callback terá que cancelar o registro e depois registrar novamente. Isso significa que o conjunto original de eventos não pode mais ser buscado.
Essa função tem sucesso incondicional. Se o callback nunca foi registrado ou teve o registro cancelado, é um ambiente autônomo.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
UnthrottleLogger
void UnthrottleLogger( void )
O UnsustainabilityLogger restaura o nível de registro efetivo para o nível 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 LoggingManagement com uma matriz de LogStorageResources. A matriz precisa fornecer um recurso para cada nível de importância válido, e os elementos dela precisam estar em um valor numérico de importância crescente (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 )
Realize as ações necessárias quando o dispositivo for desligado.