nl::Weave::Profiles::DataManagement_Current::SubscriptionClient

खास जानकारी

सार्वजनिक टाइप

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) typedef
void(*
ऐप्लिकेशन में सदस्यता इवेंट भेजने के लिए कॉलबैक करें.
EventID{
  kEvent_OnSubscriptionTerminated = 1,
  kEvent_OnExchangeStart = 2,
  kEvent_OnSubscribeRequestPrepareNeeded = 3,
  kEvent_OnSubscriptionEstablished = 4,
  kEvent_OnNotificationRequest = 5,
  kEvent_OnNotificationProcessed = 6,
  kEvent_OnEventStreamReceived = 7,
  kEvent_OnSubscriptionActivity = 8,
  kEvent_OnUpdateComplete = 9,
  kEvent_OnNoMorePendingUpdates = 10
}
enum
ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec) typedef
void(*
फिर से सदस्यता लेने से पहले, इंतज़ार का समय दिखाने के लिए कॉलबैक करें.

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

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
लागू होने वाली डिफ़ॉल्ट नीति में, लगातार बढ़ने वाली विंडो पर मिलीसेकंड रिज़ॉल्यूशन वाला एक रैंडम टाइमस्लॉट चुना जाएगा. इसके बाद, WDM_RESUBSCRIPTION_MAX_FIBONACCI_STEP_INDEX तक फ़ाइबोनाशी क्रम चलेगा.

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

AbortSubscription(void)
void
सदस्यता रद्द करना.
ClearUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle)
DisableResubscribe(void)
void
फिर से सदस्यता लेने की सुविधा बंद करें.
DiscardUpdates()
void
SubscriptionClient की मदद से, उन TraitPaths के सेट को खाली करें जिन्हें अपडेट नहीं किया गया है. साथ ही, अगर अपडेट के लिए अनुरोध किया जा रहा है, तो उसे रद्द करने के लिए भी कहा जाता है.
EnableResubscribe(ResubscribePolicyCallback aCallback)
void
अपने-आप फिर से सदस्यता लेने की सुविधा चालू करें.
EndSubscription(void)
सदस्यता खत्म करें.
FlushUpdate()
इससे पता चलता है कि ऐप्लिकेशन ने सभी TraitUpdatableDataSinks को बदल दिया है.
FlushUpdate(bool aForce)
Free(void)
void
इस SubscriptionClient ऑब्जेक्ट को खाली करें.
GetBinding(void) const
GetLivenessTimeoutMsec(void) const
uint32_t
GetPeerNodeId(void) const
uint64_t
GetSubscriptionId(uint64_t *const apSubscriptionId)
IndicateActivity(void)
void
InitiateCounterSubscription(const uint32_t aLivenessTimeoutSec)
void
InitiateSubscription(void)
void
सदस्यता लेने वाले व्यक्ति के बजाय, SubscriptionClient को कॉन्फ़िगर करें. अगर ऐसा नहीं है, तो सदस्यता को अपग्रेड करें.
IsCanceling() const
bool
IsEstablished()
bool
IsEstablishedIdle()
bool
IsFree()
bool
IsInProgressOrEstablished()
bool
IsInResubscribeHoldoff()
bool
IsRetryEnabled()
bool
IsTerminated()
bool
IsUpdatePendingOrInProgress()
bool
LockUpdateMutex(void)
void
OnCatalogChanged()
void
TraitDataSink कैटलॉग में बदलाव होने के बाद ही, इस तरीके का इस्तेमाल किया जाना चाहिए.
ResetResubscribe(void)
void
फिर से सदस्यता लेने की प्रोसेस शुरू करें.
SetLivenessTimeoutMsec(uint32_t val)
void
SetUpdated(TraitUpdatableDataSink *aDataSink, PropertyPathHandle aPropertyHandle, bool aIsConditional)
SuspendUpdateRetries()
void
SubscriptionClient को बताता है कि वह अपडेट के अनुरोधों को फिर से प्रोसेस करना बंद कर दे.
UnlockUpdateMutex(void)
void

