nl:: Weave:: Profiles:: DataManagement_Current:: LoggingManagement
#include <src/lib/profiles/data-management/Current/LoggingManagement.h>
Classe permettant de gérer les journaux d'événements en mémoire.
Résumé
Constructeurs et destructeurs |
|
---|---|
LoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
|
|
LoggingManagement(void)
|
Fonctions publiques |
|
---|---|
BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Fonction d'assistance permettant d'écrire des données et des en-têtes d'événements conformément au protocole de journalisation des événements.
|
CancelShutdownInProgress(void)
|
void
Définissez l'indicateur mShutdownInProgress sur false.
|
CheckShouldRunWDM(void)
|
bool
Déchargez ou non les événements en fonction du nombre d'octets dans les tampons d'événements dont l'importation n'est pas planifiée.
|
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
|
Fonction permettant de récupérer des événements d'importance spécifiée depuis un ID d'événement spécifié.
|
GetBytesWritten(void) const
|
uint32_t
Obtenez le nombre total d'octets écrits (pour toutes les importances d'événements) dans ce journal depuis son instanciation.
|
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
|
Méthode d'assistance utile pour examiner les tampons de journal en mémoire.
|
GetFirstEventID(ImportanceType inImportance)
|
Extrayez le premier ID d'événement actuellement stocké pour un niveau d'importance particulier.
|
GetLastEventID(ImportanceType inImportance)
|
Récupérez le dernier ID de fournisseur pour un niveau d'importance particulier.
|
IsShutdownInProgress(void)
|
bool
Vérifiez l'indicateur mShutdownInProgress.
|
IsValid(void)
|
bool
IsValid indique si l'instance LoggingManagement est valide.
|
LoadEvents(TLVReader & reader)
|
Charger l'événement Weave précédemment persistant.
|
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
|
Consigner un événement via un rappel, avec des options.
|
MarkShutdownInProgress(void)
|
void
Définissez l'indicateur mShutdownInProgress sur 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 publique permettant d'enregistrer un ensemble d'événements stockés en externe.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
API publique permettant d'enregistrer un ensemble d'événements stockés en externe.
|
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
|
API publique permettant d'enregistrer un ensemble d'événements stockés en externe.
|
ScheduleFlushIfNeeded(bool inFlushRequested)
|
Planifier une tâche de déchargement des journaux
|
SerializeEvents(TLVWriter & writer)
|
Sérialisez les événements Weave de tous les types d'importance.
|
SetBDXUploader(LogBDXUpload *inUploader)
|
void
|
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
|
Définissez le gestionnaire WeaveExchangeManager à utiliser avec ce sous-système de journalisation.
|
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
|
|
SkipEvent(EventLoadOutContext *aContext)
|
void
Fonction d'assistance permettant d'ignorer l'écriture d'un événement correspondant à un ID d'événement alloué.
|
ThrottleLogger(void)
|
void
ThrottleLogger élève le niveau de journalisation effective au niveau Production.
|
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
|
void
API publique permettant d'annuler l'enregistrement d'un ensemble d'événements stockés en externe.
|
UnthrottleLogger(void)
|
void
UnthrottleLogger restaure le niveau de journalisation effectif au niveau de journalisation configuré.
|
Fonctions statiques publiques |
|
---|---|
CreateLoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
|
void
Créez l'objet LoggingManagement et initialisez le sous-système de gestion des journaux avec les ressources fournies.
|
DestroyLoggingManagement(void)
|
void
Effectuer toutes les actions nécessaires à l'arrêt.
|
GetInstance(void)
|
Fonctions publiques
BlitEvent
WEAVE_ERROR BlitEvent( EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Fonction d'assistance permettant d'écrire des données et des en-têtes d'événements conformément au protocole de journalisation des événements.
Détails | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
CancelShutdownInProgress
void CancelShutdownInProgress( void )
Définissez l'indicateur mShutdownInProgress sur false.
CheckShouldRunWDM
bool CheckShouldRunWDM( void )
Déchargez ou non les événements en fonction du nombre d'octets dans les tampons d'événements dont l'importation n'est pas planifiée.
Le comportement de la fonction est contrôlé par la constante WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD. Si le système a écrit plus d'octets depuis la dernière fois qu'une notification WDM a été envoyée, la fonction indique qu'il est temps de déclencher NotificationEngine.
Détails | |||||
---|---|---|---|---|---|
Valeurs renvoyées |
|
FetchEventsSince
WEAVE_ERROR FetchEventsSince( nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID )
Fonction permettant de récupérer des événements d'importance spécifiée depuis un ID d'événement spécifié.
Avec nl::Weave::TLV::TLVWriter, un type d'importance et un ID d'événement, la fonction extrait les événements d'importance spécifiée depuis l'événement spécifié. La fonction continue de récupérer les événements jusqu'à ce qu'elle manque d'espace dans nl::Weave::TLV::TLVWriter ou dans le journal. La fonction met fin à l'écriture de l'événement à la limite de l'événement.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs renvoyées |
|
GetBytesWritten
uint32_t GetBytesWritten( void ) const
Obtenez le nombre total d'octets écrits (pour toutes les importances d'événements) dans ce journal depuis son instanciation.
Détails | |
---|---|
Renvoie |
Nombre d'octets écrits dans le journal.
|
GetEventReader
WEAVE_ERROR GetEventReader( nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance )
Méthode d'assistance utile pour examiner les tampons de journal en mémoire.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Renvoie |
WEAVE_NO_ERROR Sans condition.
|
GetFirstEventID
event_id_t GetFirstEventID( ImportanceType inImportance )
Extrayez le premier ID d'événement actuellement stocké pour un niveau d'importance particulier.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
event_id_t Premier ID d'événement actuellement stocké pour l'importance de cet événement
|
GetLastEventID
event_id_t GetLastEventID( ImportanceType inImportance )
Extrayez le dernier ID de fournisseur pour un niveau d'importance particulier.
Détails | |||
---|---|---|---|
Paramètres |
|
||
Renvoie |
event_id_t le dernier ID d'événement commercialisé pour l'importance de cet événement
|
IsShutdownInProgress
bool IsShutdownInProgress( void )
Vérifiez l'indicateur mShutdownInProgress.
IsValid
bool IsValid( void )
IsValid indique si l'instance LoggingManagement est valide.
Détails | |||||
---|---|---|---|---|---|
Valeurs renvoyées |
|
LoadEvents
WEAVE_ERROR LoadEvents( TLVReader & reader )
Charger l'événement Weave précédemment persistant.
LogEvent
event_id_t LogEvent( const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions )
Consigner un événement par rappel, avec des options.
La fonction consigne un événement représenté sous la forme d'un EventWriterFunct et d'un contexte appData
spécifique à l'application. La fonction écrit les métadonnées de l'événement et appelle inEventWriter
avec une référence nl::Weave::TLV::TLVWriter et un contexte inAppData
afin que le code utilisateur puisse émettre les données d'événement directement dans le journal des événements. Cette forme de journalisation des événements minimise la consommation de mémoire, car les données d'événement sont sérialisées directement dans le tampon cible. Les données d'événement DOIVENT contenir des balises de contexte à interpréter dans le schéma identifié par inProfileID
et inEventType
. La balise du premier élément est ignorée. le système de journalisation des événements
le remplacera par le tag eventData.
L'événement est consigné si l'importance du schéma dépasse le seuil de journalisation spécifié dans LoggingConfiguration. Si l'importance de l'événement n'atteint pas le seuil actuel, il est supprimé, et la fonction renvoie 0
comme ID d'événement obtenu.
Cette variante de l'appel permet à l'appelant de définir n'importe quelle combinaison de EventOptions
:
- timestamp : lorsque 0 est défini par défaut sur l'heure actuelle au moment de l'appel,
- "racine" section de la source d'événement (source de l'événement et ID de caractéristique) ; Si la valeur est NULL, l'appareil actuel est utilisé par défaut. l'événement est marqué comme relatif à l'appareil qui effectue l'appel ;
- un identifiant d'événement associé pour regrouper les identifiants d'événements ; Lorsque l'ID de l'événement associé est 0, l'événement est marqué comme n'étant associé à aucun autre événement.
- urgence ; non urgent par défaut.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Renvoie |
event_id_t ID de l'événement si celui-ci a été écrit dans le journal (0 dans le cas contraire).
|
LoggingManagement
LoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Initialisez LoggingManagement avec un tableau de LogStorageResources. Le tableau doit fournir une ressource pour chaque niveau d'importance valide, les éléments du tableau doivent être sous forme de valeur numérique d'importance croissante (et d'importance décroissante) le premier élément du tableau correspond aux ressources allouées aux événements les plus critiques et le dernier aux événements les moins importants.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
LoggingManagement
LoggingManagement( void )
Fourni principalement pour rendre le compilateur satisfait.
Détails | |
---|---|
Renvoie |
MarkShutdownInProgress
void MarkShutdownInProgress( void )
Définissez l'indicateur mShutdownInProgress sur 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 publique permettant d'enregistrer un ensemble d'événements stockés en externe.
Enregistrez un rappel au format FetchExternalEventsFunct. Cette API nécessite que la plate-forme connaisse le nombre d'événements lors de l'inscription. Le fonctionnement interne nécessite également que ce nombre soit constant. Étant donné que cette API ne permet pas à la plate-forme d'enregistrer des ID d'événement spécifiques, elle empêche le stockage persistant des événements (au moins avec des ID d'événements uniques).
Le rappel est appelé chaque fois qu'un abonné tente de récupérer des ID d'événement compris dans la plage définie, un nombre illimité de fois, jusqu'à ce que l'enregistrement soit annulé.
Cette variante de la fonction doit être utilisée lorsque le fournisseur externe souhaite être averti lorsque les événements ont été transmis à un abonné et que l'objet d'événements externes est évincé.
Lorsque les événements sont distribués, le fournisseur externe en est informé, ainsi que l'ID de nœud du destinataire et l'ID du dernier événement envoyé à ce destinataire. Notez que le fournisseur externe peut recevoir plusieurs notifications pour le même ID d'événement. Il n'existe pas de restrictions spécifiques sur le gestionnaire. En particulier, celui-ci peut annuler l'enregistrement des ID d'événements externes.
Si l'objet des événements externes est évincé des tampons de journaux, le fournisseur externe est averti avec une copie de l'objet des événements externes.
Le pointeur vers la structure ExternalEvents aura la valeur NULL en cas d'échec. Sinon, il sera renseigné avec les ID d'événement de début et de fin attribués au rappel. Utilisez ce pointeur pour annuler l'enregistrement de l'ensemble d'événements.
Pour en savoir plus sur ce que le rappel doit implémenter, consultez la documentation sur FetchExternalEventsFunct.
Détails | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||||
Valeurs renvoyées |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID )
API publique permettant d'enregistrer un ensemble d'événements stockés en externe.
Enregistrez un rappel au format FetchExternalEventsFunct. Cette API nécessite que la plate-forme connaisse le nombre d'événements lors de l'inscription. Le fonctionnement interne nécessite également que ce nombre soit constant. Étant donné que cette API ne permet pas à la plate-forme d'enregistrer des ID d'événement spécifiques, elle empêche le stockage persistant des événements (au moins avec des ID d'événements uniques).
Le rappel est appelé chaque fois qu'un abonné tente de récupérer des ID d'événement compris dans la plage définie, un nombre illimité de fois, jusqu'à ce que l'enregistrement soit annulé.
Cette variante de la fonction doit être utilisée lorsque le fournisseur externe souhaite être averti lorsque les événements ont été transmis à un abonné, mais pas lorsque l'objet d'événements externes est évincé. Lorsque les événements sont distribués, le fournisseur externe en est informé, ainsi que l'ID de nœud du destinataire et l'ID du dernier événement envoyé à ce destinataire. Notez que le fournisseur externe peut recevoir plusieurs notifications pour le même ID d'événement. Il n'existe pas de restrictions spécifiques sur le gestionnaire. En particulier, celui-ci peut annuler l'enregistrement des ID d'événements externes.
Le pointeur vers la structure ExternalEvents aura la valeur NULL en cas d'échec. Sinon, il sera renseigné avec les ID d'événement de début et de fin attribués au rappel. Utilisez ce pointeur pour annuler l'enregistrement de l'ensemble d'événements.
Pour en savoir plus sur ce que le rappel doit implémenter, consultez la documentation sur FetchExternalEventsFunct.
Détails | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||||
Valeurs renvoyées |
|
RegisterEventCallbackForImportance
WEAVE_ERROR RegisterEventCallbackForImportance( ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID )
API publique permettant d'enregistrer un ensemble d'événements stockés en externe.
Enregistrez un rappel au format FetchExternalEventsFunct. Cette API nécessite que la plate-forme connaisse le nombre d'événements lors de l'inscription. Le fonctionnement interne nécessite également que ce nombre soit constant. Étant donné que cette API ne permet pas à la plate-forme d'enregistrer des ID d'événement spécifiques, elle empêche le stockage persistant des événements (au moins avec des ID d'événements uniques).
Le rappel est appelé chaque fois qu'un abonné tente de récupérer des ID d'événement compris dans la plage définie, un nombre illimité de fois, jusqu'à ce que l'enregistrement soit annulé.
Cette variante de la fonction doit être utilisée lorsque le fournisseur externe souhaite une notification, ni lorsque les événements externes ont été transmis ni lorsque l'objet des événements externes est évincé.
Le pointeur vers la structure ExternalEvents aura la valeur NULL en cas d'échec. Sinon, il sera renseigné avec les ID d'événement de début et de fin attribués au rappel. Utilisez ce pointeur pour annuler l'enregistrement de l'ensemble d'événements.
Pour en savoir plus sur ce que le rappel doit implémenter, consultez la documentation sur FetchExternalEventsFunct.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs renvoyées |
|
ScheduleFlushIfNeeded
WEAVE_ERROR ScheduleFlushIfNeeded( bool inFlushRequested )
Planifier une tâche de déchargement des journaux
La fonction décide si un processus de déchargement de tâche doit être planifié. Si tel est le cas, elle planifie l'exécution asynchrone de LoggingFlushHandler
sur le thread Weave.
La décision de planifier un vidage dépend de trois facteurs:
une requête explicite pour vider le tampon
L'état du tampon des événements et la quantité de données qui n'ont pas encore été synchronisées avec les clients de l'événement
si un événement de demande de suppression de demande est déjà en attente.
La requête explicite de planification d'un vidage est transmise via un paramètre d'entrée.
Le vidage automatique est généralement planifié lorsque les tampons d'événements contiennent suffisamment de données pour justifier le démarrage d'un nouveau déchargement. D'autres déclencheurs, tels que les délais minimal et maximal entre les déchargements, peuvent également être pris en compte en fonction de la stratégie de déchargement.
L'état "En attente" du journal des événements est indiqué par la variable mUploadRequested
. Comme cette fonction peut être appelée par plusieurs threads, mUploadRequested
doit être lu et défini de manière atomique, afin d'éviter de programmer une LoggingFlushHandler
redondante avant l'envoi de la notification.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs renvoyées |
|
SerializeEvents
WEAVE_ERROR SerializeEvents( TLVWriter & writer )
Sérialisez les événements Weave de tous les types d'importance.
Sérialise les événements dans WeaveCircularTLVBuffer et les états associés dans le tampon fourni.
Cette méthode est conçue pour les appareils qui ne conservent pas de RAM en veille, ce qui leur permet de conserver les événements avant de se mettre en veille et d'éviter ainsi de perdre des événements.
SetBDXUploader
void SetBDXUploader( LogBDXUpload *inUploader )
SetExchangeManager
WEAVE_ERROR SetExchangeManager( nl::Weave::WeaveExchangeManager *inMgr )
Définissez le gestionnaire WeaveExchangeManager à utiliser avec ce sous-système de journalisation.
Sur certaines plates-formes, cette opération peut être effectuée indépendamment de la méthode CreateLoggingManagement() ci-dessus.
Détails | |||
---|---|---|---|
Paramètres |
|
SetLoggingEndpoint
WEAVE_ERROR SetLoggingEndpoint( event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition )
SkipEvent
void SkipEvent( EventLoadOutContext *aContext )
Fonction d'assistance permettant d'ignorer l'écriture d'un événement correspondant à un ID d'événement alloué.
Détails | |||
---|---|---|---|
Paramètres |
|
ThrottleLogger
void ThrottleLogger( void )
ThrottleLogger élève le niveau de journalisation effective au niveau Production.
UnregisterEventCallbackForImportance
void UnregisterEventCallbackForImportance( ImportanceType inImportance, event_id_t inEventID )
API publique permettant d'annuler l'enregistrement d'un ensemble d'événements stockés en externe.
L'annulation de l'enregistrement du rappel empêche LoggingManagement d'appeler le rappel pour un ensemble d'événements. LoggingManagement n'enverra plus ces ID d'événement aux abonnés.
L'objectif est qu'une fonction diffuse un ensemble d'événements à la fois. Si un nouvel ensemble d'événements doit être enregistré à l'aide de la même fonction, l'enregistrement du rappel doit d'abord être annulé, puis réenregistré. Cela signifie que l'ensemble d'événements d'origine ne peut plus être récupéré.
Cette fonction réussit sans condition. Si le rappel n'a jamais été enregistré ou a déjà été annulé, il s'agit d'une opération no-op.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
UnthrottleLogger
void UnthrottleLogger( void )
UnthrottleLogger restaure le niveau de journalisation effectif au niveau de journalisation configuré.
Fonctions statiques publiques
CreateLoggingManagement
void CreateLoggingManagement( nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources )
Créez l'objet LoggingManagement et initialisez le sous-système de gestion des journaux avec les ressources fournies.
Initialisez LoggingManagement avec un tableau de LogStorageResources. Le tableau doit fournir une ressource pour chaque niveau d'importance valide, les éléments du tableau doivent correspondre à une valeur numérique d'importance croissante (et à une importance décroissante) ; le premier élément du tableau correspond aux ressources allouées aux événements les plus critiques et le dernier aux événements les moins importants.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
DestroyLoggingManagement
void DestroyLoggingManagement( void )
Effectuer toutes les actions nécessaires à l'arrêt.