nl::Weave::Profile::DataManagement_Current::LoggingManagement

#include <src/lib/profiles/data-management/Current/LoggingManagement.h>

Eine Klasse zum Verwalten der In-Memory-Ereignisprotokolle.

Fazit

Konstrukteur und Zerstörer

LoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
LoggingManagement-Konstruktor.
LoggingManagement(void)
Standard-Konstruktor für LoggingManagement.

Öffentliche Funktionen

BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
Hilfsfunktion zum Schreiben von Ereignisheadern und Daten gemäß dem Ereignisprotokollierungsprotokoll.
CancelShutdownInProgress(void)
void
Setzen Sie das Flag mShutdownInFortschritt auf „false“.
CheckShouldRunWDM(void)
bool
Legen Sie fest, ob Ereignisse auf Grundlage der Anzahl der Byte in Ereignispuffern entfernt werden sollen, die nicht zum Upload geplant sind.
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
Eine Funktion zum Abrufen von Ereignissen einer bestimmten Wichtigkeit seit einer angegebenen Ereignis-ID.
GetBytesWritten(void) const
uint32_t
Rufen Sie die Gesamtzahl der Byte ab, die seit der Instanziierung in dieses Log geschrieben wurden (über alle wichtigen Ereignisse hinweg).
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
Eine Hilfsmethode zum Prüfen der In-Memory-Zwischenspeicher.
GetFirstEventID(ImportanceType inImportance)
Ruft die erste Ereignis-ID ab, die derzeit für eine bestimmte Wichtigkeitsstufe gespeichert ist.
GetLastEventID(ImportanceType inImportance)
Ermitteln Sie den ID mit der letzten ID für eine bestimmte Wichtigkeitsstufe.
IsShutdownInProgress(void)
bool
Überprüfen Sie das Flag „mShutdownInFortschritt“.
IsValid(void)
bool
Ist gültig, ob die Instanz von LoggingManagement gültig ist.
LoadEvents(TLVReader & reader)
Zuvor geladenes Weave-Ereignis wird geladen.
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
Ereignis über einen Callback protokollieren, mit Optionen
MarkShutdownInProgress(void)
void
Setzen Sie das Flag mShutdownInFortschritt auf „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)
Die öffentliche API zum Registrieren einer Gruppe von extern gespeicherten Ereignissen.
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
Die öffentliche API zum Registrieren einer Gruppe von extern gespeicherten Ereignissen.
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
Die öffentliche API zum Registrieren einer Gruppe von extern gespeicherten Ereignissen.
ScheduleFlushIfNeeded(bool inFlushRequested)
Planen Sie eine Log-Auslagerungsaufgabe.
SerializeEvents(TLVWriter & writer)
Weave-Ereignisse aller Arten serialisiert
SetBDXUploader(LogBDXUpload *inUploader)
void
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
Legen Sie den WeaveExchangeManager fest, der für dieses Logging-Subsystem verwendet werden soll.
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
SkipEvent(EventLoadOutContext *aContext)
void
Hilfsfunktion zum Überspringen des Ereignisses, das einer zugewiesenen Ereignis-ID entspricht.
ThrottleLogger(void)
void
Throttlelogger hebt die effektive Protokollierungsstufe auf die Produktionsebene an.
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
void
Die öffentliche API zum Entfernen der Registrierung von extern gespeicherten Ereignissen.
UnthrottleLogger(void)
void
UnthrottleLogger wiederhergestellt die effektive Protokollierungsebene auf die konfigurierte Protokollierungsebene.

Öffentliche statische Funktionen

CreateLoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
void
Erstellen Sie ein LoggingManagement-Objekt und initialisieren Sie das Logging-Verwaltungssubsystem mit den bereitgestellten Ressourcen.
DestroyLoggingManagement(void)
void
Führen Sie alle erforderlichen Aktionen beim Herunterfahren aus.
GetInstance(void)

Öffentliche Funktionen

BlitEvent

WEAVE_ERROR BlitEvent(
  EventLoadOutContext *aContext,
  const EventSchema & inSchema,
  EventWriterFunct inEventWriter,
  void *inAppData,
  const EventOptions *inOptions
)

