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

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

मेमोरी इवेंट लॉग को मैनेज करने के लिए क्लास.

खास जानकारी

कंस्ट्रक्टर और डिस्ट्रक्टर

LoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
LoggingManagement कंस्ट्रक्टर.
LoggingManagement(void)
LoggingManagement डिफ़ॉल्ट कंस्ट्रक्टर.

सार्वजनिक फ़ंक्शन

BlitEvent(EventLoadOutContext *aContext, const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
इवेंट लॉगिंग प्रोटोकॉल के अनुसार, इवेंट हेडर और डेटा लिखने के लिए हेल्पर फ़ंक्शन.
CancelShutdownInProgress(void)
void
m शटडाउन इंप्रोग्रेस फ़्लैग को 'गलत है' पर सेट करें.
CheckShouldRunWDM(void)
bool
अपलोड करने के लिए शेड्यूल नहीं किए गए इवेंट बफ़र में बाइट की संख्या के हिसाब से, तय करें कि इवेंट को ऑफ़लोड करना है या नहीं.
FetchEventsSince(nl::Weave::TLV::TLVWriter & ioWriter, ImportanceType inImportance, event_id_t & ioEventID)
किसी खास इवेंट आईडी के बाद से, खास अहमियत वाले इवेंट वापस पाने का फ़ंक्शन.
GetBytesWritten(void) const
uint32_t
इस लॉग के इंस्टैंशिएट होने के बाद से, इस लॉग में लिखे गए बाइट की कुल संख्या (सभी इवेंट के महत्व में) पाएं.
GetEventReader(nl::Weave::TLV::TLVReader & ioReader, ImportanceType inImportance)
इन-मेमोरी लॉग बफ़र की जांच करने के लिए एक हेल्पर तरीका.
GetFirstEventID(ImportanceType inImportance)
अहमियत के किसी खास लेवल के लिए, मौजूदा समय में सेव किया गया पहला इवेंट आईडी फ़ेच करें.
GetLastEventID(ImportanceType inImportance)
अहमियत के किसी खास लेवल के लिए, सबसे हाल ही में बदला गया आईडी फ़ेच करें.
IsShutdownInProgress(void)
bool
m शटडाउन इनप्रोग्रेस फ़्लैग देखें.
IsValid(void)
bool
Isमान्य यह दिखाता है कि LoggingManagement इंस्टेंस मान्य है या नहीं.
LoadEvents(TLVReader & reader)
पहले से मौजूद Weave इवेंट को लोड करें.
LogEvent(const EventSchema & inSchema, EventWriterFunct inEventWriter, void *inAppData, const EventOptions *inOptions)
कॉलबैक के ज़रिए, विकल्पों के साथ इवेंट लॉग करें.
MarkShutdownInProgress(void)
void
m शटडाउन इंप्रोग्रेस फ़्लैग को 'सही है' पर सेट करें.
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)
बाहर से सेव किए गए इवेंट के सेट को रजिस्टर करने के लिए सार्वजनिक एपीआई.
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, NotifyExternalEventsDeliveredFunct inNotifyCallback, size_t inNumEvents, event_id_t *outLastEventID)
बाहर से सेव किए गए इवेंट के सेट को रजिस्टर करने के लिए सार्वजनिक एपीआई.
RegisterEventCallbackForImportance(ImportanceType inImportance, FetchExternalEventsFunct inFetchCallback, size_t inNumEvents, event_id_t *outLastEventID)
बाहर से सेव किए गए इवेंट के सेट को रजिस्टर करने के लिए सार्वजनिक एपीआई.
ScheduleFlushIfNeeded(bool inFlushRequested)
लॉग ऑफ़लोड टास्क शेड्यूल करें.
SerializeEvents(TLVWriter & writer)
Weave के हर तरह के इवेंट को सीरीज़ के तौर पर बनाएं.
SetBDXUploader(LogBDXUpload *inUploader)
void
SetExchangeManager(nl::Weave::WeaveExchangeManager *inMgr)
इस लॉगिंग सबसिस्टम के साथ इस्तेमाल करने के लिए, WeaveExchangeManager को सेट करें.
SetLoggingEndpoint(event_id_t *inEventEndpoints, size_t inNumImportanceLevels, size_t & outLoggingPosition)
SkipEvent(EventLoadOutContext *aContext)
void
किसी दिए गए इवेंट आईडी से जुड़े इवेंट को लिखने की ज़रूरत छोड़ने के लिए हेल्पर फ़ंक्शन.
ThrottleLogger(void)
void
ThrottleLogger, असरदार लॉगिंग लेवल को प्रोडक्शन लेवल तक बढ़ा देता है.
UnregisterEventCallbackForImportance(ImportanceType inImportance, event_id_t inEventID)
void
बाहर से सेव किए गए इवेंट के सेट का रजिस्ट्रेशन रद्द करने के लिए सार्वजनिक एपीआई.
UnthrottleLogger(void)
void
UnthrottleLogger, कॉन्फ़िगर किए गए लॉगिन लेवल को पहले जैसा करता है.

