nl:: बुना::प्रोफ़ाइलें::Echo_Next::WeaveEchoClient

#include <src/lib/profiles/echo/Next/WeaveEchoClient.h>

Provides the ability to send Weave EchoRequest messages to a peer node and receive
the corresponding EchoResponse messages.

खास जानकारी

WeaveEchoClient क्लास, Weave Echo प्रोटोकॉल के इनिशिएटर को लागू करती है. ICMP पिंग प्रोटोकॉल की तरह, Weave Echo प्रोटोकॉल का उपयोग किसी Weave नोड की लाइवनेस और पहुंच की जांच करने के लिए किया जा सकता है.

ऐप्लिकेशन बाइंडिंग ऑब्जेक्ट की पहचान करके मिलते-जुलते नोड पर एक बार में या दोहराए जाने वाले EchoRequest मैसेज को भेजने के लिए, WeaveEchoClient क्लास का इस्तेमाल कर सकते हैं. इको अनुरोधों का जवाब देने के लिए एक क्लास मौजूद है (WeaveEchoServer देखें).

क्लाइंट बाइंडिंग

WeaveEchoClient एक Weave Binding ऑब्जेक्ट लेता है, जिसका इस्तेमाल इको अनुरोध के इच्छित प्राप्तकर्ता को संचार करने और तय करने में किया जाता है. Binding को WeaveEchoClient ऑब्जेक्ट के शुरू होने से पहले, ऐप्लिकेशन के ज़रिए कॉन्फ़िगर और तैयार किया जा सकता है या इस स्थिति में इसे तैयार नहीं किया जा सकता है. ऐसा होने पर, WeaveEchoClient बाइंडिंग की मांग पर जानकारी तैयार करने का अनुरोध करेगा (ज़्यादा जानकारी के लिए Binding::Requestतैयार() देखें).

बाइंडिंग की मांग के हिसाब से भी अनुरोध किया जाना चाहिए. ऐसा तब किया जाएगा, जब अनुरोध तैयार होने के बाद खत्म हो जाएंगे.

दोहराने वाला मोड भेजें

Sendrepeating() तरीके का इस्तेमाल करके, WeaveEchoClient को Sendrepeating मोड में रखा जा सकता है. इस मोड में क्लाइंट ऑब्जेक्ट, कॉन्फ़िगर किए गए इंटरवल पर, EchoRequest मैसेज को बार-बार मिलते-जुलते ऐप्लिकेशन पर भेजता है. Sendrepeating मोड को Stop() तरीके का इस्तेमाल करके रद्द किया जा सकता है.

मल्टीकास्ट और ब्रॉडकास्ट

VaveEchoClient ऑब्जेक्ट का इस्तेमाल, एक साथ कई लोगों को EchoRequests भेजने के लिए किया जा सकता है. इसके लिए, सही IPv6 मल्टीकास्ट पते या IPv4 लोकल नेटवर्क ब्रॉडकास्ट पते (255.255.255.255) का इस्तेमाल करके, बाइंडिंग ऑब्जेक्ट को कॉन्फ़िगर किया जा सकता है. जब WeaveEchoClient ऑब्जेक्ट किसी मल्टीकास्ट या ब्रॉडकास्ट मिलते-जुलते ऐप्लिकेशन के पते का पता लगाता है, तब EchoRequest ईमेल भेजने पर वह अपने-आप एक से ज़्यादा जवाब वाले मोड में चला जाता है.

इस मोड में, ऑब्जेक्ट उसी एक्सचेंज पर आने वाले सभी EchoResponse मैसेज को सुनना और डिलीवर करना जारी रखता है. ऑब्जेक्ट तब तक मल्टीरिस्पॉन्स मोड में बना रहता है, जब तक:: 1) ऐप्लिकेशन Stop() या Send(), 2) Sendrepeating मोड में कॉल करता है, दूसरा अनुरोध भेजने का समय आ जाता है या 3) कोई जवाब नहीं मिलता और पाने का समय खत्म हो जाता है.

एपीआई इवेंट

