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-Konstruktor.
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 Ereignisdaten gemäß dem Ereignisprotokollierungsprotokoll.
CancelShutdownInProgress(void)
void
Setzen Sie das Flag „mHerunterfahrenInProgress“ auf „false“.
CheckShouldRunWDM(void)
bool
Entscheiden Sie anhand der Anzahl der Byte, die im Ereignispuffer nicht für den Upload geplant sind, ob Ereignisse ausgelagert werden sollen.
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
Eine Funktion zum Abrufen von Ereignissen mit bestimmter Wichtigkeit ab einer bestimmten Ereignis-ID.
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)
Hilfsmethode zur Untersuchung der speicherinternen Protokollzwischenspeicher.
GetFirstEventID(ImportanceType inImportance)
Rufen Sie die erste Ereignis-ID ab, die derzeit für eine bestimmte Prioritätsstufe gespeichert ist.
GetLastEventID(ImportanceType inImportance)
Ruft die zuletzt aktualisierte ID für eine bestimmte Prioritätsstufe ab.
IsShutdownInProgress(void)
bool
Prüfen Sie das Flag „mHerunterfahrenInProgress“.
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)
Ereignis über einen Rückruf mit Optionen protokollieren.
MarkShutdownInProgress(void)
void
Setzen Sie das Flag „mHerunterfahrenInProgress“ 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)
Eine Log-Auslagerungsaufgabe planen.
SerializeEvents(TLVWriter & writer)
Serialisiert die Weave-Ereignisse aller Wichtigkeitstypen.
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 zum Überspringen des Schreibens eines Ereignisses, das einer zugewiesenen Ereignis-ID entspricht.
ThrottleLogger(void)
void
ThrottleLogger erhöht die effektive Protokollebene auf die Produktionsebene.
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
void
Die öffentliche API zum Aufheben der Registrierung einer Reihe extern gespeicherter Ereignisse.
UnthrottleLogger(void)
void
UnthrottleLogger stellt die effektive Protokollebene auf die konfigurierte Protokollebene 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 Logging-Verwaltungssubsystem mit den bereitgestellten Ressourcen.
DestroyLoggingManagement(void)
void
Beim Herunterfahren alle erforderlichen Aktionen ausführen.
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 Ereignisdaten gemäß dem Ereignisprotokollierungsprotokoll.

Details
Parameter
[in,out] aContext
EventLoadOutContext, das mit zustandsorientierten Informationen für den Zwischenspeicher initialisiert wird. Der Status wird von BlitEvent in diesem Kontext aktualisiert und beibehalten.
[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 zur Beschreibung des Zeitstempels und anderer Tags, die für dieses Ereignis relevant sind.

CancelShutdownInProgress

void CancelShutdownInProgress(
  void
)

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

CheckShouldRunWDM

bool CheckShouldRunWDM(
  void
)

Entscheiden Sie anhand der Anzahl der Byte, die im Ereignispuffer nicht für den Upload geplant sind, ob Ereignisse 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 Bytezahl geschrieben hat, gibt die Funktion an, dass 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 mit bestimmter Wichtigkeit ab einer bestimmten Ereignis-ID.

Mit einem Wert für nl::Weave::TLV::TLVWriter, einem Wichtigkeitstyp und einer Ereignis-ID ruft die Funktion Ereignisse mit einer bestimmten Wichtigkeit seit dem angegebenen Ereignis ab. Die Funktion ruft so lange Ereignisse ab, bis der Speicherplatz in nl::Weave::TLV::TLVWriter oder im Protokoll ausgeht. Die Funktion beendet das Schreiben von Ereignissen an der Ereignisgrenze.

Details
Parameter
[in] ioWriter
Der Writer, der zum Speichern von Ereignissen verwendet werden soll
[in] inImportance
Die Bedeutung abzurufender Ereignisse
[in,out] ioEventID
Bei Eingabe die ID des Ereignisses, das unmittelbar vor dem abgerufenen Ereignis liegt. Nach 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ätsebene erreicht
WEAVE_ERROR_NO_MEMORY
Für die Funktion ist im ioWriter kein Speicherplatz mehr verfügbar. Im Log sind weitere Ereignisse verfügbar.
WEAVE_ERROR_BUFFER_TOO_SMALL
Für die Funktion ist im ioWriter kein Speicherplatz mehr verfügbar. Im Log sind weitere Ereignisse 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 in das Log geschriebenen Byte.

GetEventReader

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

Hilfsmethode zur Untersuchung der speicherinternen Protokollzwischenspeicher.

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 den Leser. Beachten Sie, dass die anfängliche Wichtigkeit in diesem Fall etwas kontraproduktiv ist: Wichtige Ereignisse teilen sich den Puffer mit weniger wichtigen Ereignissen, zusätzlich zu ihren dedizierten Puffern. Daher durchläuft der Leser die wenigsten Daten, wenn die Wichtigkeit der Fehlerbehebung übergeben wird.
Rückgabe
WEAVE_NO_ERROR Unbedingt.

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 Erste aktuell gespeicherte Ereignis-ID für diese Ereigniswichtigkeit

GetLastEventID

event_id_t GetLastEventID(
  ImportanceType inImportance
)

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

Details
Parameter
inImportance
Wichtigkeitsstufe
Rückgabe
„event_id_t“ der zuletzt freigegebenen Ereignis-ID für diese Ereigniswichtigkeit

IsShutdownInProgress

bool IsShutdownInProgress(
  void
)

Prüfen Sie das Flag „mHerunterfahrenInProgress“.

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
)