सार्वजनिक स्टैटिक फ़ंक्शन

CreateLoggingManagement(nl::Weave::WeaveExchangeManager *inMgr, size_t inNumBuffers, const LogStorageResources *const inLogStorageResources)
void
LoggingManagement ऑब्जेक्ट बनाएं और दिए गए संसाधनों की मदद से, लॉगिंग मैनेजमेंट सबसिस्टम को शुरू करें.
DestroyLoggingManagement(void)
void
शटडाउन के दौरान ज़रूरी कार्रवाइयां करें.
GetInstance(void)

सार्वजनिक फ़ंक्शन

BlitEvent

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

इवेंट लॉगिंग प्रोटोकॉल के अनुसार, इवेंट हेडर और डेटा लिखने के लिए हेल्पर फ़ंक्शन.

जानकारी
पैरामीटर
[in,out] aContext
EventLoadOutContext, बफ़र के लिए स्टेटफ़ुल जानकारी के साथ शुरू किया जाता है. इस कॉन्टेक्स्ट का इस्तेमाल करके, BlitEvent की मदद से स्टेट को अपडेट और सुरक्षित किया जाता है.
[in] inSchema
इस इवेंट की अहमियत, प्रोफ़ाइल आईडी, और स्ट्रक्चर टाइप के बारे में बताने वाला स्कीमा.
[in] inEventWriter
इवेंट डेटा को क्रम से लगाने के लिए, शुरू किया जाने वाला कॉलबैक.
[in] inAppData
कॉलबैक के लिए ऐप्लिकेशन का कॉन्टेक्स्ट.
[in] inOptions
इस इवेंट से जुड़े टाइमस्टैंप और दूसरे टैग के बारे में जानकारी देने वाले EventOptions.

CancelShutdownInProgress

void CancelShutdownInProgress(
  void
)

m शटडाउन इंप्रोग्रेस फ़्लैग को 'गलत है' पर सेट करें.

CheckShouldRunWDM

bool CheckShouldRunWDM(
  void
)

अपलोड करने के लिए शेड्यूल नहीं किए गए इवेंट बफ़र में बाइट की संख्या के हिसाब से, तय करें कि इवेंट को ऑफ़लोड करना है या नहीं.

फ़ंक्शन का व्यवहार, WEAVE_CONFIG_EVENT_LOGGING_BYTE_THRESHOLD कॉन्सटेंट के ज़रिए कंट्रोल किया जाता है. अगर पिछली बार WDM सूचना भेजे जाने के बाद से सिस्टम ने इस संख्या से ज़्यादा बाइट कोड लिखे हैं, तो फ़ंक्शन बताएगा कि अब NotificationEngine ट्रिगर करने का समय आ गया है.

जानकारी
रिटर्न वैल्यू
true
इवेंट ऑफ़लोड होने चाहिए
false
या फिर

FetchEventsSince

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

किसी खास इवेंट आईडी के बाद से, खास अहमियत वाले इवेंट वापस पाने का फ़ंक्शन.

nl::Weave::TLV::TLVWriter फ़ंक्शन, और इवेंट आईडी दिया गया है. इसकी मदद से, फ़ंक्शन तय किए गए इवेंट के बाद से अहम इवेंट फ़ेच करेगा. फ़ंक्शन तब तक इवेंट फ़ेच करता रहेगा, जब तक कि nl::Weave::TLV::TLVWriter या लॉग में जगह खत्म नहीं हो जाती. फ़ंक्शन, इवेंट की सीमा पर इवेंट लिखने की सुविधा को बंद कर देगा.

जानकारी
पैरामीटर
[in] ioWriter
इवेंट को सेव करने के लिए इस्तेमाल किया जाने वाला लेखक
[in] inImportance
फ़ेच किए जाने वाले इवेंट की अहमियत
[in,out] ioEventID
इनपुट पर, हम जो फ़ेच कर रहे हैं उससे ठीक पहले इवेंट का आईडी. पूरा होने पर, फ़ेच किए गए पिछले इवेंट का आईडी.
रिटर्न वैल्यू
WEAVE_END_OF_TLV
फ़ंक्शन तय किए गए महत्व के स्तर पर उपलब्ध लॉग एंट्री के आखिर में पहुंच गया है
WEAVE_ERROR_NO_MEMORY
ioWriter में फ़ंक्शन के लिए जगह नहीं बची है, लॉग में और इवेंट उपलब्ध हैं.
WEAVE_ERROR_BUFFER_TOO_SMALL
ioWriter में फ़ंक्शन के लिए जगह नहीं बची है, लॉग में और इवेंट उपलब्ध हैं.

