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

खास जानकारी

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

@130 enum
EventCallback)(void *const aAppState, EventID aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) टाइपडिफ़
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) टाइपडिफ़
void(*
अगली बार फिर से सदस्यता लेने से पहले इंतज़ार के समय का डेटा फ़ेच करने के लिए कॉलबैक करें.

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

DefaultEventHandler(EventID aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
void
DefaultResubscribePolicyCallback(void *const aAppState, ResubscribeParam & aInParam, uint32_t & aOutIntervalMsec)
void
नीति के लागू होने के बाद, समय के साथ-साथ बढ़ने वाली विंडो पर मिलीसेकंड के रिज़ॉल्यूशन वाला कोई भी टाइम स्लॉट चुन लिया जाएगा. इसके लिए, WDM_RE Subscribe_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 जाती है, जो NotificationRequest मैसेज में किसी इवेंट स्ट्रीम को शामिल करती है.

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

kEvent_OnExchangeStart

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

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

kEvent_OnNoMorePendingUpdates

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

kEvent_OnNotificationProcessed

यह तब जनरेट होता है, जब SubscriptionEngine से एक NotificationRequest मैसेज को प्रोसेस कर लिया होता है.

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

kEvent_OnNotificationRequest

NotificationRequest मिलने पर जनरेट हुआ.

ऐप्लिकेशन इस समय 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_RE Subscribe_MAX_FIBONACCI_STEP_INDEX तक का फ़ाइबोनैकी क्रम लागू हो जाएगा.

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

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 ऑब्जेक्ट के लिए, refcount को रिलीज़ करता है. सही इस्तेमाल में, इससे ऑब्जेक्ट को ऑब्जेक्ट पूल में वापस जाने में मदद मिलनी चाहिए

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
)