Ereignis über einen Rückruf mit Optionen protokollieren.

Die Funktion protokolliert ein Ereignis, das als EventWriterFunct und als app-spezifischer appData-Kontext dargestellt wird. Die Funktion schreibt die Ereignismetadaten und ruft inEventWriter mit einer nl::Weave::TLV::TLVWriter-Referenz und dem inAppData-Kontext auf, sodass der Nutzercode die Ereignisdaten direkt im Ereignisprotokoll ausgeben kann. Diese Form der Ereignisprotokollierung minimiert den Speicherverbrauch, da Ereignisdaten direkt in den Zielpuffer serialisiert werden. Die Ereignisdaten MÜSSEN Kontexttags enthalten, die innerhalb des durch inProfileID und inEventType angegebenen Schemas interpretiert werden müssen. Das Tag des ersten Elements wird ignoriert. Es wird vom Ereignisprotokollierungssystem durch das Tag eventData ersetzt.

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 0 als resultierende Ereignis-ID zurück.

Diese Variante des Aufrufs ermöglicht dem Aufrufer, eine beliebige Kombination von EventOptions festzulegen:

  • Zeitstempel ist, wenn 0 standardmäßig die aktuelle Uhrzeit zum Zeitpunkt des Aufrufs ist,
  • „root“-Abschnitt der Ereignisquelle (Ereignisquelle und Trait-ID). Wenn dieser Wert NULL ist, wird standardmäßig das aktuelle Gerät verwendet. Das Ereignis wird als mit dem Gerät verknüpft gekennzeichnet, das den Aufruf durchführt.
  • eine zugehörige Ereignis-ID zum Gruppieren von Ereignis-IDs. Wenn die zugehörige Ereignis-ID 0 ist, wird das Ereignis als nicht mit anderen Ereignissen verknüpft gekennzeichnet.
  • 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 aufgerufen werden soll, 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-Konstruktor.

Initialisieren Sie LoggingManagement mit einem Array von LogStorageResources. Das Array muss eine Ressource für jede gültige Wichtigkeitsstufe bereitstellen, die Elemente des Arrays müssen einen aufsteigenden numerischen Wert von Bedeutung (und abnehmend) haben. Das erste Element im Array entspricht den Ressourcen, die für die kritischsten Ereignisse 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 inLogStorageResources-Array
[in] inLogStorageResources
Ein Array von LogStorageResources für jede Wichtigkeitsstufe.

LoggingManagement

 LoggingManagement(
  void
)

LoggingManagement-Standardkonstruktor.

Wird in erster Linie bereitgestellt, um den Compiler zufriedenzustellen.

Details
Rückgabe

MarkShutdownInProgress

void MarkShutdownInProgress(
  void
)

