nl::Weave::Profiles::DataManagement_Current::LoggingManagement

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

Eine Klasse zum Verwalten der Ereignisprotokolle im Arbeitsspeicher.

Zusammenfassung

Konstruktoren und Zerstörer

LoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
LoggingManagement(void)
LoggingManagement-Standardkonstruktor.

Öffentliche Funktionen

BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
Hilfsfunktion zum Schreiben des Ereignisheaders und der Daten gemäß dem Ereignisprotokollierungsprotokoll.
CancelShutdownInProgress(void)
void
Setzen Sie das Flag „mShutdownInProgress“ auf „false“.
CheckShouldRunWDM(void)
bool
Entscheiden Sie, ob Ereignisse basierend auf der Anzahl der Byte in den Ereignispuffern, die nicht für den Upload geplant sind, ausgelagert werden sollen.
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
Eine Funktion zum Abrufen von Ereignissen, die aufgrund der angegebenen Ereignis-ID eine bestimmte Bedeutung haben.
GetBytesWritten(void) const
uint32_t
Ruft die Gesamtzahl der Byte ab, die seit der Instanziierung in dieses Log geschrieben wurden (für alle Ereigniswichtigkeiten).
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
Eine Hilfsmethode, die zum Untersuchen der speicherinternen Protokollzwischenspeicher nützlich ist.
GetFirstEventID(ImportanceType inImportance)
Rufen Sie die erste Ereignis-ID ab, die derzeit für eine bestimmte Prioritätsstufe gespeichert ist.
GetLastEventID(ImportanceType inImportance)
Rufen Sie die zuletzt geänderte ID für eine bestimmte Prioritätsstufe ab.
IsShutdownInProgress(void)
bool
Prüfen Sie das Flag „mShutdownInProgress“.
IsValid(void)
bool
IsValid gibt zurück, ob die LoggingManagement-Instanz gültig ist.
LoadEvents(TLVReader & reader)
Zuvor beibehaltenes Weave-Ereignis laden.
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
Protokolliere ein Ereignis über einen Callback mit Optionen.
MarkShutdownInProgress(void)
void
Setzen Sie das Flag „mShutdownInProgress“ 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 Reihe extern gespeicherter Ereignisse.
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
Die öffentliche API zum Registrieren einer Reihe extern gespeicherter Ereignisse.
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
Die öffentliche API zum Registrieren einer Reihe extern gespeicherter Ereignisse.
ScheduleFlushIfNeeded(bool inFlushRequested)
Planen Sie eine Aufgabe zur Logauslagerung.
SerializeEvents(TLVWriter & writer)
Weave-Ereignisse aller Wichtigkeitstypen serialisieren.
SetBDXUploader(LogBDXUpload *inUploader)
void
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
Legen Sie den WeaveExchangeManager fest, der mit diesem Logging-Subsystem verwendet werden soll.
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
SkipEvent(EventLoadOutContext *aContext)
void
Hilfsfunktion, mit der das Schreiben eines Ereignisses übersprungen wird, das einer zugewiesenen Ereignis-ID entspricht.
ThrottleLogger(void)
void
ThrottleLogging hebt die geltende Protokollebene auf die Produktionsebene an.
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
void
Die öffentliche API zum Aufheben der Registrierung einer Reihe extern gespeicherter Ereignisse
UnthrottleLogger(void)
void
UnthrottleLogging stellt die aktuelle Protokollebene auf die konfigurierte Protokollierungsebene wieder her.

Öffentliche statische Funktionen

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

Öffentliche Funktionen

BlitEvent

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

Hilfsfunktion zum Schreiben des Ereignisheaders und der Daten gemäß dem Ereignisprotokollierungsprotokoll.