Hilfsfunktion zum Schreiben von Ereignisheadern und Daten gemäß dem Ereignisprotokollierungsprotokoll.

Details
Parameter
[in,out] aContext
EventLoadOutContext, initialisiert mit zustandsorientierte Informationen für den Zwischenspeicher. Der Status wird anhand dieses Kontexts von BlitEvent aktualisiert und beibehalten.
[in] inSchema
Schema der Definition von Wichtigkeit, Profil-ID und Strukturtyp dieses Ereignisses.
[in] inEventWriter
Der Callback, der zum Serialisieren der Ereignisdaten aufgerufen wird.
[in] inAppData
Anwendungskontext für Callback.
[in] inOptions
EventOptions, die den Zeitstempel und andere Tags beschreiben, die für dieses Ereignis relevant sind

Herunterfahren beenden

void CancelShutdownInProgress(
  void
)

Setzen Sie das Flag mShutdownInFortschritt auf „false“.

Check Sollte ausführen WDM

bool CheckShouldRunWDM(
  void
)

Legen Sie fest, ob Ereignisse auf Grundlage der Anzahl der Byte in Ereignispuffern entfernt werden sollen, die nicht zum Upload geplant sind.

Das Verhalten der Funktion wird über die Konstante WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD gesteuert. Wenn das System seit dem letzten Senden einer WDM-Benachrichtigung mehr als diese Anzahl an Byte geschrieben hat, zeigt die Funktion an, dass die NotificationEngine ausgelöst werden soll.

Details
Rückgabewerte
true
Ereignisse sollten ausgelagert werden
false
Andernfalls:

Ereignisse abrufen seit

WEAVE_ERROR FetchEventsSince(
  nl::Weave::TLV::TLVWriter & ioWriter,
  ImportanceType inImportance,
  event_id_t & ioEventID
)

Eine Funktion zum Abrufen von Ereignissen einer bestimmten Wichtigkeit seit einer angegebenen Ereignis-ID.

Mit einem nl::Weave::TLV::TLVWriter, einem Wichtigkeitstyp und einer Ereignis-ID ruft die Funktion Ereignisse mit dem angegebenen Wichtigkeit seit dem angegebenen Ereignis ab. Die Funktion ruft weiterhin Ereignisse ab, bis kein Speicherplatz im nl::Weave::TLV::TLVWriter oder im Log mehr vorhanden ist. Durch die Funktion wird das Ereignis beendet, das auf der Ereignisgrenze steht.

Details
Parameter
[in] ioWriter
Der Autor für den Ereignisspeicher
[in] inImportance
Die Bedeutung von abzurufenden Ereignissen
[in,out] ioEventID
Bei der Eingabe wird die ID des Ereignisses unmittelbar vor dem Abrufen angezeigt. Nach Abschluss wird die ID des letzten abgerufenen Ereignisses angezeigt.
Rückgabewerte
WEAVE_END_OF_TLV
Die Funktion hat das Ende der verfügbaren Logeinträge auf der angegebenen Wichtigkeitsstufe erreicht
WEAVE_ERROR_NO_MEMORY
Die Funktion hat im ioWriter keinen Speicherplatz mehr. Weitere Ereignisse im Log sind verfügbar.
WEAVE_ERROR_BUFFER_TOO_SMALL
Die Funktion hat im ioWriter keinen Speicherplatz mehr. Weitere Ereignisse im Log sind verfügbar.

GetBytesWriter

uint32_t GetBytesWritten(
  void
) const 

Rufen Sie die Gesamtzahl der Byte ab, die seit der Instanziierung in dieses Log geschrieben wurden (über alle wichtigen Ereignisse hinweg).

Details
Rückgabe
Die Anzahl der in das Log geschriebenen Byte.

GetEventReader

WEAVE_ERROR GetEventReader(
  nl::Weave::TLV::TLVReader & ioReader,
  ImportanceType inImportance
)

Eine Hilfsmethode zum Prüfen der In-Memory-Zwischenspeicher.