Setzen Sie das Flag „mHerunterfahrenInProgress“ 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 im Format FetchExternalEventsFunct. Diese API setzt voraus, dass die Plattform bei der Registrierung die Anzahl der Veranstaltungen kennt. Auch für das interne Arbeiten muss diese Zahl konstant sein. Da die Plattform mit dieser API keine bestimmten Ereignis-IDs registrieren kann, wird verhindert, dass die Plattform Ereignisse dauerhaft speichert (zumindest mit eindeutigen Ereignis-IDs).

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

Diese Variante der Funktion sollte verwendet werden, wenn der externe Anbieter sowohl benachrichtigt werden möchte, wenn die Ereignisse an einen Abonnenten gesendet wurden, als auch, 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 informiert. Der externe Anbieter kann für dieselbe Ereignis-ID mehrmals benachrichtigt werden. Es gibt keine spezifischen Einschränkungen für den Handler, insbesondere kann der Handler die Registrierung externer Ereignis-IDs aufheben.

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

Der Zeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird er mit Start- und Endereignis-IDs gefüllt, die dem Callback zugewiesen sind. Dieser Zeiger sollte verwendet werden, um die Registrierung der Ereignisgruppe aufzuheben.

Weitere Informationen dazu, was der Callback implementieren muss, finden Sie in der Dokumentation zu FetchExternalEventsFunct.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inFetchCallback
Callback zum Registrieren für das Abrufen externer Ereignisse
[in] inNotifyCallback
Rückruf zur Registrierung für Zustellbenachrichtigungen
[in] inEvictedCallback
Callback zur Registrierung für eine Entfernungsbenachrichtigung
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Zeiger auf „event_id_t“. Bei erfolgreicher Registrierung externer Ereignisse 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 Callback-Slots mehr verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Null-Funktionsrückruf 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 im Format FetchExternalEventsFunct. Diese API setzt voraus, dass die Plattform bei der Registrierung die Anzahl der Veranstaltungen kennt. Auch für das interne Arbeiten muss diese Zahl konstant sein. Da die Plattform mit dieser API keine bestimmten Ereignis-IDs registrieren kann, wird verhindert, dass die Plattform Ereignisse dauerhaft speichert (zumindest mit eindeutigen Ereignis-IDs).

Der Callback wird immer dann aufgerufen, wenn ein Abonnent versucht, Ereignis-IDs innerhalb des Bereichs abzurufen, beliebig oft, 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, aber nicht, 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 informiert. Der externe Anbieter kann für dieselbe Ereignis-ID mehrmals benachrichtigt werden. Es gibt keine spezifischen Einschränkungen für den Handler, insbesondere kann der Handler die Registrierung externer Ereignis-IDs aufheben.

Der Zeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird er mit Start- und Endereignis-IDs gefüllt, die dem Callback zugewiesen sind. Dieser Zeiger sollte verwendet werden, um die Registrierung der Ereignisgruppe aufzuheben.

Weitere Informationen dazu, was der Callback implementieren muss, finden Sie in der Dokumentation zu FetchExternalEventsFunct.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inCallback
Callback zum Registrieren für das Abrufen externer Ereignisse
[in] inNotifyCallback
Rückruf zur Registrierung für Zustellbenachrichtigungen
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Zeiger auf „event_id_t“. Bei erfolgreicher Registrierung externer Ereignisse 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 Callback-Slots mehr verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Null-Funktionsrückruf 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 im Format FetchExternalEventsFunct. Diese API setzt voraus, dass die Plattform bei der Registrierung die Anzahl der Veranstaltungen kennt. Auch für das interne Arbeiten muss diese Zahl konstant sein. Da die Plattform mit dieser API keine bestimmten Ereignis-IDs registrieren kann, wird verhindert, dass die Plattform Ereignisse dauerhaft speichert (zumindest mit eindeutigen Ereignis-IDs).

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

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

Der Zeiger auf die Struktur ExternalEvents ist bei einem Fehler NULL. Andernfalls wird er mit Start- und Endereignis-IDs gefüllt, die dem Callback zugewiesen sind. Dieser Zeiger sollte verwendet werden, um die Registrierung der Ereignisgruppe aufzuheben.

Weitere Informationen dazu, was der Callback implementieren muss, finden Sie in der Dokumentation zu FetchExternalEventsFunct.

