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 cabeçalho e dados do evento de acordo com o protocolo de geração de registros de eventos.
|
CancelShutdownInProgress(void)
|
void
A flag mShutdownInProgress foi definida como falsa.
|
CheckShouldRunWDM(void)
|
bool
Decida se quer descarregar eventos com base no número de bytes em 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
Encontre o número total de bytes gravados (em todas as importâncias de evento) 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)
|
Busque o primeiro ID de evento atualmente armazenado para um nível de importância específico.
|
GetLastEventID(ImportanceType inImportance)
|
Busca o ID do vendedor 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 o evento do Weave mantido anteriormente.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Registra um evento usando um callback, com opções.
|
MarkShutdownInProgress(void)
|
void
Defina a flag mShutdownInProgress como "true".
|
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)
|
Serialize 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 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
O UnboundLogger 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 registros com os recursos fornecidos.
|
DestroyLoggingManagement(void)
|
void
Realize 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 gravar cabeçalho e dados do evento de acordo com o protocolo de geração de registros de eventos.
Detalhes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
A flag mShutdownInProgress foi definida como falsa.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Decida se quer descarregar eventos com base no número de bytes em 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 o último envio de uma notificação WDM, 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 especificado.
Com um 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 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 do evento no limite do evento.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Encontre o número total de bytes gravados (em todas as importâncias de evento) neste registro desde a instanciação.
Detalhes | |
---|---|
Retornos |
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 |
|
||||
Retornos |
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 específico.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retornos |
event_id_t Primeiro o ID do evento armazenou para a importância desse evento
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Busca o ID do vendedor mais recente para um nível de importância específico.
Detalhes | |||
---|---|---|---|
Parâmetros |
|
||
Retornos |
event_id_t do ID do evento de venda mais recente referente à importância do 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 o evento do Weave mantido anteriormente.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Registra 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 inEventWriter
com uma referência nl::Weave::TLV::TLVWriter e contexto inAppData
para que o código do usuário possa emitir os dados do evento diretamente para o log de eventos. Essa forma de log de eventos minimiza o consumo de memória, uma vez 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 no esquema identificado por inProfileID
e inEventType
. A tag do primeiro elemento será ignorada. o sistema de geração de registros de eventos a substituirá pela tag eventData.
O evento é registrado quando a importância do esquema excede o limite de geração de registros especificado em LoggingConfiguration. Se a importância do evento não atingir o limite atual, ele será descartado 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 tem como padrão a hora atual no ponto da chamada,
- “raiz” Seção da origem do evento (origem do evento e ID da característica). Se NULL, o padrão será o dispositivo atual. o evento será 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, ele é marcado como não relacionado a outros eventos.
- urgência não urgentes por padrão.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Retornos |
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 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 |
|
LoggingManagement
LoggingManagement( void )
Construtor padrão LoggingManagement.
Fornecido principalmente para deixar o compilador satisfeito.
Detalhes | |
---|---|
Retornos |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Defina a flag mShutdownInProgress como "true".
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 do 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 evita que ela persista no armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O callback será chamado sempre que um assinante tentar buscar IDs de evento no intervalo quantas vezes quiser até o registro ser 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, juntamente com o ID de 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 no manipulador, em particular, o manipulador 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 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 eventos de início e término 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 do 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 evita que ela persista no armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O callback será chamado sempre que um assinante tentar buscar IDs de evento no intervalo quantas vezes quiser até o registro ser cancelado.
Esta 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, juntamente com o ID de 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 no manipulador, em particular, o manipulador 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 IDs de eventos de início e término atribuídos ao callback. Esse ponteiro deve ser usado para cancelar o registro do conjunto de eventos.
Consulte a documentação de FetchExternalEventsFunct para 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 do 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 evita que ela persista no armazenamento de eventos (pelo menos com IDs de eventos exclusivos).
O callback será chamado sempre que um assinante tentar buscar IDs de evento no intervalo quantas vezes quiser até o registro ser cancelado.
Essa variante da função deve ser usada quando o provedor externo não quiser uma notificação quando os eventos externos forem entregues nem 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 IDs de eventos de início e término 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 )
Programe uma tarefa de descarregamento de registros.
A função decide se vai programar um processo de descarregamento de tarefas e, em caso afirmativo, programa o LoggingFlushHandler
para ser executado de forma 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 esvaziar o buffer
o estado do buffer de eventos e a quantidade de dados ainda não sincronizados com os consumidores do evento
se existe um evento de solicitação de liberação de solicitação pendente.
A solicitação explícita para agendar uma limpeza é transmitida por um parâmetro de entrada.
Normalmente, a limpeza automática é programada quando os buffers de evento contêm dados suficientes para justificar o início de um novo descarregamento. Acionadores adicionais, como o tempo mínimo e máximo entre os descarregamentos, também podem ser considerados, dependendo da estratégia de transferência.
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 lida e definida 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 )
Serialize 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 modo de suspensão, permitindo que mantenham eventos antes de entrarem no modo de 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 de 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 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 impede que LoggingManagement o chame para um conjunto de eventos. O LoggingManagement não enviará mais esses IDs de eventos para os assinantes.
A intenção é que uma função exiba um conjunto de eventos por vez. Se for necessário registrar um novo conjunto de eventos usando a mesma função, cancele o registro do callback antes de fazer o registro novamente. Isso significa que o conjunto original de eventos não pode mais ser buscado.
Esta função é bem-sucedida incondicionalmente. Se o callback nunca foi registrado ou já foi registrado, é um ambiente autônomo.
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
UnthrottleLogger
void UnthrottleLogger( void )
O UnboundLogger 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 registros com os recursos fornecidos.
Inicialize 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 )
Realize as ações necessárias no desligamento.