Details
Parameter
[in,out] ioReader
Ein Verweis auf den Leser, der mit dem unterstützenden Speicher aus dem Ereignisprotokoll initialisiert wird
[in] inImportance
Die erste Bedeutung für den Leser. In diesem Fall ist die Anfangswichtigkeit etwas gegenteilig: Alle wichtigen Ereignisse teilen die Zwischenspeicher zusätzlich zu den dedizierten Zwischenspeichern mit weniger wichtigen Ereignissen. Aus diesem Grund durchlaufen die Leser die am wenigsten wichtigen Daten, wenn die Wichtigkeit der Fehlerbehebung übergeben wird.
Rückgabe
WEAVE_NO_ERROR ohne Bedingung.

GetFirstEventID

event_id_t GetFirstEventID(
  ImportanceType inImportance
)

Ruft die erste Ereignis-ID ab, die derzeit für eine bestimmte Wichtigkeitsstufe gespeichert ist.

Details
Parameter
inImportance
Wichtigkeitsstufe
Rückgabe
event_id_t Zuerst gespeicherte Ereignis-ID für diese Wichtigkeitseinstellung

GetLastEventID

event_id_t GetLastEventID(
  ImportanceType inImportance
)

Ermitteln Sie den ID mit der letzten ID für eine bestimmte Wichtigkeitsstufe.

Details
Parameter
inImportance
Wichtigkeitsstufe
Rückgabe
event_id_t zuletzt geänderte Ereignis-ID für diese Ereigniswichtigkeit

Wird heruntergefahren

bool IsShutdownInProgress(
  void
)

Überprüfen Sie das Flag „mShutdownInFortschritt“.

Gültig

bool IsValid(
  void
)

Ist gültig, ob die Instanz von LoggingManagement gültig ist.

Details
Rückgabewerte
true
Die Instanz ist gültig (mit dem entsprechenden Sicherungsspeicher initialisiert)
false
Andernfalls:

Ladeereignisse

WEAVE_ERROR LoadEvents(
  TLVReader & reader
)

Zuvor geladenes Weave-Ereignis wird geladen.

Logereignis

event_id_t LogEvent(
  const EventSchema & inSchema,
  EventWriterFunct inEventWriter,
  void *inAppData,
  const EventOptions *inOptions
)

Ereignis über einen Callback protokollieren, mit Optionen

Die Funktion protokolliert ein Ereignis, das als EventWriterFunct- und ein app-spezifischer appData-Kontext dargestellt wird. Die Funktion schreibt die Ereignismetadaten und ruft inEventWriter mit einem nl::Weave::TLV::TLVWriter-Referenz und inAppData-Kontext auf, damit der Nutzercode die Ereignisdaten direkt in das Ereignisprotokoll ausgeben kann. Diese Form des Ereignis-Loggings reduziert den Arbeitsspeicherverbrauch, da die Ereignisdaten direkt im Zielzwischenspeicher serialisiert werden. Die Ereignisdaten MÜSSEN Kontextkontext-Tags enthalten, die innerhalb des von inProfileID und inEventType identifizierten Schemas interpretiert werden sollen. Das Tag des ersten Elements wird ignoriert. Es wird durch das Ereignis-Logging-System durch das Ereignis „eventData“ ersetzt.

Das Ereignis wird protokolliert, wenn die Wichtigkeit des Schemas den in LoggingConfiguration angegebenen Logging-Schwellenwert überschreitet. Wenn die Wichtigkeit des Ereignisses den aktuellen Grenzwert nicht erreicht, wird er verworfen und die Funktion gibt 0 als resultierende Ereignis-ID zurück.

Bei dieser Variante des Aufrufs kann der Aufrufer eine beliebige Kombination von EventOptions festlegen:

  • timestamp: Wenn 0 standardmäßig auf die aktuelle Zeit am Anrufpunkt festgelegt ist,
  • &&t ergibt.
  • eine zugehörige Ereignis-ID für die Gruppierung von Ereignis-IDs. Wenn die zugehörige Ereignis-ID „0“ ist, wird das Ereignis als nicht relevant für andere Ereignisse gekennzeichnet.
  • Dringlichkeit; standardmäßig nicht dringend.