इस कार्रवाई के दौरान, WeaveEchoClient ऑब्जेक्ट खास कार्रवाइयों का अनुरोध करने या ज़रूरी इवेंट की सूचनाएं देने के लिए ऐप्लिकेशन को कॉल करेगा. ये एपीआई इवेंट कॉल, क्लाइंट ऑब्जेक्ट पर मौजूदा कॉन्फ़िगर किए गए कॉलबैक फ़ंक्शन को किए जाते हैं. जहां नोट किया गया है, उसे छोड़कर इवेंट के कॉलबैक के दौरान ऐप्लिकेशन, क्लाइंट की स्थिति बदल सकते हैं. ऑब्जेक्ट और #39; Shutdown() मेथड एक अपवाद है. कॉलबैक के दौरान इसे कभी भी कॉल नहीं किया जा सकता.

एपीआई के इन इवेंट के बारे में बताया गया है:

तैयार करना लोड करें

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

अनुरोध भेज दिया गया

मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजा गया.

जवाब मिल गया

मिलते-जुलते ऐप्लिकेशन से EchoResponse मैसेज मिला. इवेंट के तर्कों में रिस्पॉन्स पेलोड और रिस्पॉन्स मैसेज के बारे में मुख्य जानकारी शामिल होती है.

कनेक्शन से जुड़ी गड़बड़ी

EchoRequest बनाते या उसे भेजते समय या जवाब का इंतज़ार करते समय कोई गड़बड़ी हुई. मुख्य समस्याओं या कनेक्शन के अचानक बंद होने जैसी गड़बड़ियों के उदाहरण, किसी जवाब का इंतज़ार करते समय हो सकते हैं. इवेंट के तर्कों में गड़बड़ी की वजह शामिल है.

जवाब देने का समय खत्म हुआ

तय किए गए समय पर, EchoResponse नहीं मिला. रिस्पॉन्स टाइम आउट को बाइंडिंग ऑब्जेक्ट पर DefaultResponseTimeout प्रॉपर्टी से कंट्रोल किया जाता है.

अनुरोध रद्द किया गया

पहले से जारी Echo एक्सचेंज को रद्द कर दिया गया था, क्योंकि पिछले मैसेज का जवाब मिलने से पहले, एक और EchoRequest भेजने का अनुरोध किया गया था. यह तब भेजा जाता है, जब अगला EchoRequest ईमेल भेजने के लिए में समय भेजा जाता है. ऐसा तब भी हो सकता है, जब ऐप्लिकेशन echoRequest से भेजे जाने के बाद, Send() को कॉल करता है, लेकिन कोई जवाब मिलने से पहले.

जब ऑब्जेक्ट मल्टीस्पॉन्स मोड में होता है, तो इवेंट को छोड़ दिया जाता है. ऐसा तब होता है, जब कम से कम एक EchoResponse मैसेज मिला हो.

कंस्ट्रक्टर और कंस्ट्रक्टर

WeaveEchoClient(void)

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

EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) टाइपडेफ़
void(*
EventType{
  kEvent_PreparePayload = 1,
  kEvent_RequestSent = 2,
  kEvent_ResponseReceived = 3,
  kEvent_CommunicationError = 4,
  kEvent_ResponseTimeout = 5,
  kEvent_RequestAborted = 6,
  kEvent_DefaultCheck = 100
}
enum
State{
  kState_NotInitialized = 0,
  kState_Idle = 1,
  kState_PreparingBinding = 2,
  kState_RequestInProgress = 3,
  kState_WaitingToSend = 4
}
enum

सार्वजनिक विशेषताएं

AppState
void *
ऐप्लिकेशन-विशिष्ट डेटा की ओर इशारा करने वाला एक सूचक.

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

GetBinding(void) const
यह बाइंडिंग ऑब्जेक्टWeaveEchoClient के साथ जुड़ा हुआ एक पॉइंटर दिखाता है.
GetEventCallback(void) const
EventCallback
फ़िलहाल, WeaveEchoClient ऑब्जेक्ट पर कॉन्फ़िगर किए गए एपीआई इवेंट कॉलबैक फ़ंक्शन का पॉइंटर दिखाता है.
GetState(void) const
WeaveEchoClient ऑब्जेक्ट की मौजूदा स्थिति फिर से पाएं.
Init(Binding *binding, EventCallback eventCallback, void *appState)
WeaveEchoClient ऑब्जेक्ट की शुरुआत करें.
IsSendRrepeating() const
bool
अगर WeaveEchoClient ऑब्जेक्ट मौजूदा समय में बार-बार भेजने वाले मोड में है, तो यह सही होता है.
RequestInProgress() const
bool
अगर EchoRequest को भेज दिया गया है और WeaveEchoClient ऑब्जेक्ट जवाब का इंतज़ार कर रहा है, तो यह 'सही' दिखाता है.
Send(void)
मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजें.
Send(PacketBuffer *payloadBuf)
किसी खास पेलोड के साथ मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजें.
SendRepeating(uint32_t sendIntervalMS)
मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजने का, बार-बार होने वाला क्रम शुरू करें.
SetEventCallback(EventCallback eventCallback)
void
WeaveEchoClient ऑब्जेक्ट पर एपीआई इवेंट कॉलबैक फ़ंक्शन सेट करता है.
Shutdown(void)
void
पहले से शुरू किए गए WeaveEchoClient ऑब्जेक्ट को शट डाउन करें.
Stop(void)
void
यह प्रक्रिया किसी भी ईको एक्सचेंज की प्रक्रिया को रोकती है और भेजने वाले मोड को रद्द कर देती है.

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

DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
void
WeaveEchoClient एपीआई इवेंट के लिए डिफ़ॉल्ट हैंडलर.

स्ट्रक्चर

nl:: बुनाई::प्रोफ़ाइल::Echo_Next::WeaveEchoClient::InEventParam

WeaveEchoClient एपीआई इवेंट में पैरामीटर डालें.

nl:: बुनाई::प्रोफ़ाइल::Echo_Next::WeaveEchoClient::OutEventParam

WeaveEchoClient एपीआई इवेंट के लिए आउटपुट पैरामीटर.

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

इवेंट कॉलबैक

void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)