संरचना

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::LastObservedEvent
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::ResubscribeParam

यूनियन

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::InEventParam
nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::OutEventParam

सार्वजनिक टाइप

@130

 @130

EventCallback

void(* EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)

ऐप्लिकेशन में सदस्यता इवेंट भेजने के लिए कॉलबैक करें.

जानकारी
पैरामीटर
[in] aAppState
SubscriptionClient की शुरुआत के दौरान सेट किया गया ऐप्लिकेशन की स्थिति का पॉइंटर.
[in] aEvent
इससे पता चलता है कि कौनसा इवेंट हो रहा है
[in] aInParam
इवेंट के बारे में ज़्यादा जानकारी देने के लिए स्ट्रक्चर बनाएं
[out] aOutParam
ऐप्लिकेशन से मिली जानकारी

EventID

 EventID
प्रॉपर्टी
kEvent_OnEventStreamReceived

यह तब जनरेट होती है, जब SubscriptionEngine मैसेज में, किसी इवेंट स्ट्रीम की गिनती करता है.

ऐप्लिकेशन इस समय EndSubscription(), AbortSubscription() या Free() को कॉल कर सकता है.

kEvent_OnExchangeStart

बाइंडिंग तैयार होने के बाद जनरेट किया जाता है और ExchangeContext सेट अप कर दिए जाने के बाद कोई भी मैसेज भेजे जाने से पहले जनरेट किया जाता है.

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

kEvent_OnNoMorePendingUpdates

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

kEvent_OnNotificationProcessed

यह तब जनरेट होता है, जब SubscriptionEngine मैसेज की प्रोसेस पूरी हो जाती है.

ऐप्लिकेशन इस समय EndSubscription(), AbortSubscription() या Free() को कॉल कर सकता है.

kEvent_OnNotificationRequest

नोटिफ़िकेशन अनुरोध के मिलने पर जनरेट की गई.

ऐप्लिकेशन इस समय EndSubscription(), AbortSubscription() या Free() को कॉल कर सकता है.

kEvent_OnSubscribeRequestPrepareNeeded

यह तब भेजा जाता है, जब इंजन SubscribeRequest को भेजने के लिए तैयार होता है.

ऐप्लिकेशन से उन पाथ को भरे जाने की उम्मीद है जिनकी वह सदस्यता लेना चाहता है.

kEvent_OnSubscriptionActivity

सदस्यता की गतिविधि दिखाने वाला इवेंट.

जब भी क्लाइंट को सदस्यता की गतिविधि के बारे में कोई संकेत मिलता है, तब इसे जनरेट किया जाता है. इसमें, सदस्यता लेने की प्रोसेस पूरी होना, NotificationRequest का रिसेप्शन या Subscribeपुष्टि के मैसेज के जवाब में स्टेटस रिपोर्ट की रसीद शामिल है.

kEvent_OnSubscriptionEstablished

सदस्यता मिलने के बाद जनरेट होती है.

ऐप्लिकेशन इस समय EndSubscription(), AbortSubscription() या Free() को कॉल कर सकता है.

kEvent_OnSubscriptionTerminated

सदस्यता के खत्म होने की जानकारी देता है.

nl::Weave::Profiles::DataManagement_Current::SubscriptionClient::EventCallback पर भेजे गए पैरामीटर से, यह पता चलता है कि फिर से सदस्यता लेने की सुविधा अपने-आप चालू होगी या नहीं.

इवेंट हैंडलर कॉल के दौरान, क्लाइंट की स्थिति Terminated होगी. अगर फिर से कोशिश नहीं की जाएगी, तो इवेंट हैंडलर के वापस आने पर क्लाइंट की स्थिति Initialized में बदल जाएगी. ऐसा न करने पर, स्थिति ResubscribeHoldoff में बदल जाएगी और होल्ड-ऑफ़ समय के बाद सदस्यता को फिर से चालू करने की कोशिश की जाएगी.

ऐप्लिकेशन इस स्थिति में AbortSubscription() या Free() को कॉल कर सकता है.

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