Details
Parameter
[in,out] aContext
EventLoadOutContext, initialisiert mit zustandsorientierten Informationen für den Zwischenspeicher. Der Status wird von BlitEvent mithilfe dieses Kontexts aktualisiert und gespeichert.
[in] inSchema
Schema, das die Wichtigkeit, die Profil-ID und den Strukturtyp dieses Ereignisses definiert.
[in] inEventWriter
Der Callback, der aufgerufen werden soll, um die Ereignisdaten zu serialisieren.
[in] inAppData
Anwendungskontext für den Callback.
[in] inOptions
EventOptions, die den Zeitstempel und andere für dieses Ereignis relevante Tags beschreiben.

CancelShutdownInProgress

void CancelShutdownInProgress(
  void
)

Setzen Sie das Flag „mShutdownInProgress“ auf „false“.

CheckShouldRunWDM

bool CheckShouldRunWDM(
  void
)

Entscheiden Sie, ob Ereignisse basierend auf der Anzahl der Byte in den Ereignispuffern, die nicht für den Upload geplant sind, ausgelagert werden sollen.

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 von Byte geschrieben hat, gibt die Funktion an, wann die NotificationEngine ausgelöst werden soll.

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

FetchEventsSince

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

Eine Funktion zum Abrufen von Ereignissen, die aufgrund der angegebenen Ereignis-ID wichtig sind.

Mit nl::Weave::TLV::TLVWriter, einem Wichtigkeitstyp und einer Ereignis-ID ruft die Funktion Ereignisse ab, die eine bestimmte Wichtigkeit seit dem angegebenen Ereignis haben. Die Funktion ruft weiterhin Ereignisse ab, bis der Speicherplatz im nl::Weave::TLV::TLVWriter oder im Protokoll aufgebraucht ist. Die Funktion beendet das Schreiben des Ereignisses an die Ereignisgrenze.

Details
Parameter
[in] ioWriter
Der Writer, der zum Speichern von Ereignissen verwendet werden soll
[in] inImportance
Die Wichtigkeit der abzurufenden Ereignisse
[in,out] ioEventID
Bei Eingabe die ID des Ereignisses unmittelbar vor dem abzurufenden Ereignis. Bei Abschluss die ID des letzten abgerufenen Ereignisses.
Rückgabewerte
WEAVE_END_OF_TLV
Die Funktion hat das Ende der verfügbaren Logeinträge mit der angegebenen Prioritätsstufe erreicht
WEAVE_ERROR_NO_MEMORY
Für die Funktion hat der ioWriter nicht mehr genügend Speicherplatz, daher sind weitere Ereignisse im Protokoll verfügbar.
WEAVE_ERROR_BUFFER_TOO_SMALL
Für die Funktion hat der ioWriter nicht mehr genügend Speicherplatz, daher sind weitere Ereignisse im Protokoll verfügbar.

GetBytesWritten

uint32_t GetBytesWritten(
  void
) const 

Ruft die Gesamtzahl der Byte ab, die seit der Instanziierung in dieses Log geschrieben wurden (für alle Ereigniswichtigkeiten).

Details
Rückgabe
Die Anzahl der Byte, die in das Log geschrieben wurden.

GetEventReader

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

Eine Hilfsmethode, die zum Untersuchen der speicherinternen Protokollzwischenspeicher nützlich ist.

Details
Parameter
[in,out] ioReader
Ein Verweis auf das Lesegerät, das mit dem Sicherungsspeicher aus dem Ereignisprotokoll initialisiert wird
[in] inImportance
Die anfängliche Bedeutung für die Leser. Beachten Sie, dass die anfängliche Wichtigkeit in diesem Fall etwas weniger intuitiv ist: Wichtige Ereignisse teilen sich die Puffer mit weniger wichtigen Ereignissen, zusätzlich zu ihren dedizierten Puffern. Infolgedessen durchläuft der Leser die wenigsten Daten, wenn die Debug-Wichtigkeit übergeben wird.
Rückgabe
WEAVE_NO_ERROR Ohne Bedingung.

GetFirstEventID

event_id_t GetFirstEventID(
  ImportanceType inImportance
)

Rufen Sie die erste Ereignis-ID ab, die derzeit für eine bestimmte Prioritätsstufe gespeichert ist.

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

GetLastEventID