GetBytesWritten

uint32_t GetBytesWritten(
  void
) const 

इस लॉग के इंस्टैंशिएट होने के बाद से, इस लॉग में लिखे गए बाइट की कुल संख्या (सभी इवेंट के महत्व में) पाएं.

जानकारी
लौटाए गए सामान
लॉग में लिखे गए बाइट की संख्या.

GetEventReader

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

इन-मेमोरी लॉग बफ़र की जांच करने के लिए एक हेल्पर तरीका.

जानकारी
पैरामीटर
[in,out] ioReader
रीडर के लिए रेफ़रंस, जिसे इवेंट लॉग के बैकिंग स्टोरेज के साथ शुरू किया जाएगा
[in] inImportance
पाठक के लिए शुरुआती अहमियत. ध्यान दें कि इस मामले में शुरुआती महत्व कुछ हद तक आसान नहीं है: ज़्यादा अहम इवेंट, बफ़र के लिए खास तौर पर तय किए गए बफ़र के साथ-साथ कम ज़रूरी इवेंट भी शेयर करते हैं. इस वजह से, डीबग की अहमियत पास होने पर पाठक को सबसे कम डेटा मिलेगा.
लौटाए गए सामान
WEAVE_NO_ERROR बिना किसी शर्त के.

GetFirstEventID

event_id_t GetFirstEventID(
  ImportanceType inImportance
)

अहमियत के किसी खास लेवल के लिए, मौजूदा समय में सेव किया गया पहला इवेंट आईडी फ़ेच करें.

जानकारी
पैरामीटर
inImportance
अहमियत का लेवल
लौटाए गए सामान
event_id_t उस इवेंट के अहमियत के लिए, मौजूदा समय में सेव किया गया पहला इवेंट आईडी

GetLastEventID

event_id_t GetLastEventID(
  ImportanceType inImportance
)

अहमियत के किसी खास लेवल के लिए, सबसे हाल ही में बदला गया आईडी फ़ेच करें.

जानकारी
पैरामीटर
inImportance
अहमियत का लेवल
लौटाए गए सामान
उस इवेंट के महत्व के लिए, event_id_t का सबसे हाल ही में बदला गया इवेंट आईडी

IsShutdownInProgress

bool IsShutdownInProgress(
  void
)

m शटडाउन इनप्रोग्रेस फ़्लैग देखें.

IsValid

bool IsValid(
  void
)

Isमान्य यह दिखाता है कि LoggingManagement इंस्टेंस मान्य है या नहीं.

जानकारी
रिटर्न वैल्यू
true
इंस्टेंस मान्य है (सही बैकिंग स्टोर से शुरू किया गया है)
false
या फिर

LoadEvents

WEAVE_ERROR LoadEvents(
  TLVReader & reader
)

पहले से मौजूद Weave इवेंट को लोड करें.

LogEvent

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

कॉलबैक के ज़रिए, विकल्पों के साथ इवेंट लॉग करें.

यह फ़ंक्शन, EventWriterFunct को दिखाने वाले इवेंट और ऐप्लिकेशन के हिसाब से appData कॉन्टेक्स्ट के तौर पर इवेंट लॉग करता है. यह फ़ंक्शन, इवेंट मेटाडेटा को लिखता है और inEventWriter को nl::Weave::TLV::TLVWriter रेफ़रंस और inAppData कॉन्टेक्स्ट के साथ कॉल करता है, ताकि उपयोगकर्ता कोड, इवेंट डेटा को सीधे इवेंट लॉग में भेज सके. इवेंट लॉगिंग का यह तरीका मेमोरी की खपत को कम करता है, क्योंकि इवेंट डेटा को सीधे टारगेट बफ़र में क्रम से लगाया जाता है. इवेंट डेटा में कॉन्टेक्स्ट टैग होने चाहिए, ताकि inProfileID और inEventType के बताए गए स्कीमा के हिसाब से इसका इस्तेमाल किया जा सके. पहले एलिमेंट का टैग नज़रअंदाज़ कर दिया जाएगा; इवेंट लॉगिंग सिस्टम इसे eventData टैग से बदल देगा.