Details
Parameter
[in] inSchema
Schema der Definition von Wichtigkeit, Profil-ID und Strukturtyp dieses Ereignisses.
[in] inEventWriter
Der Callback, der zum Serialisieren der Ereignisdaten aufgerufen wird
[in] inAppData
Anwendungskontext für Callback.
[in] inOptions
Optionen für die Ereignismetadaten Kann NULL sein.
Rückgabe
event_id_t Die Ereignis-ID, wenn das Ereignis in das Protokoll geschrieben wurde, sonst 0.

Logging-Verwaltung

 LoggingManagement(
  nl::Weave::WeaveExchangeManager *inMgr,
  size_t inNumBuffers,
  const LogStorageResources *const inLogStorageResources
)

LoggingManagement-Konstruktor.

Initialisieren Sie für LoggingManagement das Array LogStorageResources. Im Array muss für jede gültige Wichtigkeitsstufe eine Ressource angegeben werden. Die Elemente des Arrays müssen in absteigender numerischer Wichtigkeit und deren Bedeutung abnehmen. Das erste Element im Array entspricht den Ressourcen, die für die kritischsten Ereignisse zugewiesen sind, und das letzte Element dem am wenigsten wichtigen Ereignis.

Details
Parameter
[in] inMgr
WeaveExchangeManager zur Verwendung mit diesem Logging-Subsystem
[in] inNumBuffers
Anzahl der Elemente im Array „LogStorageResources“
[in] inLogStorageResources
Ein Array mit LogStorageResources für jede Wichtigkeitsstufe.

Logging-Verwaltung

 LoggingManagement(
  void
)

Standard-Konstruktor für LoggingManagement.

Wird hauptsächlich verwendet, um den Compiler zufrieden zu stellen.

Details
Rückgabe

MarkuvInInFortschritt

void MarkShutdownInProgress(
  void
)

Setzen Sie das Flag mShutdownInFortschritt auf „true“.

NotifyEventsZugestellt

void NotifyEventsDelivered(
  ImportanceType inImportance,
  event_id_t inLastDeliveredEventID,
  uint64_t inRecipientNodeID
)

RegistrierenEventCallbackForImportance

WEAVE_ERROR RegisterEventCallbackForImportance(
  ImportanceType inImportance,
  FetchExternalEventsFunct inFetchCallback,
  NotifyExternalEventsDeliveredFunct inNotifyCallback,
  NotifyExternalEventsEvictedFunct inEvictedCallback,
  size_t inNumEvents,
  event_id_t *outLastEventID
)

Die öffentliche API zum Registrieren einer Gruppe von extern gespeicherten Ereignissen.

Registrieren Sie einen Callback im Format FetchExternalEventsFunct. Diese API erfordert, dass die Plattform die Anzahl der Ereignisse bei der Registrierung kennt. Auch im internen Arbeiten muss diese Zahl konstant sein. Da diese API der Plattform das Registrieren bestimmter Ereignis-IDs nicht erlaubt, kann die Plattform keine Ereignisse dauerhaft speichern, zumindest mit eindeutigen Ereignis-IDs.

Der Callback wird jedes Mal aufgerufen, wenn ein Abonnent versucht, Ereignis-IDs innerhalb des Bereichs abzurufen, bis er nicht registriert ist.

Diese Variante der Funktion sollte verwendet werden, wenn der externe Anbieter sowohl über die Übertragung von Ereignissen an einen Abonnenten als auch über das Entfernen der externen Ereignisobjekte informiert werden möchte.

Bei der Übermittlung der Ereignisse wird der externe Anbieter darüber informiert – zusammen mit der Knoten-ID des Empfängers und der ID des letzten Ereignisses, das an diesen Empfänger übermittelt wurde. Der externe Anbieter wird möglicherweise mehrmals für dieselbe Ereignis-ID benachrichtigt. Für den Handler gibt es keine spezifischen Einschränkungen, insbesondere kann der Handler die Registrierung der externen Ereignis-IDs aufheben.

Wenn das externe Ereignisobjekt aus den Protokollzwischenspeichern entfernt wird, wird der externe Anbieter zusammen mit einer Kopie des externen Ereignisobjekts benachrichtigt.

Der Mauszeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird die Ereignis-ID für Start und Ende dem Callback zugeordnet. Mit diesem Zeiger wird die Registrierung der Ereignisgruppe aufgehoben.