इवेंट टाइप

 EventType
प्रॉपर्टी
kEvent_CommunicationError

EchoRequest को भेजते समय या जवाब का इंतज़ार करते समय, किसी गड़बड़ी की सूचना मिली.

kEvent_DefaultCheck

ऐप्लिकेशन में इवेंट के सही डिफ़ॉल्ट हैंडलिंग की पुष्टि करने के लिए इस्तेमाल किया जाता है.

kEvent_PreparePayload

ऐप्लिकेशन के लिए, ईको अनुरोध के लिए पेलोड तैयार करने का अनुरोध किया जाता है.

kEvent_RequestAborted

पहले से जारी इको एक्सचेंज को रद्द कर दिया गया, क्योंकि एक और एक्सचेंज शुरू करने का अनुरोध किया गया था.

kEvent_RequestSent

मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजा गया.

kEvent_ResponseReceived

मिलते-जुलते ऐप्लिकेशन से EchoResponse मैसेज मिला.

kEvent_ResponseTimeout

तय किए गए समय पर, EchoResponse नहीं मिला.

राज्य

 State
प्रॉपर्टी
kState_Idle

क्लाइंट ऑब्जेक्ट इस्तेमाल में नहीं है.

kState_NotInitialized

क्लाइंट ऑब्जेक्ट को शुरू नहीं किया गया है.

kState_PreparingBinding

क्लाइंट ऑब्जेक्ट, बाइंडिंग के तैयार होने का इंतज़ार कर रहा है.

kState_RequestInProgress

EchoRequest मैसेज भेज दिया गया है और क्लाइंट ऑब्जेक्ट से जवाब मिलने का इंतज़ार हो रहा है.

kState_WaitingToSend

Sendदोहराing() को कॉल किया गया है और क्लाइंट ऑब्जेक्ट अगली बार EchoRequest भेजने के लिए इंतज़ार कर रहा है.

सार्वजनिक विशेषताएं

AppState

void * AppState

ऐप्लिकेशन-विशिष्ट डेटा की ओर इशारा करने वाला एक सूचक.

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

गेटबाइंडिंग

Binding * GetBinding(
  void
) const 

यह बाइंडिंग ऑब्जेक्टWeaveEchoClient के साथ जुड़ा हुआ एक पॉइंटर दिखाता है.

GetEventCallback

EventCallback GetEventCallback(
  void
) const 

फ़िलहाल, WeaveEchoClient ऑब्जेक्ट पर कॉन्फ़िगर किए गए एपीआई इवेंट कॉलबैक फ़ंक्शन का पॉइंटर दिखाता है.

गेटस्टेट

State GetState(
  void
) const 

WeaveEchoClient ऑब्जेक्ट की मौजूदा स्थिति फिर से पाएं.

इनिट