अगर स्कीमा की अहमियत LoggingConfiguration में बताई गई लॉगिंग थ्रेशोल्ड से ज़्यादा की जाती है, तो इवेंट लॉग किया जाता है. अगर इवेंट की अहमियत मौजूदा थ्रेशोल्ड से कम है, तो उसे हटा दिया जाता है. इसके बाद, फ़ंक्शन, नतीजे के तौर पर मिलने वाले इवेंट आईडी के तौर पर 0 दिखाता है.

बातचीत के इस वैरिएंट की मदद से, कॉल करने वाले (कॉलर) को EventOptions का कोई भी कॉम्बिनेशन सेट करने की अनुमति मिलती है:

  • टाइमस्टैंप, जब कॉल के पॉइंट पर 0 डिफ़ॉल्ट रूप से मौजूदा समय होता है,
  • इवेंट सोर्स का "रूट" सेक्शन (इवेंट सोर्स और Trait ID). अगर NULL होता है, तो यह डिफ़ॉल्ट रूप से मौजूदा डिवाइस पर सेट हो जाता है. इवेंट, कॉल करने वाले डिवाइस से जुड़ा हुआ के तौर पर मार्क किया जाता है,
  • इवेंट आईडी को ग्रुप करने के लिए मिलता-जुलता इवेंट आईडी. उससे मिलते-जुलते इवेंट आईडी के शून्य होने पर, उस इवेंट को 'अन्य इवेंट से जुड़ा नहीं है' के तौर पर मार्क किया जाता है,
  • बहुत ज़रूरी है; डिफ़ॉल्ट रूप से गैर-ज़रूरी है.

जानकारी
पैरामीटर
[in] inSchema
इस इवेंट की अहमियत, प्रोफ़ाइल आईडी, और स्ट्रक्चर टाइप के बारे में बताने वाला स्कीमा.
[in] inEventWriter
इवेंट डेटा को क्रम से लगाने के लिए, शुरू करने के लिए कॉलबैक
[in] inAppData
कॉलबैक के लिए ऐप्लिकेशन का कॉन्टेक्स्ट.
[in] inOptions
इवेंट के मेटाडेटा के लिए विकल्प. शायद शून्य हो.
लौटाए गए सामान
event_id_t अगर इवेंट को लॉग में लिखा गया था, तो इवेंट आईडी, 0 नहीं होता है.

LoggingManagement

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

LoggingManagement कंस्ट्रक्टर.

LogStorageResources के कलेक्शन के साथ, LoggingManagement को शुरू करने के लिए. ऐरे में, अहमियत के हर मान्य लेवल के लिए संसाधन उपलब्ध होने चाहिए. साथ ही, ऐरे के एलिमेंट, अहमियत के बढ़ते हुए न्यूमेरिक वैल्यू वाले फ़ॉर्मैट में होने चाहिए. ऐरे में मौजूद पहला एलिमेंट, सबसे ज़रूरी इवेंट के लिए असाइन किए गए रिसॉर्स से जुड़ा होता है और आखिरी एलिमेंट सबसे कम ज़रूरी इवेंट से जुड़ा होता है.

जानकारी
पैरामीटर
[in] inMgr
WeaveExchangeManager का इस्तेमाल इस लॉगिंग सबसिस्टम के साथ किया जाएगा
[in] inNumBuffers
inLogStorageResources कलेक्शन में एलिमेंट की संख्या
[in] inLogStorageResources
अहमियत के हर लेवल के लिए, LogStorageResources का कलेक्शन.

LoggingManagement

 LoggingManagement(
  void
)

LoggingManagement डिफ़ॉल्ट कंस्ट्रक्टर.

यह मुख्य तौर पर कंपाइलर को खुश करने के लिए दिया जाता है.

जानकारी
लौटाए गए सामान

MarkShutdownInProgress

void MarkShutdownInProgress(
  void
)

m शटडाउन इंप्रोग्रेस फ़्लैग को 'सही है' पर सेट करें.

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
)

बाहर से सेव किए गए इवेंट के सेट को रजिस्टर करने के लिए सार्वजनिक एपीआई.

FetchExternalEventsFunct. इस एपीआई के लिए, प्लैटफ़ॉर्म को रजिस्ट्रेशन के बाद होने वाले इवेंट की संख्या जानना ज़रूरी है. इंटरनल वर्किंग के लिए भी, इस नंबर को कॉन्सटैंट रहना ज़रूरी है. यह एपीआई, प्लैटफ़ॉर्म को किसी खास इवेंट आईडी को रजिस्टर करने की अनुमति नहीं देता. इसलिए, यह प्लैटफ़ॉर्म को इवेंट (कम से कम यूनीक इवेंट आईडी के साथ) को लगातार सेव करने से रोकता है.