सदस्यता कई वजहों से बंद की जा सकती है. जैसे, WRM ACK मौजूद नहीं है, ExchangeContext ऐलोकेशन में काम नहीं कर रहा है, रिस्पॉन्स टाइम आउट,...) क्लाइंट से जनरेट किए गए कुछ गड़बड़ी कोड:

गड़बड़ी का कोड मतलब
WEAVE_ERROR_INVALID_MESSAGE_TYPE कोई ऐसा मैसेज मिला है जिसकी पहचान नहीं की जा सकी.
WEAVE_ERROR_TIMEOUT पैक नहीं मिला या कोई टास्क पूरा नहीं हो पाया.
WEAVE_ERROR_INCORRECT_STATE मैसेज ऐसी स्थिति में मिले हैं जिसकी उम्मीद नहीं थी.
WEAVE_ERROR_STATUS_REPORT_RECEIVED स्थिति की रिपोर्ट मिल गई है.
WEAVE_ERROR_INVALID_ARGUMENT सदस्य बनने के अनुरोध के फ़ील्ड अमान्य हैं.

kEvent_OnUpdateComplete

अपडेट पूरा होने की जानकारी देने वाला इवेंट.

इवेंट पैरामीटर से पता चलेगा कि किसी खास Trait पाथ का अपडेट पूरा हो गया है या नहीं.

ResubscribePolicyCallback

void(* ResubscribePolicyCallback)(void *const aAppState, ResubscribeParam &aInParam, uint32_t &aOutIntervalMsec)

फिर से सदस्यता लेने से पहले, इंतज़ार का समय दिखाने के लिए कॉलबैक करें.

अगर ऐप्लिकेशन ने फिर से सदस्यता छोड़ने का फ़ैसला लिया है, तो उन्हें इस फ़ंक्शन को रद्द/मुफ़्त करने की अनुमति है.

जानकारी
पैरामीटर
[in] aAppState
SubscriptionClient की शुरुआत के दौरान सेट किया गया ऐप्लिकेशन की स्थिति का पॉइंटर.
[in] aInParam
फिर से कोशिश करने के बारे में ज़्यादा जानकारी दें
[out] aOutIntervalMsec
अगली बार फिर से कोशिश करने से पहले इंतज़ार करने का समय, मिलीसेकंड में

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

DefaultEventHandler

void DefaultEventHandler(
  EventID aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

DefaultResubscribePolicyCallback

void DefaultResubscribePolicyCallback(
  void *const aAppState,
  ResubscribeParam & aInParam,
  uint32_t & aOutIntervalMsec
)

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

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

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

AbortSubscription

void AbortSubscription(
  void
)

सदस्यता रद्द करना.

क्लाइंट की सदस्यता रद्द करना.

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

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

AbortSubscription() को कॉल करने पर, SubscriptionClient ऑब्जेक्ट, Terminated की स्थिति में जाता है. खत्म करने की प्रोसेस पूरी होने के बाद, ऑब्जेक्ट Initialized की स्थिति में आ जाता है. AbortSubscription() पर किए जाने वाले कॉल के दौरान, दोनों ट्रांज़िशन एक साथ होते हैं.

AbortSubscription() से नतीजे मिलने के बाद, SubscriptionClient ऑब्जेक्ट का इस्तेमाल दूसरी सदस्यता शुरू करने के लिए किया जा सकता है. इसके अलावा, Free() वाले तरीके का इस्तेमाल करके, इसे खाली किया जा सकता है.

ClearUpdated

WEAVE_ERROR ClearUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle
)

DisableResubscribe

void DisableResubscribe(
  void
)

फिर से सदस्यता लेने की सुविधा बंद करें.

'फिर से सदस्यता लें' वाले पेज पर मंज़ूरी बाकी होने पर, यह पेज रद्द हो जाएगा.

DiscardUpdates

void DiscardUpdates()

SubscriptionClient की मदद से, उन TraitPaths के सेट को खाली करें जिन्हें अपडेट नहीं किया गया है. साथ ही, अगर अपडेट के लिए अनुरोध किया जा रहा है, तो उसे रद्द करने के लिए भी कहा जाता है.

