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
IsValid से यह पता चलता है कि 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
थ्रॉटललॉगर बेहतर लॉगिंग स्तर को उत्पादन स्तर तक बढ़ाता है.
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
)

IsValid से यह पता चलता है कि 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); अगर शून्य है, तो यह मौजूदा डिवाइस को डिफ़ॉल्ट तौर पर सेट करती है. इवेंट को कॉल कर रहे डिवाइस से संबंधित के तौर पर मार्क किया गया है,
  • इवेंट आईडी के ग्रुप बनाने के लिए, मिलता-जुलता इवेंट आईडी; जब संबंधित इवेंट आईडी 0 होता है, तो इवेंट को 'किसी दूसरे इवेंट से मिलता-जुलता नहीं है' के तौर पर मार्क किया जाता है,
  • तात्कालिकता; डिफ़ॉल्ट रूप से गैर-ज़रूरी है.

विवरण
पैरामीटर
[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 स्ट्रक्चर का पॉइंटर शून्य हो जाएगा. ऐसा न होने पर, कॉलबैक को असाइन किए गए स्टार्ट और एंड इवेंट आईडी से अपने-आप जानकारी भर जाएगी. इस पॉइंटर का इस्तेमाल, इवेंट के सेट का रजिस्ट्रेशन रद्द करने के लिए किया जाना चाहिए.

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

विवरण
पैरामीटर
[in] inImportance
अहमियत का लेवल
[in] inFetchCallback
बाहरी इवेंट फ़ेच करने के लिए रजिस्टर करने के लिए कॉलबैक करें
[in] inNotifyCallback
डिलीवरी की सूचना पाने के लिए कॉलबैक करें
[in] inEvictedCallback
निकालने की सूचना के लिए रजिस्टर करने के लिए कॉलबैक
[in] inNumEvents
इस सेट में इवेंट की संख्या
[out] outLastEventID
किसी event_id_t की ओर इशारा करें; बाहरी इवेंट के सफल रजिस्ट्रेशन पर फ़ंक्शन, बाहरी इवेंट ब्लॉक के आखिरी इवेंट आईडी के मुताबिक इवेंट आईडी को सेव करेगा. पैरामीटर शून्य हो सकता है.
रिटर्न वैल्यू
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 स्ट्रक्चर का पॉइंटर शून्य हो जाएगा. ऐसा न होने पर, कॉलबैक को असाइन किए गए स्टार्ट और एंड इवेंट आईडी से अपने-आप जानकारी भर जाएगी. इस पॉइंटर का इस्तेमाल, इवेंट के सेट का रजिस्ट्रेशन रद्द करने के लिए किया जाना चाहिए.

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

विवरण
पैरामीटर
[in] inImportance
अहमियत का लेवल
[in] inCallback
बाहरी इवेंट फ़ेच करने के लिए रजिस्टर करने के लिए कॉलबैक करें
[in] inNotifyCallback
डिलीवरी की सूचना पाने के लिए कॉलबैक करें
[in] inNumEvents
इस सेट में इवेंट की संख्या
[out] outLastEventID
किसी event_id_t की ओर इशारा करें; बाहरी इवेंट के सफल रजिस्ट्रेशन पर फ़ंक्शन, बाहरी इवेंट ब्लॉक के आखिरी इवेंट आईडी के मुताबिक इवेंट आईडी को सेव करेगा. पैरामीटर शून्य हो सकता है.
रिटर्न वैल्यू
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 स्ट्रक्चर का पॉइंटर शून्य हो जाएगा. ऐसा न होने पर, कॉलबैक को असाइन किए गए स्टार्ट और एंड इवेंट आईडी से अपने-आप जानकारी भर जाएगी. इस पॉइंटर का इस्तेमाल, इवेंट के सेट का रजिस्ट्रेशन रद्द करने के लिए किया जाना चाहिए.

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

विवरण
पैरामीटर
[in] inImportance
अहमियत का लेवल
[in] inCallback
बाहरी इवेंट फ़ेच करने के लिए रजिस्टर करने के लिए कॉलबैक करें
[in] inNumEvents
इस सेट में इवेंट की संख्या
[out] outLastEventID
किसी event_id_t की ओर इशारा करें; बाहरी इवेंट के सफल रजिस्ट्रेशन पर फ़ंक्शन, बाहरी इवेंट ब्लॉक के आखिरी इवेंट आईडी के मुताबिक इवेंट आईडी को सेव करेगा. पैरामीटर शून्य हो सकता है.
रिटर्न वैल्यू
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
)

थ्रॉटललॉगर बेहतर लॉगिंग स्तर को उत्पादन स्तर तक बढ़ाता है.

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
)