Details
Parameter
[in] inImportance
Wichtigkeitsstufe
[in] inCallback
Callback zum Registrieren für das Abrufen externer Ereignisse
[in] inNumEvents
Anzahl der Ereignisse in dieser Gruppe
[out] outLastEventID
Zeiger auf „event_id_t“. Bei erfolgreicher Registrierung externer Ereignisse 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 Callback-Slots mehr verfügbar sind.
WEAVE_ERROR_INVALID_ARGUMENT
Null-Funktionsrückruf oder keine zu registrierenden Ereignisse.
WEAVE_NO_ERROR
Bei Erfolg.

ScheduleFlushIfNeeded

WEAVE_ERROR ScheduleFlushIfNeeded(
  bool inFlushRequested
)

Eine Log-Auslagerungsaufgabe planen.

Die Funktion entscheidet, ob ein Aufgabenauslagerungsprozess geplant wird. Wenn ja, plant sie die LoggingFlushHandler für die asynchrone Ausführung im Weave-Thread ein.

Die Entscheidung, eine Bereinigung zu planen, hängt von drei Faktoren ab:

eine explizite Anfrage zum Leeren des Puffers

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

Gibt an, ob es ein bereits ausstehendes Anfrage-Flush-Anfrageereignis gibt.

Die explizite Anfrage zum Planen eines Leerens 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 starten zu müssen. Je nach Auslagerungsstrategie können auch zusätzliche Trigger wie die minimale und maximale Zeit zwischen 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 atomar gelesen und festgelegt werden, um die Planung eines redundanten LoggingFlushHandler vor dem Senden der Benachrichtigung zu vermeiden.

Details
Parameter
inRequestFlush
Boolescher Wert, der angibt, ob die Leerung unabhängig von der internen Richtlinie zur Pufferverwaltung 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
)

Serialisiert die Weave-Ereignisse aller Wichtigkeitstypen.

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

Diese Methode ist für Geräte gedacht, die im Ruhemodus keinen RAM-Speicher benötigen. Sie ermöglichen das Speichern von Ereignissen vor dem Wechsel in den Ruhemodus und verhindern so den Verlust von Ereignissen.

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() oben 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 zum Überspringen des Schreibens eines Ereignisses, das einer zugewiesenen Ereignis-ID entspricht.

Details
Parameter
[in,out] aContext
EventLoadOutContext, das mit zustandsorientierten Informationen für den Zwischenspeicher initialisiert wird. Der Status wird von BlitEvent in diesem Kontext aktualisiert und beibehalten.

ThrottleLogger

void ThrottleLogger(
  void
)

ThrottleLogger erhöht die effektive Protokollebene auf die Produktionsebene.

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.

Ziel ist es, dass jeweils eine Funktion eine Reihe von Ereignissen bereitstellt. Wenn neue Ereignisse mit derselben Funktion registriert werden müssen, muss die Registrierung des Callbacks zunächst aufgehoben und dann erneut registriert werden. Das bedeutet, dass die ursprünglichen Ereignisse nicht mehr abgerufen werden können.

Diese Funktion ist bedingungslos erfolgreich. Wenn der Callback noch nie registriert oder nicht registriert wurde, handelt es sich um einen managementfreien Vorgang.

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

UnthrottleLogger

void UnthrottleLogger(
  void
)

UnthrottleLogger stellt die effektive Protokollebene auf die konfigurierte Protokollebene 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 Logging-Verwaltungssubsystem mit den bereitgestellten Ressourcen.

Initialisieren Sie LoggingManagement mit einem Array von LogStorageResources. Das Array muss eine Ressource für jede gültige Wichtigkeitsstufe bereitstellen, die Elemente des Arrays müssen einen aufsteigenden numerischen Wert von Bedeutung (und abnehmend) haben. Das erste Element im Array entspricht den Ressourcen, die für die kritischsten Ereignisse 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 inLogStorageResources-Array
[in] inLogStorageResources
Ein Array von LogStorageResources für jede Wichtigkeitsstufe.

DestroyLoggingManagement

void DestroyLoggingManagement(
  void
)

Beim Herunterfahren alle erforderlichen Aktionen ausführen.

GetInstance

LoggingManagement & GetInstance(
  void
)