इस तरीके को किसी भी कॉलबैक से शुरू किया जा सकता है.

EnableResubscribe

void EnableResubscribe(
  ResubscribePolicyCallback aCallback
)

अपने-आप फिर से सदस्यता लेने की सुविधा चालू करें.

गड़बड़ी होने पर, फिर से कोशिश करने का अगला समय तय करने के लिए, कॉलबैक अटैच करें.

जानकारी
पैरामीटर
[in] aCallback
किसी असफलता के बाद फिर से कोशिश करने से पहले, इंतज़ार का समय फ़ेच करने के लिए वैकल्पिक कॉलबैक. अगर NULL है, तो डिफ़ॉल्ट नीति का इस्तेमाल करें.

EndSubscription

WEAVE_ERROR EndSubscription(
  void
)

सदस्यता खत्म करें.

क्लाइंट की सदस्यता को शानदार तरीके से खत्म करें.

WDM_ENABLE_SUBSCRIPTION_CANCEL कंपाइल-टाइम विकल्प के चालू होने पर, सहयोगी को रद्द करने का अनुरोध करके उसे ग्रेसफ़ुल तरीके से खत्म करें. साथी समीक्षक से जवाब मिलने या टाइम आउट होने पर, सदस्यता से जुड़े संसाधन खाली हो जाते हैं. इस विकल्प के बंद होने पर, कॉल AbortSubscription() के बराबर की जाती है.

यह ग्राहक की ज़रूरत के हिसाब से, ग्राहक की सदस्यता को खत्म कर देता है. अगर सदस्यता रद्द करने की सुविधा चालू है, तो सदस्यता के पब्लिशर को SubscribeCancelRequest मैसेज भेजा जाता है. साथ ही, सदस्यता खत्म करने से पहले सिस्टम से जवाब का इंतज़ार किया जाता है. ऐसा न होने पर, AbortSubscription() की तरह ही सदस्यता, खत्म कर दी जाती है. अगर म्यूचुअल सदस्यता मौजूद होती है, तो काउंटर सदस्यता भी खत्म कर दी जाती है.

SubscribeCancelRequest के जवाब का इंतज़ार करते समय, SubscriptionClient Canceling की स्थिति में आता है.

बंद करने की प्रोसेस शुरू होने के बाद, SubscriptionClient ऑब्जेक्ट Terminated की स्थिति में आ जाता है और ऐप्लिकेशन के इवेंट हैंडलर को OnSubscriptionTerminated इवेंट डिलीवर किया जाता है. ध्यान दें कि अगर 'रद्द करें' सपोर्ट की सुविधा चालू नहीं है, तो इवेंट हैंडलर को EndSubscription() को कॉल करने के दौरान सिंक्रोनस रूप से कॉल किया जा सकता है.

ऐप्लिकेशन का इवेंट हैंडलर वापस आने के बाद, SubscriptionClient ऑब्जेक्ट Initialized की स्थिति में आ जाता है. इस समय SubscriptionClient ऑब्जेक्ट का इस्तेमाल दूसरी सदस्यता शुरू करने के लिए किया जा सकता है या Free() तरीके का इस्तेमाल करके इसे खाली किया जा सकता है.

FlushUpdate

WEAVE_ERROR FlushUpdate()

इससे पता चलता है कि ऐप्लिकेशन ने सभी TraitUpdatableDataSinks को बदल दिया है.

जब तक किसी पिछले अपडेट एक्सचेंज का काम जारी नहीं होता, तब तक क्लाइंट, अपडेट किए गए के तौर पर मार्क किया गया सारा डेटा लेकर, एक ही बार अनुरोध का जवाब देने वाले व्यक्ति को भेजेगा. इस तरीके को किसी भी थ्रेड से कॉल किया जा सकता है.