जब भी कोई सदस्य, रेंज के अंदर इवेंट आईडी फ़ेच करने की कोशिश करेगा, तब कॉलबैक को तब तक कॉल किया जाएगा, जब तक कि उसका रजिस्ट्रेशन रद्द नहीं कर दिया जाता.

फ़ंक्शन के इस वैरिएंट का इस्तेमाल तब करना चाहिए, जब सेवा देने वाली बाहरी कंपनी, सदस्य को इवेंट डिलीवर किए जाने और बाहरी इवेंट ऑब्जेक्ट को हटा देने, दोनों के बारे में सूचना पाना चाहे.

जब इवेंट डिलीवर हो जाते हैं, तो बाहरी सेवा देने वाली कंपनी को इसकी सूचना पाने वाले के नोड आईडी और उसे डिलीवर किए गए पिछले इवेंट के आईडी के साथ दी जाती है. ध्यान दें कि एक ही इवेंट आईडी के लिए, बाहरी कंपनी को कई बार सूचना दी जा सकती है. हैंडलर पर कोई खास पाबंदी नहीं है. खास तौर पर, हैंडलर बाहरी इवेंट आईडी का रजिस्ट्रेशन रद्द कर सकता है.

अगर बाहरी इवेंट ऑब्जेक्ट को लॉग बफ़र से निकाल दिया जाता है, तो बाहरी सेवा देने वाली कंपनी को बाहरी इवेंट ऑब्जेक्ट की एक कॉपी के साथ सूचना दी जाती है.

ऐसा न होने पर, ExternalEvents स्ट्रक्चर का पॉइंटर NULL हो जाएगा. ऐसा न होने पर, कॉलबैक को असाइन किए गए, शुरू और खत्म होने के इवेंट के आईडी से इसकी जानकारी अपने-आप भर जाएगी. इस पॉइंटर का इस्तेमाल, इवेंट के सेट का रजिस्ट्रेशन रद्द करने के लिए किया जाना चाहिए.

कॉलबैक को क्या लागू करना चाहिए, इस बारे में ज़्यादा जानकारी के लिए, FetchExternalEventsFunct के लिए दस्तावेज़ देखें.

जानकारी
पैरामीटर
[in] inImportance
अहमियत का लेवल
[in] inFetchCallback
बाहरी इवेंट फ़ेच करने के लिए, रजिस्टर करने के लिए कॉलबैक करें
[in] inNotifyCallback
डिलीवरी की सूचना पाने के लिए रजिस्टर करने के लिए कॉलबैक करें
[in] inEvictedCallback
निकालने की सूचना के लिए रजिस्टर करने के लिए कॉलबैक
[in] inNumEvents
इस सेट में मौजूद इवेंट की संख्या
[out] outLastEventID
किसी event_id_t का पॉइंटर; बाहरी इवेंट के सफल रजिस्ट्रेशन होने पर, फ़ंक्शन, इवेंट आईडी को बाहरी इवेंट ब्लॉक के आखिरी इवेंट आईडी से संबंधित सेव कर लेगा. पैरामीटर NULL हो सकता है.
रिटर्न वैल्यू
WEAVE_ERROR_NO_MEMORY
अगर कोई और कॉलबैक स्लॉट उपलब्ध नहीं है.
WEAVE_ERROR_INVALID_ARGUMENT
रजिस्टर करने के लिए, शून्य फ़ंक्शन कॉलबैक या कोई इवेंट नहीं है.
WEAVE_NO_ERROR
सफलता पर.

RegisterEventCallbackForImportance

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

बाहर से सेव किए गए इवेंट के सेट को रजिस्टर करने के लिए सार्वजनिक एपीआई.

FetchExternalEventsFunct. इस एपीआई के लिए, प्लैटफ़ॉर्म को रजिस्ट्रेशन के बाद होने वाले इवेंट की संख्या जानना ज़रूरी है. इंटरनल वर्किंग के लिए भी, इस नंबर को कॉन्सटैंट रहना ज़रूरी है. यह एपीआई, प्लैटफ़ॉर्म को किसी खास इवेंट आईडी को रजिस्टर करने की अनुमति नहीं देता. इसलिए, यह प्लैटफ़ॉर्म को इवेंट (कम से कम यूनीक इवेंट आईडी के साथ) को लगातार सेव करने से रोकता है.

जब भी कोई सदस्य, रेंज के अंदर इवेंट आईडी फ़ेच करने की कोशिश करेगा, तब कॉलबैक को तब तक कॉल किया जाएगा, जब तक कि उसका रजिस्ट्रेशन रद्द नहीं कर दिया जाता.

