nl :: Плетение :: Профили: DataManagement_Current :: Ведение журнала
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Класс для управления журналами событий в памяти.
Резюме
Конструкторы и деструкторы | |
---|---|
LoggingManagement ( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources) | |
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) |
Публичные функции
BlitEvent
WEAVE_ERROR BlitEvent( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Вспомогательная функция для записи заголовка события и данных в соответствии с протоколом регистрации событий.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
|
ОтменаShutdownInProgress
void CancelShutdownInProgress( void )
Установите для флага mShutdownInProgress значение false.
CheckShouldRunWDM
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 .
Подробности | |||||
---|---|---|---|---|---|
Возвращаемые значения |
|
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Зарегистрируйте событие с помощью обратного вызова с параметрами.
Функция регистрирует событие, представленное как EventWriterFunct и контекст appData
конкретного appData
. Функция записывает метаданные события и вызывает inEventWriter
со inEventWriter
nl :: Weave :: TLV :: TLVWriter и контекстом inAppData
чтобы пользовательский код мог передавать данные события непосредственно в журнал событий. Эта форма регистрации событий сводит к минимуму потребление памяти, поскольку данные событий сериализуются непосредственно в целевой буфер. Данные события ДОЛЖНЫ содержать теги контекста, которые должны интерпретироваться в схеме, идентифицированной inProfileID
и inEventType
. Тег первого элемента будет проигнорирован; система регистрации событий заменит его тегом eventData.
Событие регистрируется, если важность схемы превышает порог ведения журнала, указанный в LoggingConfiguration . Если важность события не соответствует текущему порогу, оно отбрасывается, и функция возвращает 0
в качестве результирующего идентификатора события.
Этот вариант вызова позволяет вызывающей стороне устанавливать любую комбинацию EventOptions
:
- отметка времени, когда 0 по умолчанию соответствует текущему времени в точке вызова,
- «корневой» раздел источника события (источник события и идентификатор признака); если NULL, по умолчанию используется текущее устройство. событие отмечено как относящееся к устройству, с которого осуществляется вызов,
- идентификатор связанного события для группировки идентификаторов событий; когда ID связанного события равен 0, событие помечается как не относящееся ни к каким другим событиям,
- острая необходимость; по умолчанию несрочный.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возврат | event_id_t Идентификатор события, если событие было записано в журнал, в противном случае - 0. |
Ведение журнала
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Конструктор LoggingManagement .
Инициализируйте LoggingManagement с помощью массива LogStorageResources . Массив должен предоставлять ресурс для каждого допустимого уровня важности, элементы массива должны иметь возрастающее числовое значение важности (и уменьшающееся значение); первый элемент в массиве соответствует ресурсам, выделенным для наиболее важных событий, а последний элемент соответствует наименее важным событиям.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
|
Ведение журнала
LoggingManagement( void )
Конструктор по умолчанию LoggingManagement .
Предоставляется в первую очередь для того, чтобы компилятор был доволен
Подробности | |
---|---|
Возврат |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Установите для флага mShutdownInProgress значение 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 )
Публичный API для регистрации набора внешних событий.
Зарегистрируйте обратный вызов формы FetchExternalEventsFunct . Этот API требует, чтобы платформа знала количество событий при регистрации. Внутренняя работа также требует, чтобы это число было постоянным. Поскольку этот API не позволяет платформе регистрировать определенные идентификаторы событий, это не позволяет платформе сохранять хранилище событий (по крайней мере, с уникальными идентификаторами событий).
Обратный вызов будет вызываться всякий раз, когда подписчик пытается получить идентификаторы событий в пределах диапазона любое количество раз, пока он не будет отменен.
Этот вариант функции следует использовать, когда внешний провайдер хочет получать уведомления как о доставке событий подписчику, так и о выселении объекта внешних событий.
Когда события доставляются, внешний провайдер уведомляется об этом вместе с идентификатором узла получателя и идентификатором последнего события, доставленного этому получателю. Обратите внимание, что внешний поставщик может быть уведомлен несколько раз для одного и того же идентификатора события. Для обработчика нет особых ограничений, в частности, обработчик может отменить регистрацию идентификаторов внешних событий.
Если объект внешних событий удаляется из буферов журнала, внешний поставщик уведомляется вместе с копией объекта внешних событий.
Указатель на структуру ExternalEvents будет иметь значение NULL в случае сбоя, в противном случае он будет заполнен идентификаторами начального и конечного события, назначенными обратному вызову. Этот указатель следует использовать для отмены регистрации набора событий.
См. Документацию для FetchExternalEventsFunct, чтобы узнать, что должен реализовывать обратный вызов.
Подробности | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||||
Возвращаемые значения |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
Публичный API для регистрации набора внешних событий.
Зарегистрируйте обратный вызов формы FetchExternalEventsFunct . Этот API требует, чтобы платформа знала количество событий при регистрации. Внутренняя работа также требует, чтобы это число было постоянным. Поскольку этот API не позволяет платформе регистрировать определенные идентификаторы событий, это не позволяет платформе сохранять хранилище событий (по крайней мере, с уникальными идентификаторами событий).
Обратный вызов будет вызываться всякий раз, когда подписчик пытается получить идентификаторы событий в пределах диапазона любое количество раз, пока он не будет отменен.
Этот вариант функции следует использовать, когда внешний провайдер хочет получать уведомление о доставке событий подписчику, но не когда объект внешних событий вытесняется. Когда события доставляются, внешний провайдер уведомляется об этом вместе с идентификатором узла получателя и идентификатором последнего события, доставленного этому получателю. Обратите внимание, что внешний поставщик может быть уведомлен несколько раз для одного и того же идентификатора события. Для обработчика нет особых ограничений, в частности, обработчик может отменить регистрацию идентификаторов внешних событий.
Указатель на структуру ExternalEvents будет иметь значение NULL в случае сбоя, в противном случае он будет заполнен идентификаторами начального и конечного события, назначенными обратному вызову. Этот указатель следует использовать для отмены регистрации набора событий.
См. Документацию для FetchExternalEventsFunct, чтобы узнать, что должен реализовывать обратный вызов.
Подробности | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||||
Возвращаемые значения |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
Публичный API для регистрации набора внешних событий.
Зарегистрируйте обратный вызов формы FetchExternalEventsFunct . Этот API требует, чтобы платформа знала количество событий при регистрации. Внутренняя работа также требует, чтобы это число было постоянным. Поскольку этот API не позволяет платформе регистрировать определенные идентификаторы событий, это не позволяет платформе сохранять хранилище событий (по крайней мере, с уникальными идентификаторами событий).
Обратный вызов будет вызываться всякий раз, когда подписчик пытается получить идентификаторы событий в пределах диапазона любое количество раз, пока он не будет отменен.
Этот вариант функции следует использовать, когда внешний поставщик не требует уведомления ни о доставке внешних событий, ни о выселении объекта внешних событий.
Указатель на структуру ExternalEvents будет иметь значение NULL в случае сбоя, в противном случае он будет заполнен идентификаторами начального и конечного события, назначенными обратному вызову. Этот указатель следует использовать для отмены регистрации набора событий.
См. Документацию для FetchExternalEventsFunct, чтобы узнать, что должен реализовывать обратный вызов.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Запланируйте задачу выгрузки журнала.
Функция решает, следует ли планировать процесс разгрузки задачи, и если это так, она планирует асинхронный запуск LoggingFlushHandler
в потоке Weave.
Решение о планировании промывки зависит от трех факторов:
явный запрос на очистку буфера
состояние буфера событий и количество данных, которые еще не синхронизированы с потребителями событий
есть ли уже ожидающее обработки событие запроса на сброс.
Явный запрос на планирование сброса передается через входной параметр.
Автоматическая очистка обычно назначается, когда буферы событий содержат достаточно данных, чтобы начать новую разгрузку. Дополнительные триггеры, такие как минимальное и максимальное время между разгрузками, также могут быть приняты во внимание в зависимости от стратегии разгрузки.
Состояние ожидания журнала событий указывается переменной mUploadRequested
. Поскольку эта функция может быть вызвана несколькими потоками, mUploadRequested
должен быть прочитан и установлен атомарно, чтобы избежать планирования избыточного LoggingFlushHandler
до LoggingFlushHandler
уведомления.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Сериализируйте события Weave всех типов важности.
Сериализует события в WeaveCircularTLVBuffer и связанные состояния в предоставленный буфер.
Этот метод предназначен для использования устройствами, которые не сохраняют оперативную память во время сна, что позволяет им сохранять события перед переходом в спящий режим и тем самым предотвращать потерю событий.
SetBDXUploader
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 )
SkipEvent
void SkipEvent( EventLoadOutContext *aContext )
Вспомогательная функция для пропуска записи события, соответствующего выделенному идентификатору события.
Подробности | |||
---|---|---|---|
Параметры |
|
Дроссель
void ThrottleLogger( void )
ThrottleLogger поднимает эффективный уровень ведения журнала до уровня «Производство».
UnregisterEventCallbackForImportance
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 )