Ausführliche Informationen zur Implementierung des Callbacks finden Sie in der Dokumentation zu FetchExternalEventsFunct.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inFetchCallback
Callback zum Registrieren externer Ereignisse
[in] inNotifyCallback
Rückruf für Registrierung zur Benachrichtigung
[in] inEvictedCallback
Callback für die Registrierung von Bereinigungsbenachrichtigungen
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Wenn der Mauszeiger auf eine „event_id_t“ verweist, wird die Ereignis-ID für die letzte Ereignis-ID des externen Ereignisblocks gespeichert, wenn externe Ereignisse registriert werden. Der Parameter kann NULL sein.
Rückgabewerte
WEAVE_ERROR_NO_MEMORY
Wenn keine Callback-Anzeigenflächen mehr verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Null-Funktionsrückruf oder keine Ereignisse, die registriert werden sollen
WEAVE_NO_ERROR
Erfolg.

RegistrierenEventCallbackForImportance

WEAVE_ERROR RegisterEventCallbackForImportance(
  ImportanceType inImportance,
  FetchExternalEventsFunct inFetchCallback,
  NotifyExternalEventsDeliveredFunct inNotifyCallback,
  size_t inNumEvents,
  event_id_t *outLastEventID
)

Die öffentliche API zum Registrieren einer Gruppe von extern gespeicherten Ereignissen.

Registrieren Sie einen Callback im Format FetchExternalEventsFunct. Diese API erfordert, dass die Plattform die Anzahl der Ereignisse bei der Registrierung kennt. Auch im internen Arbeiten muss diese Zahl konstant sein. Da diese API der Plattform das Registrieren bestimmter Ereignis-IDs nicht erlaubt, kann die Plattform keine Ereignisse dauerhaft speichern, zumindest mit eindeutigen Ereignis-IDs.

Der Callback wird jedes Mal aufgerufen, wenn ein Abonnent versucht, Ereignis-IDs innerhalb des Bereichs abzurufen, bis er nicht registriert ist.

Diese Variante der Funktion sollte verwendet werden, wenn der externe Anbieter benachrichtigt werden möchte, wenn die Ereignisse an einen Abonnenten zugestellt wurden, aber nicht, wenn das externe Ereignisobjekt entfernt wird. Bei der Übermittlung der Ereignisse wird der externe Anbieter darüber informiert – zusammen mit der Knoten-ID des Empfängers und der ID des letzten Ereignisses, das an diesen Empfänger übermittelt wurde. Der externe Anbieter wird möglicherweise mehrmals für dieselbe Ereignis-ID benachrichtigt. Für den Handler gibt es keine spezifischen Einschränkungen, insbesondere kann der Handler die Registrierung der externen Ereignis-IDs aufheben.

Der Mauszeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird die Ereignis-ID für Start und Ende dem Callback zugeordnet. Mit diesem Zeiger wird die Registrierung der Ereignisgruppe aufgehoben.

Ausführliche Informationen zur Implementierung des Callbacks finden Sie in der Dokumentation zu FetchExternalEventsFunct.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inCallback
Callback zum Registrieren externer Ereignisse
[in] inNotifyCallback
Rückruf für Registrierung zur Benachrichtigung
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Wenn der Mauszeiger auf eine „event_id_t“ verweist, wird die Ereignis-ID für die letzte Ereignis-ID des externen Ereignisblocks gespeichert, wenn externe Ereignisse registriert werden. Der Parameter kann NULL sein.
Rückgabewerte
WEAVE_ERROR_NO_MEMORY
Wenn keine Callback-Anzeigenflächen mehr verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Null-Funktionsrückruf oder keine Ereignisse, die registriert werden sollen
WEAVE_NO_ERROR
Erfolg.

RegistrierenEventCallbackForImportance

WEAVE_ERROR RegisterEventCallbackForImportance(
  ImportanceType inImportance,
  FetchExternalEventsFunct inFetchCallback,
  size_t inNumEvents,
  event_id_t *outLastEventID
)

Die öffentliche API zum Registrieren einer Gruppe von extern gespeicherten Ereignissen.