जानकारी
पैरामीटर
[in] aForce
सही होने पर, अपडेट को तुरंत भेज दिया जाता है, भले ही आने वाले समय में फिर से कोशिश करने के लिए शेड्यूल किया गया हो. इस पैरामीटर को डिफ़ॉल्ट रूप से 'गलत' माना जाता है.
लौटाए गए सामान
सफल होने पर WEAVE_NO_ERROR; विफल होने पर अन्य WEAVE_ERROR कोड.

FlushUpdate

WEAVE_ERROR FlushUpdate(
  bool aForce
)

बिना किसी शुल्क के आज़माएं

void Free(
  void
)

इस SubscriptionClient ऑब्जेक्ट को खाली करें.

SubscriptionClient ऑब्जेक्ट को खाली करें.

अगर ज़रूरी हो, तो AbortSubscription() को कॉल करता है और इस SubscriptionClient ऑब्जेक्ट के लिए रेफ़रंस रिलीज़ करता है. सही इस्तेमाल के तहत, इससे ऑब्जेक्ट को ऑब्जेक्ट पूल में दिखाया जा सकता है

SubscriptionClient ऑब्जेक्ट को खाली करता है. अगर कोई सदस्यता चालू है या उस पर जारी है, तो सदस्यता तुरंत खत्म कर दी जाती है. यह ठीक वैसे ही होता है जैसे AbortSubscription() को कॉल किया जाता है. अगर अपडेट के लिए कोई अनुरोध किया जा रहा है, तो उसे वैसे ही रद्द कर दिया जाएगा.

यह ऐप्लिकेशन, SubscriptionClient ऑब्जेक्ट के जीवनकाल में सिर्फ़ एक बार Free() को कॉल करने के लिए ज़िम्मेदार है. Free() को कॉल करने के बाद, ऑब्जेक्ट के लिए कोई और रेफ़रंस नहीं देना चाहिए.

GetBinding

Binding * GetBinding(
  void
) const 

GetLivenessTimeoutMsec

uint32_t GetLivenessTimeoutMsec(
  void
) const 

GetPeerNodeId

uint64_t GetPeerNodeId(
  void
) const 

GetSubscriptionId

WEAVE_ERROR GetSubscriptionId(
  uint64_t *const apSubscriptionId
)

IndicateActivity

void IndicateActivity(
  void
)

InitiateCounterSubscription

void InitiateCounterSubscription(
  const uint32_t aLivenessTimeoutSec
)

InitiateSubscription

void InitiateSubscription(
  void
)

सदस्यता लेने वाले व्यक्ति के बजाय, SubscriptionClient को कॉन्फ़िगर करें. अगर ऐसा नहीं है, तो सदस्यता को अपग्रेड करें.

IsCanceling

bool IsCanceling() const 

IsEstablished

bool IsEstablished()

IsEstablishedIdle

bool IsEstablishedIdle()

IsFree

bool IsFree()

IsInProgressOrEstablished

bool IsInProgressOrEstablished()

IsInResubscribeHoldoff

bool IsInResubscribeHoldoff()

IsRetryEnabled

bool IsRetryEnabled()

IsTerminated

bool IsTerminated()

IsUpdatePendingOrInProgress

bool IsUpdatePendingOrInProgress()

LockUpdateMutex

void LockUpdateMutex(
  void
)

OnCatalogChanged

void OnCatalogChanged()

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

ResetResubscribe

void ResetResubscribe(
  void
)

फिर से सदस्यता लेने की प्रोसेस शुरू करें.

यह तुरंत फिर से कोशिश करेगा

SetLivenessTimeoutMsec

void SetLivenessTimeoutMsec(
  uint32_t val
)

SetUpdated

WEAVE_ERROR SetUpdated(
  TraitUpdatableDataSink *aDataSink,
  PropertyPathHandle aPropertyHandle,
  bool aIsConditional
)

SuspendUpdateRetries

void SuspendUpdateRetries()

SubscriptionClient को बताता है कि वह अपडेट के अनुरोधों को फिर से प्रोसेस करना बंद कर दे.

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

UnlockUpdateMutex

void UnlockUpdateMutex(
  void
)