फ़ंक्शन के इस वैरिएंट का इस्तेमाल तब करना चाहिए, जब सेवा देने वाली बाहरी कंपनी, सदस्य को इवेंट डिलीवर किए जाने की सूचना पाना चाहे. हालांकि, बाहरी इवेंट ऑब्जेक्ट को हटाए जाने पर नहीं. जब इवेंट डिलीवर हो जाते हैं, तो बाहरी सेवा देने वाली कंपनी को इसकी सूचना पाने वाले के नोड आईडी और उसे डिलीवर किए गए पिछले इवेंट के आईडी के साथ दी जाती है. ध्यान दें कि एक ही इवेंट आईडी के लिए, बाहरी कंपनी को कई बार सूचना दी जा सकती है. हैंडलर पर कोई खास पाबंदी नहीं है. खास तौर पर, हैंडलर बाहरी इवेंट आईडी का रजिस्ट्रेशन रद्द कर सकता है.

ऐसा न होने पर, ExternalEvents स्ट्रक्चर का पॉइंटर NULL हो जाएगा. ऐसा न होने पर, कॉलबैक को असाइन किए गए, शुरू और खत्म होने के इवेंट के आईडी से इसकी जानकारी अपने-आप भर जाएगी. इस पॉइंटर का इस्तेमाल, इवेंट के सेट का रजिस्ट्रेशन रद्द करने के लिए किया जाना चाहिए.

कॉलबैक को क्या लागू करना चाहिए, इस बारे में ज़्यादा जानकारी के लिए, FetchExternalEventsFunct के लिए दस्तावेज़ देखें.

जानकारी
पैरामीटर
[in] inImportance
अहमियत का लेवल
[in] inCallback
बाहरी इवेंट फ़ेच करने के लिए, रजिस्टर करने के लिए कॉलबैक करें
[in] inNotifyCallback
डिलीवरी की सूचना पाने के लिए रजिस्टर करने के लिए कॉलबैक करें
[in] inNumEvents
इस सेट में मौजूद इवेंट की संख्या
[out] outLastEventID
किसी event_id_t का पॉइंटर; बाहरी इवेंट के सफल रजिस्ट्रेशन होने पर, फ़ंक्शन, इवेंट आईडी को बाहरी इवेंट ब्लॉक के आखिरी इवेंट आईडी से संबंधित सेव कर लेगा. पैरामीटर NULL हो सकता है.
रिटर्न वैल्यू
WEAVE_ERROR_NO_MEMORY
अगर कोई और कॉलबैक स्लॉट उपलब्ध नहीं है.
WEAVE_ERROR_INVALID_ARGUMENT
रजिस्टर करने के लिए, शून्य फ़ंक्शन कॉलबैक या कोई इवेंट नहीं है.
WEAVE_NO_ERROR
सफलता पर.

RegisterEventCallbackForImportance

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

बाहर से सेव किए गए इवेंट के सेट को रजिस्टर करने के लिए सार्वजनिक एपीआई.

FetchExternalEventsFunct. इस एपीआई के लिए, प्लैटफ़ॉर्म को रजिस्ट्रेशन के बाद होने वाले इवेंट की संख्या जानना ज़रूरी है. इंटरनल वर्किंग के लिए भी, इस नंबर को कॉन्सटैंट रहना ज़रूरी है. यह एपीआई, प्लैटफ़ॉर्म को किसी खास इवेंट आईडी को रजिस्टर करने की अनुमति नहीं देता. इसलिए, यह प्लैटफ़ॉर्म को इवेंट (कम से कम यूनीक इवेंट आईडी के साथ) को लगातार सेव करने से रोकता है.

जब भी कोई सदस्य, रेंज के अंदर इवेंट आईडी फ़ेच करने की कोशिश करेगा, तब कॉलबैक को तब तक कॉल किया जाएगा, जब तक कि उसका रजिस्ट्रेशन रद्द नहीं कर दिया जाता.

फ़ंक्शन के इस वैरिएंट का इस्तेमाल तब करना चाहिए, जब बाहरी सेवा देने वाली कंपनी सूचना चाहे, तब भी बाहरी इवेंट डिलीवर न किए गए हों और न ही बाहरी इवेंट ऑब्जेक्ट को हटाया गया हो.

ऐसा न होने पर, ExternalEvents स्ट्रक्चर का पॉइंटर NULL हो जाएगा. ऐसा न होने पर, कॉलबैक को असाइन किए गए, शुरू और खत्म होने के इवेंट के आईडी से इसकी जानकारी अपने-आप भर जाएगी. इस पॉइंटर का इस्तेमाल, इवेंट के सेट का रजिस्ट्रेशन रद्द करने के लिए किया जाना चाहिए.