WEAVE_ERROR Init(
  Binding *binding,
  EventCallback eventCallback,
  void *appState
)

WeaveEchoClient ऑब्जेक्ट की शुरुआत करें.

किसी सहकर्मी को इको मैसेज भेजने की तैयारी करने के लिए WeaveEchoClient ऑब्जेक्ट की शुरुआत करें.

ब्यौरा
पैरामीटर
[in] binding
बाइंडिंग ऑब्जेक्ट, जिसका इस्तेमाल मिलते-जुलते ऐप्लिकेशन के नोड से संपर्क करने के लिए किया जाएगा.
[in] eventCallback
फ़ंक्शन को पॉइंटर, जिसे ऐप्लिकेशन में एपीआई इवेंट डिलीवर करने के लिए WeaveEchoClient ऑब्जेक्ट से कॉल किया जाएगा.
[in] appState
ऐप्लिकेशन तय करने वाले ऑब्जेक्ट का पॉइंटर, जिसे एपीआई इवेंट होने पर ऐप्लिकेशन पर वापस भेजा जाएगा.

IsSendRRrepeating

bool IsSendRrepeating() const 

अगर WeaveEchoClient ऑब्जेक्ट मौजूदा समय में बार-बार भेजने वाले मोड में है, तो यह सही होता है.

अनुरोध जारी है

bool RequestInProgress() const 

अगर EchoRequest को भेज दिया गया है और WeaveEchoClient ऑब्जेक्ट जवाब का इंतज़ार कर रहा है, तो यह 'सही' दिखाता है.

भेजना

WEAVE_ERROR Send(
  void
)

मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजें.

इस तरीके से मिलते-जुलते नोड को EchoRequest मैसेज भेजने की प्रोसेस शुरू होती है. अगर और तब EchoResponse मैसेज मिलता है, तो उसे ResponseResponse के एपीआई इवेंट से ऐप्लिकेशन में डिलीवर किया जाएगा.

EchoRequest मैसेज बनाते समय, WeaveEchoClient ऐप्लिकेशन के लिए अनुरोध तैयार करता है. यह अनुरोध, payPayload एपीआई इवेंट के ज़रिए, मैसेज का पेलोड तैयार करने के लिए किया जाता है.

अगर इस तरीके का इस्तेमाल होते समय बाइंडिंग ऑब्जेक्ट 'तैयार है' की स्थिति में नहीं है, तो ऑन-डिमांड तैयारी शुरू करने के लिए बाइंडिंग::Requestतैयार() तरीके से अनुरोध किया जाएगा. इसके बाद, भेजने की कार्रवाई सूची में शामिल हो जाएगी. सूची की ज़्यादा से ज़्यादा गहराई एक है. इस वजह से, भेजें() पर कोई भी कॉल तब किया जाता है, जब सूची में पिछला ईमेल भेजा जाता है, तब सिर्फ़ एक ही EchoRequest ईमेल भेजा जाएगा.

जब WeaveEchoClient ईमेल भेजने के मोड का इस्तेमाल करता है, तब Send() को कॉल करने की सुविधा (इसका मतलब है कि Send दोहरानेing() पर पिछले कॉल की वजह से ऐसा होता है) का असर भेजने वाले साइकल को बढ़ाने और रीसेट करने पर होता है, लेकिन WeaveEchoClient को भेजने वाले मोड से बाहर नहीं लेता.

भेजना

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

किसी खास पेलोड के साथ मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजें.

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

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

अगर इस तरीके का इस्तेमाल होते समय बाइंडिंग ऑब्जेक्ट 'तैयार है' की स्थिति में नहीं है, तो ऑन-डिमांड तैयारी शुरू करने के लिए बाइंडिंग::Requestतैयार() तरीके से अनुरोध किया जाएगा. इसके बाद, भेजने की कार्रवाई सूची में जोड़ दी जाएगी. सूची की ज़्यादा से ज़्यादा गहराई एक है. इस वजह से, भेजें() पर कोई भी कॉल तब किया जाता है, जब सूची में पिछला ईमेल भेजा जाता है, तब सिर्फ़ एक ही EchoRequest ईमेल भेजा जाएगा.