event_id_t GetLastEventID(
  ImportanceType inImportance
)

Rufen Sie die zuletzt aktualisierte ID für eine bestimmte Prioritätsstufe ab.

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

IsShutdownInProgress

bool IsShutdownInProgress(
  void
)

Prüfen Sie das Flag „mShutdownInProgress“.

IsValid

bool IsValid(
  void
)

IsValid gibt zurück, ob die LoggingManagement-Instanz gültig ist.

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

LoadEvents

WEAVE_ERROR LoadEvents(
  TLVReader & reader
)

Zuvor beibehaltenes Weave-Ereignis laden.

LogEvent

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

Protokolliere ein Ereignis über einen Callback mit Optionen.

Die Funktion protokolliert ein Ereignis, das als EventWriterFunct dargestellt wird, und einen anwendungsspezifischen appData-Kontext. Die Funktion schreibt die Ereignismetadaten und ruft die inEventWriter mit einer nl::Weave::TLV::TLVWriter-Referenz und einem inAppData-Kontext auf, sodass der Nutzercode die Ereignisdaten direkt an das Ereignisprotokoll senden kann. Diese Form der Ereignisprotokollierung minimiert den Arbeitsspeicherverbrauch, da Ereignisdaten direkt im Zielpuffer serialisiert werden. Die Ereignisdaten MÜSSEN Kontext-Tags enthalten, die innerhalb des durch inProfileID und inEventType angegebenen Schemas interpretiert werden können. Das Tag des ersten Elements wird ignoriert. ersetzt das Ereignisprotokollierungssystem es durch das Tag „eventData“.

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

Diese Variante des Aufrufs erlaubt dem Aufrufer, eine beliebige Kombination aus EventOptions festzulegen:

  • Zeitstempel, wenn 0 standardmäßig auf die aktuelle Zeit zum Zeitpunkt des Aufrufs eingestellt ist,
  • „Stamm“ Abschnitt der Ereignisquelle (Ereignisquelle und Trait-ID) Wenn NULL, wird standardmäßig das aktuelle Gerät verwendet. wird gekennzeichnet, dass das Ereignis zu dem Gerät gehört, das den Anruf tätigt,
  • eine zugehörige Ereignis-ID zum Gruppieren von Ereignis-IDs Wenn die zugehörige Ereignis-ID 0 ist, wird das Ereignis so markiert, dass es nicht mit anderen Ereignissen in Zusammenhang steht.
  • Dringlichkeit; standardmäßig nicht dringend.

Details
Parameter
[in] inSchema
Schema, das die Wichtigkeit, die Profil-ID und den Strukturtyp dieses Ereignisses definiert.
[in] inEventWriter
Der Callback, der aufzurufen ist, um die Ereignisdaten tatsächlich zu serialisieren
[in] inAppData
Anwendungskontext für den Callback.
[in] inOptions
Die Optionen für die Ereignismetadaten. Kann NULL sein.
Rückgabe
event_id_t: Die Ereignis-ID, wenn das Ereignis in das Protokoll geschrieben wurde, andernfalls 0.

LoggingManagement

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

LoggingManagement.

Initialisieren Sie LoggingManagement mit einem Array von LogStorageResources. Das Array muss eine Ressource für jede gültige Prioritätsstufe bereitstellen. Die Elemente des Arrays müssen den numerischen Wert der Wichtigkeitsstufe erhöhen (und die Wichtigkeitsstufe abnehmen). Das erste Element im Array entspricht den Ressourcen, die den kritischsten Ereignissen zugewiesen sind, und das letzte Element entspricht den am wenigsten wichtigen Ereignissen.

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

LoggingManagement

 LoggingManagement(
  void
)

LoggingManagement-Standardkonstruktor.

Sie dienten in erster Linie dazu, den Compiler glücklich zu machen.

Details
Rückgabe

MarkShutdownInProgress

void MarkShutdownInProgress(
  void
)

Setzen Sie das Flag „mShutdownInProgress“ auf „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
)