Registrieren Sie einen Callback im Format FetchExternalEventsFunct. Diese API erfordert, dass die Plattform die Anzahl der Ereignisse bei der Registrierung kennt. Auch im internen Arbeiten muss diese Zahl konstant sein. Da diese API der Plattform das Registrieren bestimmter Ereignis-IDs nicht erlaubt, kann die Plattform keine Ereignisse dauerhaft speichern, zumindest mit eindeutigen Ereignis-IDs.

Der Callback wird jedes Mal aufgerufen, wenn ein Abonnent versucht, Ereignis-IDs innerhalb des Bereichs abzurufen, bis er nicht registriert ist.

Diese Variante der Funktion sollte verwendet werden, wenn der externe Anbieter eine Benachrichtigung möchte, weder wenn die externen Ereignisse zugestellt wurden noch das externe Ereignisobjekt entfernt wird.

Der Mauszeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird die Ereignis-ID für Start und Ende dem Callback zugeordnet. Mit diesem Zeiger wird die Registrierung der Ereignisgruppe aufgehoben.

Ausführliche Informationen zur Implementierung des Callbacks finden Sie in der Dokumentation zu FetchExternalEventsFunct.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inCallback
Callback zum Registrieren externer Ereignisse
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Wenn der Mauszeiger auf eine „event_id_t“ verweist, wird die Ereignis-ID für die letzte Ereignis-ID des externen Ereignisblocks gespeichert, wenn externe Ereignisse registriert werden. Der Parameter kann NULL sein.
Rückgabewerte
WEAVE_ERROR_NO_MEMORY
Wenn keine Callback-Anzeigenflächen mehr verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Null-Funktionsrückruf oder keine Ereignisse, die registriert werden sollen
WEAVE_NO_ERROR
Erfolg.

Zeitplan – Aufforderung erforderlich

WEAVE_ERROR ScheduleFlushIfNeeded(
  bool inFlushRequested
)

Planen Sie eine Log-Auslagerungsaufgabe.

Die Funktion entscheidet, ob eine Aufgabe ausgelagert werden soll. Wenn ja, wird LoggingFlushHandler so ausgeführt, dass sie asynchron im Weave-Thread ausgeführt wird.

Die Entscheidung, wann eine Bereinigung ausgeführt werden soll, hängt von drei Faktoren ab:

Eine explizite Anfrage zum Leeren des Zwischenspeichers

Status des Ereigniszwischenspeichers und Datenmenge, die noch nicht mit den Ereignisnutzern synchronisiert wurde

ob es bereits ein Anfrageereignis zur Leerung von Anfragen gibt.

Die explizite Anfrage zum Planen einer Leerung wird über einen Eingabeparameter übergeben.

Die automatische Leerung wird normalerweise geplant, wenn die Ereigniszwischenspeicher genügend Daten enthalten, um einen neuen Auslagerungsvorgang zu starten. Je nach Strategie können auch zusätzliche Trigger wie die Mindest- und Höchstzeit zwischen den Entladungen berücksichtigt werden.

Der Status „Ausstehend“ des Ereignisprotokolls wird durch die Variable mUploadRequested gekennzeichnet. Diese Funktion kann von mehreren Threads aufgerufen werden. Deshalb muss mUploadRequested atomar gelesen und festgelegt werden, um eine redundante LoggingFlushHandler zu vermeiden, bevor die Benachrichtigung gesendet wird.

Details
Parameter
inRequestFlush
Ein boolescher Wert, der angibt, ob die Bereinigung unabhängig von der internen Zwischenspeicherverwaltungsrichtlinie geplant werden soll.
Rückgabewerte
WEAVE_ERROR_INCORRECT_STATE
Das LoggingManagement-Modul wurde nicht vollständig initialisiert.
WEAVE_NO_ERROR
Erfolg.

SerializeEreignisse

WEAVE_ERROR SerializeEvents(
  TLVWriter & writer
)

Weave-Ereignisse aller Arten serialisiert

Die Ereignisse in WeaveCircularTLVBuffer und die zugehörigen Status werden in den bereitgestellten Puffer serialisiert

Diese Methode ist für Geräte vorgesehen, die RAM während des Schlafs nicht beibehalten, sodass sie Ereignisse vor dem Schlafengehen beibehalten können und so Ereignisse verloren gehen