कॉलबैक को क्या लागू करना चाहिए, इस बारे में ज़्यादा जानकारी के लिए, FetchExternalEventsFunct के लिए दस्तावेज़ देखें.

जानकारी
पैरामीटर
[in] inImportance
अहमियत का लेवल
[in] inCallback
बाहरी इवेंट फ़ेच करने के लिए, रजिस्टर करने के लिए कॉलबैक करें
[in] inNumEvents
इस सेट में मौजूद इवेंट की संख्या
[out] outLastEventID
किसी event_id_t का पॉइंटर; बाहरी इवेंट के सफल रजिस्ट्रेशन होने पर, फ़ंक्शन, इवेंट आईडी को बाहरी इवेंट ब्लॉक के आखिरी इवेंट आईडी से संबंधित सेव कर लेगा. पैरामीटर NULL हो सकता है.
रिटर्न वैल्यू
WEAVE_ERROR_NO_MEMORY
अगर कोई और कॉलबैक स्लॉट उपलब्ध नहीं है.
WEAVE_ERROR_INVALID_ARGUMENT
रजिस्टर करने के लिए, शून्य फ़ंक्शन कॉलबैक या कोई इवेंट नहीं है.
WEAVE_NO_ERROR
सफलता पर.

ScheduleFlushIfNeeded

WEAVE_ERROR ScheduleFlushIfNeeded(
  bool inFlushRequested
)

लॉग ऑफ़लोड टास्क शेड्यूल करें.

यह फ़ंक्शन तय करता है कि किसी टास्क के ऑफ़लोड की प्रोसेस को शेड्यूल करना है या नहीं. अगर हां, तो यह LoggingFlushHandler को Weave थ्रेड पर एसिंक्रोनस तरीके से चलाने के लिए शेड्यूल करता है.

फ़्लश शेड्यूल करने का फ़ैसला इन तीन बातों पर निर्भर करता है:

बफ़र को फ़्लश करने के लिए एक स्पष्ट अनुरोध

इवेंट बफ़र की स्थिति और डेटा की वह मात्रा जो अभी तक इवेंट उपभोक्ता के साथ सिंक नहीं की गई है

क्या कोई अनुरोध फ़्लश अनुरोध इवेंट पहले से लंबित है.

फ़्लश शेड्यूल करने का साफ़ तौर पर अनुरोध, इनपुट पैरामीटर के ज़रिए भेजा जाता है.

आम तौर पर, अपने-आप फ़्लश शेड्यूल तब होता है, जब इवेंट बफ़र में नया ऑफ़लोड शुरू करने के लिए ज़रूरी डेटा हो. ऑफ़लोड की रणनीति के आधार पर, ऑफ़लोड के बीच कम से कम और ज़्यादा से ज़्यादा समय जैसे अन्य ट्रिगर को भी ध्यान में रखा जा सकता है.

इवेंट लॉग की 'मंज़ूरी बाकी है' स्थिति, mUploadRequested वैरिएबल से दिखती है. इस फ़ंक्शन को कई थ्रेड से कॉल किया जा सकता है. इसलिए, mUploadRequested को अपने-आप पढ़ लेना और सेट करना ज़रूरी है, ताकि सूचना भेजने से पहले ग़ैर-ज़रूरी LoggingFlushHandler शेड्यूल न किया जा सके.

जानकारी
पैरामीटर
inRequestFlush
एक बूलियन वैल्यू, जिससे पता चलता है कि इंटरनल बफ़र मैनेजमेंट की नीति के बावजूद, फ़्लश को शेड्यूल किया जाना चाहिए या नहीं.
रिटर्न वैल्यू
WEAVE_ERROR_INCORRECT_STATE
LoggingManagement मॉड्यूल पूरी तरह से शुरू नहीं किया गया है.
WEAVE_NO_ERROR
सफलता पर.

SerializeEvents

WEAVE_ERROR SerializeEvents(
  TLVWriter & writer
)

Weave के हर तरह के इवेंट को सीरीज़ के तौर पर बनाएं.

यह WeaveCircularTLVBuffer और उससे जुड़ी स्थितियों को, दिए गए बफ़र में सीरीज़ के तौर पर दिखाता है.

यह तरीका उन डिवाइसों पर इस्तेमाल किया जाता है जो सोते समय रैम को बनाए नहीं रखते. इससे, उन्हें स्लीप मोड में जाने से पहले, इवेंट को बनाए रखने में मदद मिलती है. इससे, इवेंट खोने की संभावना से बचा जा सकता है

SetBDXUploader

void SetBDXUploader(
  LogBDXUpload *inUploader
)

SetExchangeManager

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

इस लॉगिंग सबसिस्टम के साथ इस्तेमाल करने के लिए, WeaveExchangeManager को सेट करें.