जब WeaveEchoClient ईमेल भेजने के मोड का इस्तेमाल करता है, तब Send() को कॉल करने की सुविधा (इसका मतलब है कि Send दोहरानेing() पर पिछले कॉल की वजह से ऐसा होता है) का असर भेजने वाले साइकल को बढ़ाने और रीसेट करने पर होता है, लेकिन WeaveEchoClient को भेजने वाले मोड से बाहर नहीं लेता.

ब्यौरा
पैरामीटर
[in] payloadBuf
एक PacketBuffer ऑब्जेक्ट जिसमें मिलते-जुलते ऐप्लिकेशन को भेजने के लिए, पेलोड डेटा भेजा गया है. इस बफ़र का मालिकाना हक सभी मामलों में WeaveEchoClient ऑब्जेक्ट को पास करता है.

भेजें

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजने का, बार-बार होने वाला क्रम शुरू करें.

यह तरीका, मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजने की दोहराव की प्रक्रिया शुरू करता है. EchoResponse मैसेज, मिलते-जुलते ऐप्लिकेशन से डिलीवर किए जाते हैं. इसलिए, उन्हें ResponseRecipients के एपीआई इवेंट के ज़रिए ऐप्लिकेशन में डिलीवर किए जाते हैं.

जब Sendrepeating() को कॉल किया जाता है, तब WeaveEchoClient ईमेल भेजने के लिए रिपीट मोड में जाता है, जब तक कि Stop() कॉल नहीं होता या बाइंडिंग गड़बड़ी नहीं होती. Sendrepeating() को कई बार कॉल करने से, सेंड साइकल को रीसेट करने और इंटरवल को अपडेट करने का असर पड़ता है.

क्रम का शुरुआती भेजने का काम Sendrepeating() को कॉल करते समय होता है या जब भी Sendrepeating() को कॉल करने के बाद Binding तैयार होता है, तो नीचे देखें. बाद में भेजे गए मैसेज, तय किए गए समय अंतराल पर भेजे जाते हैं.

जब भी कोई मैसेज भेजा जाता है, तो WeaveEchoClient ऐप्लिकेशन के लिए अनुरोध करता है. यह अनुरोध, ReadyPayload एपीआई इवेंट के ज़रिए, मैसेज का पेलोड तैयार करने के लिए किया जाता है.

अगर मैसेज भेजने का समय आते ही, बाइंडिंग ऑब्जेक्ट 'तैयार है' की स्थिति में न हो, तो मांग पर तैयार करने के लिए, बाइंडिंग::RequestReady() तरीके का अनुरोध किया जाएगा. यह प्रक्रिया पूरी होने तक, बार-बार भेजे जाने वाले मैसेज रोक दिए जाएंगे. मांग पर बाइंडिंग की सुविधा चालू न होने पर, WeaveEchoClient ईमेल भेजने के मोड को दोहराएगा.

setEventCallback

void SetEventCallback(
  EventCallback eventCallback
)

WeaveEchoClient ऑब्जेक्ट पर एपीआई इवेंट कॉलबैक फ़ंक्शन सेट करता है.

शटडाउन

void Shutdown(
  void
)

पहले से शुरू किए गए WeaveEchoClient ऑब्जेक्ट को शट डाउन करें.

ध्यान दें कि इस तरीके का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब Init() मेथड को पहले कॉल किया गया हो.

बंद करें

void Stop(
  void
)

यह प्रक्रिया किसी भी ईको एक्सचेंज की प्रक्रिया को रोकती है और भेजने वाले मोड को रद्द कर देती है.

WeaveEchoClient

 WeaveEchoClient(
  void
)

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

डिफ़ॉल्ट इवेंट हैंडलर

void DefaultEventHandler(
  void *appState,
  EventType eventType,
  const InEventParam & inParam,
  OutEventParam & outParam
)

WeaveEchoClient एपीआई इवेंट के लिए डिफ़ॉल्ट हैंडलर.

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

ब्यौरा
पैरामीटर
[in] appState
क्लाइंट ऑब्जेक्ट से जुड़ी ऐप्लिकेशन-आधारित स्थिति की जानकारी का पॉइंटर.
[in] eventType
इवेंट कॉलबैक से पास किया गया इवेंट आईडी
[in] inParam
इवेंट कॉलबैक से पास किए गए इनपुट इवेंट पैरामीटर का रेफ़रंस
[in] outParam
इवेंट कॉलबैक से पास किए गए आउटपुट इवेंट पैरामीटर का रेफ़रंस