SetBDXUploader

void SetBDXUploader(
  LogBDXUpload *inUploader
)

SetExchange-Manager

WEAVE_ERROR SetExchangeManager(
  nl::Weave::WeaveExchangeManager *inMgr
)

Legen Sie den WeaveExchangeManager fest, der für dieses Logging-Subsystem verwendet werden soll.

Auf einigen Plattformen muss dies getrennt von CreateLoggingManagement() geschehen.

Details
Parameter
[in] inMgr
WeaveExchangeManager zur Verwendung mit diesem Logging-Subsystem

SetLoggingEndpoint

WEAVE_ERROR SetLoggingEndpoint(
  event_id_t *inEventEndpoints,
  size_t inNumImportanceLevels,
  size_t & outLoggingPosition
)

Überspringen

void SkipEvent(
  EventLoadOutContext *aContext
)

Hilfsfunktion zum Überspringen des Ereignisses, das einer zugewiesenen Ereignis-ID entspricht.

Details
Parameter
[in,out] aContext
EventLoadOutContext, initialisiert mit zustandsorientierte Informationen für den Zwischenspeicher. Der Status wird anhand dieses Kontexts von BlitEvent aktualisiert und beibehalten.

Drosselmelder

void ThrottleLogger(
  void
)

Throttlelogger hebt die effektive Protokollierungsstufe auf die Produktionsebene an.

„UnregisterEventCallbackForImportance“

void UnregisterEventCallbackForImportance(
  ImportanceType inImportance,
  event_id_t inEventID
)

Die öffentliche API zum Entfernen der Registrierung von extern gespeicherten Ereignissen.

Wenn Sie die Registrierung des Callbacks aufheben, kann LoggingManagement ihn nicht für bestimmte Ereignisse aufrufen. LoggingManagement sendet diese Ereignis-IDs nicht mehr an Abonnenten.

Dabei wird eine Funktion verwendet, um mehrere Ereignisse gleichzeitig auszuliefern. Wenn neue Ereignisse mit derselben Funktion registriert werden müssen, muss zuerst die Callbackregistrierung aufgehoben und dann wieder registriert werden. Das bedeutet, dass die ursprünglichen Ereignisse nicht mehr abgerufen werden können.

Diese Funktion ist bedingungslos erfolgreich. Wenn der Callback nie registriert oder bereits registriert war, ist eine No-Op.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inEventID
Eine Ereignis-ID, die einem der Ereignisse im externen Ereignisblock entspricht, der abgemeldet wird.

Nicht gedrosselt

void UnthrottleLogger(
  void
)

UnthrottleLogger wiederhergestellt die effektive Protokollierungsebene auf die konfigurierte Protokollierungsebene.

Öffentliche statische Funktionen

Logging-Verwaltung erstellen

void CreateLoggingManagement(
  nl::Weave::WeaveExchangeManager *inMgr,
  size_t inNumBuffers,
  const LogStorageResources *const inLogStorageResources
)

Erstellen Sie ein LoggingManagement-Objekt und initialisieren Sie das Logging-Verwaltungssubsystem mit den bereitgestellten Ressourcen.

Initialisieren Sie für LoggingManagement das Array LogStorageResources. Im Array muss für jede gültige Wichtigkeitsstufe eine Ressource angegeben werden. Die Elemente des Arrays müssen in absteigender numerischer Wichtigkeit und deren Bedeutung abnehmen. Das erste Element im Array entspricht den Ressourcen, die für die kritischsten Ereignisse zugewiesen sind, und das letzte Element dem am wenigsten wichtigen Ereignis.

Details
Parameter
[in] inMgr
WeaveExchangeManager zur Verwendung mit diesem Logging-Subsystem
[in] inNumBuffers
Anzahl der Elemente im Array „LogStorageResources“
[in] inLogStorageResources
Ein Array mit LogStorageResources für jede Wichtigkeitsstufe.

Verwaltungsprotokoll löschen

void DestroyLoggingManagement(
  void
)

Führen Sie alle erforderlichen Aktionen beim Herunterfahren aus.

GetInstance

LoggingManagement & GetInstance(
  void
)