Die öffentliche API zum Registrieren einer Reihe extern gespeicherter Ereignisse.

Registrieren Sie einen Callback des Formats FetchExternalEventsFunct. Für diese API muss die Plattform die Anzahl der Ereignisse bei der Registrierung kennen. Die interne Verarbeitung erfordert auch, dass diese Zahl konstant sein muss. Da diese API es der Plattform nicht erlaubt, bestimmte Ereignis-IDs zu registrieren, wird verhindert, dass die Plattform dauerhaft Ereignisse speichert (zumindest mit eindeutigen Ereignis-IDs).

Der Callback wird immer dann aufgerufen, wenn ein Abonnent versucht, Ereignis-IDs innerhalb des Bereichs beliebig oft abzurufen, bis die Registrierung aufgehoben wird.

Diese Variante der Funktion sollte verwendet werden, wenn der externe Anbieter benachrichtigt werden möchte, wenn die Ereignisse an einen Abonnenten gesendet wurden und wenn das externe Ereignisobjekt entfernt wurde.

Bei der Übermittlung der Ereignisse wird der externe Anbieter zusammen mit der Knoten-ID des Empfängers und der ID des letzten an diesen Empfänger zugestellten Ereignisses darüber benachrichtigt. Der externe Anbieter wird möglicherweise mehrmals bezüglich derselben Ereignis-ID benachrichtigt. Es gibt keine spezifischen Einschränkungen für den Handler. Insbesondere kann der Handler die Registrierung der externen Ereignis-IDs aufheben.

Wenn das externe Ereignisobjekt aus den Protokollzwischenspeichern entfernt wird, wird der externe Anbieter und eine Kopie des Objekts für externe Ereignisse benachrichtigt.

Der Zeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird der Zeiger mit den IDs des Start- und Enddatums gefüllt, die dem Callback zugewiesen sind. Dieser Zeiger sollte verwendet werden, um die Registrierung der Gruppe von Ereignissen aufzuheben.

In der Dokumentation zu FetchExternalEventsFunct finden Sie Details dazu, was der Callback implementieren muss.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inFetchCallback
Callback zum Registrieren für den Abruf externer Ereignisse
[in] inNotifyCallback
Rückruf zur Registrierung für Lieferbenachrichtigungen
[in] inEvictedCallback
Rückruf zur Registrierung für die Benachrichtigung zur Entfernung
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Zeiger auf eine event_id_t; Bei erfolgreicher Registrierung eines externen Ereignisses speichert die Funktion die Ereignis-ID, die der letzten Ereignis-ID des externen Ereignisblocks entspricht. Der Parameter kann NULL sein.
Rückgabewerte
WEAVE_ERROR_NO_MEMORY
Wenn keine weiteren Callback-Zeitblöcke verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Nullfunktions-Callback oder keine zu registrierenden Ereignisse.
WEAVE_NO_ERROR
Bei Erfolg.

RegisterEventCallbackForImportance

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

Die öffentliche API zum Registrieren einer Reihe extern gespeicherter Ereignisse.

Registrieren Sie einen Callback des Formats FetchExternalEventsFunct. Für diese API muss die Plattform die Anzahl der Ereignisse bei der Registrierung kennen. Die interne Verarbeitung erfordert auch, dass diese Zahl konstant sein muss. Da diese API es der Plattform nicht erlaubt, bestimmte Ereignis-IDs zu registrieren, wird verhindert, dass die Plattform dauerhaft Ereignisse speichert (zumindest mit eindeutigen Ereignis-IDs).

Der Callback wird immer dann aufgerufen, wenn ein Abonnent versucht, Ereignis-IDs innerhalb des Bereichs beliebig oft abzurufen, bis die Registrierung aufgehoben wird.

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

Der Zeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird der Zeiger mit den IDs des Start- und Enddatums gefüllt, die dem Callback zugewiesen sind. Dieser Zeiger sollte verwendet werden, um die Registrierung der Gruppe von Ereignissen aufzuheben.