कुछ प्लैटफ़ॉर्म पर, ऐसा ऊपर दिए गए CreateLoggingManagement() से अलग से करना पड़ सकता है.

जानकारी
पैरामीटर
[in] inMgr
WeaveExchangeManager का इस्तेमाल इस लॉगिंग सबसिस्टम के साथ किया जाएगा

SetLoggingEndpoint

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

SkipEvent

void SkipEvent(
  EventLoadOutContext *aContext
)

किसी दिए गए इवेंट आईडी से जुड़े इवेंट को लिखने की ज़रूरत छोड़ने के लिए हेल्पर फ़ंक्शन.

जानकारी
पैरामीटर
[in,out] aContext
EventLoadOutContext, बफ़र के लिए स्टेटफ़ुल जानकारी के साथ शुरू किया जाता है. इस कॉन्टेक्स्ट का इस्तेमाल करके, BlitEvent की मदद से स्टेट को अपडेट और सुरक्षित किया जाता है.

ThrottleLogger

void ThrottleLogger(
  void
)

ThrottleLogger, असरदार लॉगिंग लेवल को प्रोडक्शन लेवल तक बढ़ा देता है.

UnregisterEventCallbackForImportance

void UnregisterEventCallbackForImportance(
  ImportanceType inImportance,
  event_id_t inEventID
)

बाहर से सेव किए गए इवेंट के सेट का रजिस्ट्रेशन रद्द करने के लिए सार्वजनिक एपीआई.

कॉलबैक का रजिस्ट्रेशन रद्द करने पर, LoggingManagement से इवेंट के सेट के लिए कॉलबैक को कॉल नहीं किया जा सकेगा. LoggingManagement अब उन इवेंट आईडी को सदस्यों को नहीं भेजेगा.

इसका मकसद सिर्फ़ एक फ़ंक्शन है, जो एक बार में इवेंट का एक सेट दिखाता है. अगर एक ही फ़ंक्शन का इस्तेमाल करके इवेंट के किसी नए सेट को रजिस्टर करने की ज़रूरत हो, तो पहले कॉलबैक का रजिस्ट्रेशन रद्द किया जाए और फिर उसे फिर से रजिस्टर किया जाए. इसका मतलब है कि इवेंट का मूल सेट अब फ़ेच नहीं किया जा सकता.

यह फ़ंक्शन बिना किसी शर्त के सफल होता है. अगर कॉलबैक को कभी रजिस्टर नहीं किया गया था या पहले से ही रजिस्टर नहीं किया गया था, तो इसका मतलब है कि उसे रजिस्टर नहीं किया गया है.

जानकारी
पैरामीटर
[in] inImportance
अहमियत का लेवल
[in] inEventID
बाहरी इवेंट ब्लॉक में मौजूद किसी भी इवेंट से जुड़ा इवेंट आईडी, जिसका रजिस्ट्रेशन रद्द करना है.

UnthrottleLogger

void UnthrottleLogger(
  void
)

UnthrottleLogger, कॉन्फ़िगर किए गए लॉगिन लेवल को पहले जैसा करता है.

सार्वजनिक स्टैटिक फ़ंक्शन

CreateLoggingManagement

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

LoggingManagement ऑब्जेक्ट बनाएं और दिए गए संसाधनों की मदद से, लॉगिंग मैनेजमेंट सबसिस्टम को शुरू करें.

LogStorageResources के कलेक्शन के साथ, LoggingManagement को शुरू करने के लिए. ऐरे में, अहमियत के हर मान्य लेवल के लिए संसाधन उपलब्ध होने चाहिए. साथ ही, ऐरे के एलिमेंट, अहमियत के बढ़ते हुए न्यूमेरिक वैल्यू वाले फ़ॉर्मैट में होने चाहिए. ऐरे में मौजूद पहला एलिमेंट, सबसे ज़रूरी इवेंट के लिए असाइन किए गए रिसॉर्स से जुड़ा होता है और आखिरी एलिमेंट सबसे कम ज़रूरी इवेंट से जुड़ा होता है.

जानकारी
पैरामीटर
[in] inMgr
WeaveExchangeManager का इस्तेमाल इस लॉगिंग सबसिस्टम के साथ किया जाएगा
[in] inNumBuffers
inLogStorageResources कलेक्शन में एलिमेंट की संख्या
[in] inLogStorageResources
अहमियत के हर लेवल के लिए, LogStorageResources का कलेक्शन.

DestroyLoggingManagement

void DestroyLoggingManagement(
  void
)

शटडाउन के दौरान ज़रूरी कार्रवाइयां करें.

GetInstance

LoggingManagement & GetInstance(
  void
)