нл:: Переплетение:: Профили:: DataManagement_Current:: Управление журналированием
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Класс для управления журналами событий в памяти.
Краткое содержание
Конструкторы и деструкторы | |
---|---|
LoggingManagement ( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources) Конструктор LoggingManagement . | |
LoggingManagement (void) Конструктор по умолчанию LoggingManagement . |
Общественные функции | |
---|---|
BlitEvent ( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions) | Вспомогательная функция для записи заголовка события и данных в соответствии с протоколом регистрации событий. |
CancelShutdownInProgress (void) | void Установите для флага mShutdownInProgress значение false. |
CheckShouldRunWDM (void) | bool Решите, следует ли выгружать события, исходя из количества байтов в буферах событий, незапланированных для загрузки. |
FetchEventsSince ( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID) | Функция для получения событий указанной важности, начиная с указанного идентификатора события. |
GetBytesWritten (void) const | uint32_t Получите общее количество байтов, записанных (по всем событиям важности) в этот журнал с момента его создания. |
GetEventReader ( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance) | Вспомогательный метод, полезный для проверки буферов журнала в памяти. |
GetFirstEventID ( ImportanceType inImportance) | Получите первый идентификатор события, сохраненный в данный момент для определенного уровня важности. |
GetLastEventID ( ImportanceType inImportance) | Получите последний проданный идентификатор для определенного уровня важности. |
IsShutdownInProgress (void) | bool Проверьте флаг mShutdownInProgress. |
IsValid (void) | bool IsValid возвращает информацию о том, действителен ли экземпляр LoggingManagement . |
LoadEvents ( TLVReader & reader) | Загрузите ранее сохраненное событие Weave. |
LogEvent (const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions) | Зарегистрируйте событие с помощью обратного вызова с опциями. |
MarkShutdownInProgress (void) | void Установите для флага mShutdownInProgress значение 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) | Публичный API для регистрации набора событий, хранящихся извне. |
RegisterEventCallbackForImportance ( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID) | Публичный API для регистрации набора событий, хранящихся извне. |
RegisterEventCallbackForImportance ( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID) | Публичный API для регистрации набора событий, хранящихся извне. |
ScheduleFlushIfNeeded (bool inFlushRequested) | Запланируйте задачу выгрузки журнала. |
SerializeEvents ( TLVWriter & writer) | Сериализуйте события Weave всех типов важности. |
SetBDXUploader ( LogBDXUpload *inUploader) | void |
SetExchangeManager ( nl::Weave::WeaveExchangeManager *inMgr) | Установите WeaveExchangeManager для использования с этой подсистемой журналирования. |
SetLoggingEndpoint ( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition) | |
SkipEvent ( EventLoadOutContext *aContext) | void Вспомогательная функция для пропуска записи события, соответствующего выделенному идентификатору события. |
ThrottleLogger (void) | void ThrottleLogger повышает эффективный уровень ведения журнала до уровня производства. |
UnregisterEventCallbackForImportance ( ImportanceType inImportance, event_id_t inEventID) | void Публичный API для отмены регистрации набора событий, хранящихся извне. |
UnthrottleLogger (void) | void UnthrottleLogger восстанавливает эффективный уровень ведения журнала до настроенного уровня ведения журнала. |
Публичные статические функции | |
---|---|
CreateLoggingManagement ( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources) | void Создайте объект LoggingManagement и инициализируйте подсистему управления журналированием с помощью предоставленных ресурсов. |
DestroyLoggingManagement (void) | void Выполните любые действия, которые нам нужны при выключении. |
GetInstance (void) |
Общественные функции
БлитЭвент
WEAVE_ERROR BlitEvent( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Вспомогательная функция для записи заголовка события и данных в соответствии с протоколом регистрации событий.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
|
ОтменаЗавершение работыВ процессе
void CancelShutdownInProgress( void )
Установите для флага mShutdownInProgress значение false.
ПроверитьСледует выполнитьWDM
bool CheckShouldRunWDM( void )
Решите, следует ли выгружать события, исходя из количества байтов в буферах событий, незапланированных для загрузки.
Поведение функции контролируется константой WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD . Если система записала больше этого количества байтов с момента последней отправки уведомления WDM, функция укажет, что пришло время запустить NotificationEngine .
Подробности | |||||
---|---|---|---|---|---|
Возвращаемые значения |
|
FetchEventsSince
WEAVE_ERROR FetchEventsSince( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID )
Функция для получения событий указанной важности, начиная с указанного идентификатора события.
Учитывая nl::Weave::TLV::TLVWriter , тип важности и идентификатор события, функция будет извлекать события указанной важности с момента указанного события. Функция будет продолжать получать события до тех пор, пока не закончится место в nl::Weave::TLV::TLVWriter или в журнале. Функция прекратит запись события на границе события.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Получите общее количество байтов, записанных (по всем событиям важности) в этот журнал с момента его создания.
Подробности | |
---|---|
Возврат | Количество байт, записанных в журнал. |
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Вспомогательный метод, полезный для проверки буферов журнала в памяти.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возврат | WEAVE_NO_ERROR Безусловно. |
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Получите первый идентификатор события, сохраненный в данный момент для определенного уровня важности.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | event_id_t Первый сохраненный в данный момент идентификатор события для этого события. |
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Получите последний проданный идентификатор для определенного уровня важности.
Подробности | |||
---|---|---|---|
Параметры |
| ||
Возврат | event_id_t идентификатор последнего проданного события для этого события |
IsShutdownInProgress
bool IsShutdownInProgress( void )
Проверьте флаг mShutdownInProgress.
Действителен
bool IsValid( void )
IsValid возвращает информацию о том, действителен ли экземпляр LoggingManagement .
Подробности | |||||
---|---|---|---|---|---|
Возвращаемые значения |
|
Загрузить события
WEAVE_ERROR LoadEvents( TLVReader & reader )
Загрузите ранее сохраненное событие Weave.
ЖурналСобытие
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Зарегистрируйте событие с помощью обратного вызова с опциями.
Функция регистрирует событие, представленное как EventWriterFunct , и контекст appData
, специфичный для приложения. Функция записывает метаданные события и вызывает inEventWriter
со ссылкой на nl::Weave::TLV::TLVWriter и контекстом inAppData
, чтобы пользовательский код мог отправлять данные о событии непосредственно в журнал событий. Эта форма регистрации событий минимизирует потребление памяти, поскольку данные о событиях сериализуются непосредственно в целевой буфер. Данные о событии ДОЛЖНЫ содержать теги контекста, которые будут интерпретироваться в схеме, идентифицируемой inProfileID
и inEventType
. Тег первого элемента будет игнорироваться; система регистрации событий заменит его тегом eventData.
Событие регистрируется, если важность схемы превышает порог регистрации, указанный в LoggingConfiguration . Если важность события не соответствует текущему порогу, оно отбрасывается, и функция возвращает 0
в качестве идентификатора результирующего события.
Этот вариант вызова позволяет вызывающей стороне установить любую комбинацию EventOptions
:
- временная метка, когда 0 по умолчанию соответствует текущему времени в момент вызова,
- «корневой» раздел источника событий (источник события и идентификатор признака); если NULL, по умолчанию используется текущее устройство. событие помечается как относящееся к устройству, с которого осуществляется вызов,
- связанный идентификатор события для группировки идентификаторов событий; когда идентификатор связанного события равен 0, событие помечается как не относящееся ни к каким другим событиям,
- срочность; по умолчанию несрочное.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возврат | event_id_t Идентификатор события, если событие было записано в журнал, в противном случае — 0. |
Управление журналированием
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Конструктор LoggingManagement .
Инициализируйте LoggingManagement с помощью массива LogStorageResources . Массив должен предоставлять ресурс для каждого допустимого уровня важности, элементы массива должны иметь возрастающее числовое значение важности (и уменьшающееся); первый элемент массива соответствует ресурсам, выделенным для наиболее критичных событий, а последний элемент соответствует наименее важным событиям.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
Управление журналированием
LoggingManagement( void )
Конструктор по умолчанию LoggingManagement .
Предоставлено в первую очередь для того, чтобы порадовать компилятор.
Подробности | |
---|---|
Возврат |
ОтметитьShutdownInProgress
void MarkShutdownInProgress( void )
Установите для флага mShutdownInProgress значение true.
УведомитьСобытияДоставлено
void NotifyEventsDelivered( ImportanceType inImportance, event_id_t inLastDeliveredEventID, uint64_t inRecipientNodeID )
РегистрацияEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, NotifyExternalEventsEvictedFunct inEvictedCallback, size_t inNumEvents, event_id_t *outLastEventID )
Публичный API для регистрации набора событий, хранящихся извне.
Зарегистрируйте обратный вызов формы FetchExternalEventsFunct . Этот API требует, чтобы платформа знала количество событий при регистрации. Внутренняя работа также требует, чтобы это число было постоянным. Поскольку этот API не позволяет платформе регистрировать определенные идентификаторы событий, это не позволяет платформе постоянно хранить события (по крайней мере, с уникальными идентификаторами событий).
Обратный вызов будет вызываться каждый раз, когда подписчик пытается получить идентификаторы событий в пределах диапазона любое количество раз, пока он не будет отменен регистрации.
Этот вариант функции следует использовать, когда внешний поставщик хочет получать уведомления как о доставке событий подписчику, так и об удалении объекта внешних событий.
Когда события доставляются, внешний поставщик уведомляется об этом вместе с идентификатором узла получателя и идентификатором последнего события, доставленного этому получателю. Обратите внимание, что внешний поставщик может быть уведомлен несколько раз об одном и том же идентификаторе события. Для обработчика не существует особых ограничений, в частности, обработчик может отменить регистрацию идентификаторов внешних событий.
Если объект внешних событий удаляется из буферов журнала, внешний поставщик уведомляется вместе с копией объекта внешних событий.
Указатель на структуру ExternalEvents в случае возникновения ошибки будет иметь значение NULL, в противном случае он будет заполнен идентификаторами начального и конечного событий, назначенными обратному вызову. Этот указатель следует использовать для отмены регистрации набора событий.
Подробную информацию о том, что должен реализовать обратный вызов, см. в документации по FetchExternalEventsFunct .
Подробности | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||||
Возвращаемые значения |
|
РегистрацияEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
Публичный API для регистрации набора событий, хранящихся извне.
Зарегистрируйте обратный вызов формы FetchExternalEventsFunct . Этот API требует, чтобы платформа знала количество событий при регистрации. Внутренняя работа также требует, чтобы это число было постоянным. Поскольку этот API не позволяет платформе регистрировать определенные идентификаторы событий, это не позволяет платформе постоянно хранить события (по крайней мере, с уникальными идентификаторами событий).
Обратный вызов будет вызываться каждый раз, когда подписчик пытается получить идентификаторы событий в пределах диапазона любое количество раз, пока он не будет отменен регистрации.
Этот вариант функции следует использовать, когда внешний поставщик хочет получать уведомления о доставке событий подписчику, но не при удалении объекта внешних событий. Когда события доставляются, внешний поставщик уведомляется об этом вместе с идентификатором узла получателя и идентификатором последнего события, доставленного этому получателю. Обратите внимание, что внешний поставщик может быть уведомлен несколько раз об одном и том же идентификаторе события. Для обработчика не существует особых ограничений, в частности, обработчик может отменить регистрацию идентификаторов внешних событий.
Указатель на структуру ExternalEvents в случае возникновения ошибки будет иметь значение NULL, в противном случае он будет заполнен идентификаторами начального и конечного событий, назначенными обратному вызову. Этот указатель следует использовать для отмены регистрации набора событий.
Подробную информацию о том, что должен реализовать обратный вызов, см. в документации по FetchExternalEventsFunct .
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
РегистрацияEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
Публичный API для регистрации набора событий, хранящихся извне.
Зарегистрируйте обратный вызов формы FetchExternalEventsFunct . Этот API требует, чтобы платформа знала количество событий при регистрации. Внутренняя работа также требует, чтобы это число было постоянным. Поскольку этот API не позволяет платформе регистрировать определенные идентификаторы событий, это не позволяет платформе постоянно хранить события (по крайней мере, с уникальными идентификаторами событий).
Обратный вызов будет вызываться каждый раз, когда подписчик пытается получить идентификаторы событий в пределах диапазона любое количество раз, пока он не будет отменен регистрации.
Этот вариант функции следует использовать, когда внешний поставщик желает получать уведомления ни о доставке внешних событий, ни о вытеснении объекта внешних событий.
Указатель на структуру ExternalEvents в случае возникновения ошибки будет иметь значение NULL, в противном случае он будет заполнен идентификаторами начального и конечного событий, назначенными обратному вызову. Этот указатель следует использовать для отмены регистрации набора событий.
Подробную информацию о том, что должен реализовать обратный вызов, см. в документации по FetchExternalEventsFunct .
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
РасписаниеFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Запланируйте задачу выгрузки журнала.
Функция решает, планировать ли процесс разгрузки задач, и если да, то она планирует асинхронный запуск LoggingFlushHandler
в потоке Weave.
Решение о планировании промывки зависит от трех факторов:
явный запрос на очистку буфера
состояние буфера событий и объем данных, еще не синхронизированных с потребителями событий
существует ли уже ожидающее событие запроса на очистку запроса.
Явный запрос на планирование сброса передается через входной параметр.
Автоматическая очистка обычно планируется, когда буферы событий содержат достаточно данных, чтобы начать новую выгрузку. Дополнительные триггеры, такие как минимальное и максимальное время между разгрузками, также могут учитываться в зависимости от стратегии разгрузки.
Ожидающее состояние журнала событий указывается переменной mUploadRequested
. Поскольку эта функция может вызываться несколькими потоками, mUploadRequested
необходимо читать и устанавливать атомарно, чтобы избежать планирования избыточного LoggingFlushHandler
до отправки уведомления.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
Сериализация событий
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Сериализуйте события Weave всех типов важности.
Сериализует события в WeaveCircularTLVBuffer и связанные состояния в предоставленный буфер.
Этот метод предназначен для использования устройствами, которые не сохраняют оперативную память во время сна, что позволяет им сохранять события перед переходом в режим сна и тем самым предотвращать потерю событий.
УстановитьBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Установите WeaveExchangeManager для использования с этой подсистемой журналирования.
На некоторых платформах это может потребоваться отдельно от CreateLoggingManagement() , описанного выше.
Подробности | |||
---|---|---|---|
Параметры |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
ПропуститьСобытие
void SkipEvent( EventLoadOutContext *aContext )
Вспомогательная функция для пропуска записи события, соответствующего выделенному идентификатору события.
Подробности | |||
---|---|---|---|
Параметры |
|
Дроссельный регистратор
void ThrottleLogger( void )
ThrottleLogger повышает эффективный уровень ведения журнала до уровня производства.
Отменить регистрациюEventCallbackForImportance
void UnregisterEventCallbackForImportance( ImportanceType inImportance, event_id_t inEventID )
Публичный API для отмены регистрации набора событий, хранящихся извне.
Отмена регистрации обратного вызова не позволит LoggingManagement вызывать обратный вызов для набора событий. LoggingManagement больше не будет отправлять эти идентификаторы событий подписчикам.
Цель состоит в том, чтобы одна функция обслуживала набор событий одновременно. Если необходимо зарегистрировать новый набор событий с использованием той же функции, обратный вызов сначала следует отменить, а затем зарегистрировать снова. Это означает, что исходный набор событий больше не может быть получен.
Эта функция выполняется безоговорочно. Если обратный вызов никогда не был зарегистрирован или уже не был зарегистрирован, он не работает.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
|
UnthrottleLogger
void UnthrottleLogger( void )
UnthrottleLogger восстанавливает эффективный уровень ведения журнала до настроенного уровня ведения журнала.
Публичные статические функции
CreateLoggingManagement
void CreateLoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Создайте объект LoggingManagement и инициализируйте подсистему управления журналированием с помощью предоставленных ресурсов.
Инициализируйте LoggingManagement с помощью массива LogStorageResources . Массив должен предоставлять ресурс для каждого допустимого уровня важности, элементы массива должны иметь возрастающее числовое значение важности (и уменьшающееся); первый элемент массива соответствует ресурсам, выделенным для наиболее критичных событий, а последний элемент соответствует наименее важным событиям.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
УничтожитьУправление ведением журнала
void DestroyLoggingManagement( void )
Выполните любые действия, которые нам нужны при выключении.
GetInstance
LoggingManagement & GetInstance( void )