In der Dokumentation zu FetchExternalEventsFunct finden Sie Details dazu, was der Callback implementieren muss.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inCallback
Callback zum Registrieren für den Abruf externer Ereignisse
[in] inNotifyCallback
Rückruf zur Registrierung für Lieferbenachrichtigungen
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Zeiger auf eine event_id_t; Bei erfolgreicher Registrierung eines externen Ereignisses speichert die Funktion die Ereignis-ID, die der letzten Ereignis-ID des externen Ereignisblocks entspricht. Der Parameter kann NULL sein.
Rückgabewerte
WEAVE_ERROR_NO_MEMORY
Wenn keine weiteren Callback-Zeitblöcke verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Nullfunktions-Callback oder keine zu registrierenden Ereignisse.
WEAVE_NO_ERROR
Bei Erfolg.

RegisterEventCallbackForImportance

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

Die öffentliche API zum Registrieren einer Reihe extern gespeicherter Ereignisse.

Registrieren Sie einen Callback des Formats FetchExternalEventsFunct. Für diese API muss die Plattform die Anzahl der Ereignisse bei der Registrierung kennen. Die interne Verarbeitung erfordert auch, dass diese Zahl konstant sein muss. Da diese API es der Plattform nicht erlaubt, bestimmte Ereignis-IDs zu registrieren, wird verhindert, dass die Plattform dauerhaft Ereignisse speichert (zumindest mit eindeutigen Ereignis-IDs).

Der Callback wird immer dann aufgerufen, wenn ein Abonnent versucht, Ereignis-IDs innerhalb des Bereichs beliebig oft abzurufen, bis die Registrierung aufgehoben wird.

Diese Variante der Funktion sollte verwendet werden, wenn der externe Anbieter eine Benachrichtigung wünscht, weder wenn die externen Ereignisse gesendet wurden noch das externe Ereignisobjekt entfernt wurde.

Der Zeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird der Zeiger mit den IDs des Start- und Enddatums gefüllt, die dem Callback zugewiesen sind. Dieser Zeiger sollte verwendet werden, um die Registrierung der Gruppe von Ereignissen aufzuheben.

In der Dokumentation zu FetchExternalEventsFunct finden Sie Details dazu, was der Callback implementieren muss.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inCallback
Callback zum Registrieren für den Abruf externer Ereignisse
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Zeiger auf eine event_id_t; Bei erfolgreicher Registrierung eines externen Ereignisses speichert die Funktion die Ereignis-ID, die der letzten Ereignis-ID des externen Ereignisblocks entspricht. Der Parameter kann NULL sein.
Rückgabewerte
WEAVE_ERROR_NO_MEMORY
Wenn keine weiteren Callback-Zeitblöcke verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Nullfunktions-Callback oder keine zu registrierenden Ereignisse.
WEAVE_NO_ERROR
Bei Erfolg.

ScheduleFlushIfNeeded

WEAVE_ERROR ScheduleFlushIfNeeded(
  bool inFlushRequested
)

Planen Sie eine Aufgabe zur Logauslagerung.

Die Funktion entscheidet, ob ein Aufgabenauslagerungsprozess geplant werden soll. Ist dies der Fall, plant sie den LoggingFlushHandler so, dass er asynchron im Weave-Thread ausgeführt wird.

Die Entscheidung, einen Spülvorgang zu planen, hängt von drei Faktoren ab:

eine explizite Anfrage zum Leeren des Zwischenspeichers.

den Status des Ereignispuffers und die noch nicht mit den Ereignis-Consumern synchronisierte Datenmenge

Gibt an, ob es bereits ein ausstehendes Anforderungsereignis für eine Leerung gibt.

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

Das automatische Leeren wird in der Regel geplant, wenn der Ereignispuffer genügend Daten enthält, um eine neue Auslagerung zu starten. Je nach Auslagerungsstrategie können auch zusätzliche Trigger wie die minimale und maximale Zeit zwischen den Auslagerungen berücksichtigt werden.

