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{
|
enum |
State{
|
enum |
सार्वजनिक विशेषताएं |
|
---|---|
AppState
|
void *
ऐप्लिकेशन-विशिष्ट डेटा की ओर इशारा करने वाला एक सूचक.
|
सार्वजनिक फ़ंक्शन |
|
---|---|
GetBinding(void) const
|
Binding *
यह बाइंडिंग ऑब्जेक्ट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:: |
WeaveEchoClient एपीआई इवेंट में पैरामीटर डालें. |
nl:: |
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 ऑब्जेक्ट पर कॉन्फ़िगर किए गए एपीआई इवेंट कॉलबैक फ़ंक्शन का पॉइंटर दिखाता है.
इनिट
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
WeaveEchoClient ऑब्जेक्ट की शुरुआत करें.
किसी सहकर्मी को इको मैसेज भेजने की तैयारी करने के लिए WeaveEchoClient ऑब्जेक्ट की शुरुआत करें.
ब्यौरा | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
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 को भेजने वाले मोड से बाहर नहीं लेता.
ब्यौरा | |||
---|---|---|---|
पैरामीटर |
|
भेजें
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; के इवेंट हैंडलर फ़ंक्शन को मिले हैं.
ब्यौरा | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|