Der Status „Ausstehend“ des Ereignisprotokolls wird durch die Variable mUploadRequested angegeben. Da diese Funktion von mehreren Threads aufgerufen werden kann, muss mUploadRequested in kleinstmöglichen Schritten gelesen und festgelegt werden, um zu vermeiden, dass vor dem Senden der Benachrichtigung ein redundantes LoggingFlushHandler geplant wird.

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

SerializeEvents

WEAVE_ERROR SerializeEvents(
  TLVWriter & writer
)

Weave-Ereignisse aller Wichtigkeitstypen serialisieren.

Serialisiert die Ereignisse in WeaveCircularTLVBuffer und die zugehörigen Status in den bereitgestellten Zwischenspeicher.

Diese Methode ist für Geräte vorgesehen, die im Ruhezustand keinen RAM behalten, sodass Ereignisse vor dem Ruhemodus gespeichert werden und der Verlust von Ereignissen verhindert wird.

SetBDXUploader

void SetBDXUploader(
  LogBDXUpload *inUploader
)

SetExchangeManager

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

Legen Sie den WeaveExchangeManager fest, der mit diesem Logging-Subsystem verwendet werden soll.

Auf einigen Plattformen muss dies möglicherweise getrennt von CreateLoggingManagement() erfolgen.

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
)

SkipEvent

void SkipEvent(
  EventLoadOutContext *aContext
)

Hilfsfunktion, mit der das Schreiben eines Ereignisses übersprungen wird, das einer zugewiesenen Ereignis-ID entspricht.

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

ThrottleLogger

void ThrottleLogger(
  void
)

ThrottleLogging hebt die geltende Protokollebene auf die Produktionsebene an.

UnregisterEventCallbackForImportance

void UnregisterEventCallbackForImportance(
  ImportanceType inImportance,
  event_id_t inEventID
)

Die öffentliche API zum Aufheben der Registrierung einer Reihe extern gespeicherter Ereignisse

Wenn Sie die Registrierung des Callbacks aufheben, kann LoggingManagement den Callback für eine Reihe von Ereignissen nicht mehr aufrufen. LoggingManagement sendet diese Ereignis-IDs nicht mehr an Abonnenten.

Dabei soll jeweils eine Funktion eine Reihe von Ereignissen bereitstellen. Wenn eine neue Gruppe von Ereignissen mit derselben Funktion registriert werden muss, sollte die Registrierung des Callbacks zuerst aufgehoben und dann noch einmal registriert werden. Das bedeutet, dass die ursprünglichen Ereignisse nicht mehr abgerufen werden können.

Diese Funktion ist ohne Bedingungen erfolgreich. Wenn der Callback noch nie registriert oder die Registrierung bereits aufgehoben wurde, handelt es sich um einen Null-Vorgang.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inEventID
Eine Ereignis-ID, die einem Ereignis im externen Ereignisblock entspricht, dessen Registrierung aufgehoben werden soll.

UnthrottleLogger

void UnthrottleLogger(
  void
)

UnthrottleLogging stellt die aktuelle Protokollebene auf die konfigurierte Protokollierungsebene wieder her.

Öffentliche statische Funktionen

CreateLoggingManagement

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

Erstellen Sie das Objekt LoggingManagement und initialisieren Sie das Subsystem für die Logging-Verwaltung mit den bereitgestellten Ressourcen.

Initialisieren Sie LoggingManagement mit einem Array von LogStorageResources. Das Array muss eine Ressource für jede gültige Prioritätsstufe bereitstellen. Die Elemente des Arrays müssen den numerischen Wert bzw. die Wichtigkeitsstufe abnehmen. Das erste Element im Array entspricht den Ressourcen, die den kritischsten Ereignissen zugewiesen sind, und das letzte Element entspricht den am wenigsten wichtigen Ereignissen.

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

DestroyLoggingManagement

void DestroyLoggingManagement(
  void
)

Führen Sie alle Aktionen aus, die beim Herunterfahren erforderlich sind.

GetInstance

LoggingManagement & GetInstance(
  void
)