nl:: Weave:: Profiles:: 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 प्रोटोकॉल के शुरू करने वाले पक्ष को लागू करता है. आईसीएमपी पिंग प्रोटोकॉल की तरह ही, Weave Echo प्रोटोकॉल का इस्तेमाल, Weave नोड के लाइव होने और रीचेबिलिटी की जांच करने के लिए किया जा सकता है.
ऐप्लिकेशन Binding ऑब्जेक्ट से पहचाने गए पीयर नोड को एक बार या बार-बार होने वाले EchoRequest मैसेज भेजने के लिए, WeaveEchoClient क्लास का इस्तेमाल कर सकते हैं. इको अनुरोधों के जवाब देने के लिए एक संबंधित क्लास मौजूद है (WeaveEchoServer देखें).
क्लाइंट बाइंडिंग
WeaveEchoClient, Weave Binding ऑब्जेक्ट लेता है. इसका इस्तेमाल, इको अनुरोध पाने वाले सही व्यक्ति की पहचान करने और उससे संपर्क करने के लिए किया जाता है. बाइंडिंग को WeaveEchoClient ऑब्जेक्ट को शुरू करने से पहले, ऐप्लिकेशन में कॉन्फ़िगर किया जा सकता है और तैयार किया जा सकता है. इसके अलावा, इसे तैयार नहीं किया जा सकता. ऐसा होने पर, WeaveEchoClient बाइंडिंग को मांग पर तैयार करने का अनुरोध करेगा (ज़्यादा जानकारी के लिए Binding::RequestPrepare() देखें).
अगर 'तैयार है' की स्थिति में जाने के बाद, बाइंडिंग की तैयारी, मांग पर नहीं की जा सकती, तो भी इसके लिए अनुरोध किया जाएगा.
भेजें दोहराने वाला मोड
WeaveEchoClient को SendReturning मोड में डालने के लिए, SendRepeating() तरीके का इस्तेमाल किया जा सकता है. इस मोड में क्लाइंट ऑब्जेक्ट, कॉन्फ़िगर किए गए इंटरवल पर पीयर को EchoRequest मैसेज का दोहराया गया क्रम भेजता है. SendReping मोड को Stop() तरीके से कॉल करके रद्द किया जा सकता है.
मल्टीकास्ट और ब्रॉडकास्ट
WeaveEchoClient ऑब्जेक्ट का इस्तेमाल, एक साथ कई लोगों को EchoRequests भेजने के लिए किया जा सकता है. ऐसा करने के लिए, Binding ऑब्जेक्ट को सही आईपीवी6 मल्टीकास्ट पते या आईपीवी4 लोकल नेटवर्क ब्रॉडकास्ट पते (255.255.255.255) के साथ कॉन्फ़िगर करें. जब WeaveEchoClient ऑब्जेक्ट को मल्टीकास्ट या ब्रॉडकास्ट पीयर पते का पता चलता है, तो EchoRequest भेजने पर यह अपने-आप MultiResponse मोड में चला जाता है.
इस मोड में, ऑब्जेक्ट उसी एक्सचेंज पर आने वाले सभी EchoResponse मैसेज को सुनना और डिलीवर करना जारी रखता है. ऑब्जेक्ट तब तक MultiResponse मोड में रहता है, जब तक: 1) ऐप्लिकेशन Stop() या Send() को कॉल करता है, 2) SendReping मोड में, दूसरा अनुरोध भेजने का समय आता है या 3) कोई जवाब नहीं मिलता है और पाने का समय खत्म हो जाता है.
एपीआई इवेंट
इस कार्रवाई के दौरान, WeaveEchoClient ऑब्जेक्ट खास कार्रवाइयों का अनुरोध करने या अहम इवेंट की सूचनाएं डिलीवर करने के लिए, ऐप्लिकेशन को कॉल करेगा. ये एपीआई इवेंट कॉल, क्लाइंट ऑब्जेक्ट पर हाल ही में कॉन्फ़िगर किए गए कॉलबैक फ़ंक्शन में किए जाते हैं. यहां बताए गए मामलों को छोड़कर, किसी इवेंट कॉलबैक के दौरान, ऐप्लिकेशन क्लाइंट की स्थिति में बदलाव कर सकते हैं. ऑब्जेक्ट का शटडाउन() तरीका कुल मिलाकर एक अपवाद है. इसे कॉलबैक के दौरान कभी भी कॉल नहीं किया जा सकता.
एपीआई इवेंट के बारे में नीचे बताया गया है:
PreparePayload
WeaveEchoClient एक EchoRequest मैसेज बनाने वाला है और पेलोड उपलब्ध कराने के लिए ऐप्लिकेशन से अनुरोध कर रहा है. अगर कोई ऐप्लिकेशन चाहे, तो वह एक नया PacketBuffer लौटा सकता है, जिसमें पेलोड डेटा मौजूद होता है. अगर ऐप्लिकेशन इस इवेंट को मैनेज नहीं करता, तो बिना अवधि वाले पेलोड वाला EchoRequest अपने-आप भेज दिया जाएगा. ऐप्लिकेशन इस कॉलबैक के दौरान WeaveEchoClient की स्थिति में बदलाव नहीं कर सकता.
RequestSent
साथी को एक EchoRequest मैसेज भेजा गया.
ResponseReceived
साथी से एक EchoResponse संदेश मिला. इवेंट के आर्ग्युमेंट में, रिस्पॉन्स पेलोड और रिस्पॉन्स मैसेज की मेटा-जानकारी शामिल होती है.
CommunicationError
EchoRequest बनाते या भेजते समय या जवाब की इंतज़ार करते समय कोई गड़बड़ी हुई. जवाब का इंतज़ार करते समय होने वाली मुख्य गड़बड़ियां या कनेक्शन का अचानक बंद होना, इन गड़बड़ियों के उदाहरण हैं. इवेंट के लिए तर्क में गड़बड़ी की वजह शामिल है.
ResponseTimeout
तय किए गए समय में EchoResponse नहीं मिला. रिस्पॉन्स टाइम आउट को Binding ऑब्जेक्ट पर, defaultResponseTimeout प्रॉपर्टी से कंट्रोल किया जाता है.
RequestAborted
पिछले मैसेज पर जवाब मिलने से पहले, एक और EchoRequest भेजने का अनुरोध किए जाने की वजह से, पहले जारी Echo एक्सचेंज को रद्द कर दिया गया था. ऐसा तब हो सकता है, जब अगला EchoRequest भेजने का समय आता है, SendReping मोड में ऐसा हो सकता है. ऐसा तब भी हो सकता है, जब ऐप्लिकेशन EchoRequest भेजने के बाद, लेकिन कोई जवाब मिलने से पहले, Send() को कॉल करता है.
जब ऑब्जेक्ट MultiResponse मोड में होता है, तो कम से कम एक 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 से जुड़े Binding ऑब्जेक्ट पर, पॉइंटर दिखाता है.
|
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
यह किसी भी चालू Echo एक्सचेंज को रोकता है और 'भेजने को दोबारा चलाने वाला मोड' रद्द करता है.
|
सार्वजनिक स्टैटिक फ़ंक्शन |
|
---|---|
DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
|
void
WeaveEchoClient एपीआई इवेंट के लिए डिफ़ॉल्ट हैंडलर.
|
स्ट्रक्चर |
|
---|---|
nl:: |
WeaveEchoClient एपीआई इवेंट में पैरामीटर डालें. |
nl:: |
WeaveEchoClient एपीआई इवेंट के लिए आउटपुट पैरामीटर. |
सार्वजनिक प्रकार
EventCallback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
EventType
EventType
प्रॉपर्टी | |
---|---|
kEvent_CommunicationError
|
EchoRequest भेजने या किसी जवाब का इंतज़ार करते समय, कम्यूनिकेशन से जुड़ी कोई गड़बड़ी हुई. |
kEvent_DefaultCheck
|
इसका इस्तेमाल ऐप्लिकेशन में, डिफ़ॉल्ट तौर पर इवेंट मैनेज करने के सही तरीके की पुष्टि करने के लिए किया जाता है. |
kEvent_PreparePayload
|
ऐप्लिकेशन से, Echo अनुरोध के लिए पेलोड तैयार करने का अनुरोध किया जाता है. |
kEvent_RequestAborted
|
पहले से जारी इको एक्सचेंज को रद्द कर दिया गया था, क्योंकि एक और एक्सचेंज शुरू करने का अनुरोध किया गया था. |
kEvent_RequestSent
|
साथी को एक EchoRequest मैसेज भेजा गया. |
kEvent_ResponseReceived
|
साथी से एक EchoResponse संदेश मिला. |
kEvent_ResponseTimeout
|
तय किए गए समय में EchoResponse नहीं मिला. |
स्थिति
State
प्रॉपर्टी | |
---|---|
kState_Idle
|
क्लाइंट ऑब्जेक्ट कुछ समय से इस्तेमाल में नहीं है. |
kState_NotInitialized
|
क्लाइंट ऑब्जेक्ट शुरू नहीं किया गया है. |
kState_PreparingBinding
|
क्लाइंट ऑब्जेक्ट, बाइंडिंग के तैयार होने का इंतज़ार कर रहा है. |
kState_RequestInProgress
|
EchoRequest मैसेज भेज दिया गया है और क्लाइंट ऑब्जेक्ट को जवाब का इंतज़ार है. |
kState_WaitingToSend
|
SendRepeating() को कॉल किया गया है और क्लाइंट ऑब्जेक्ट, अगली बार EchoRequest भेजने का इंतज़ार कर रहा है. |
सार्वजनिक विशेषताएं
AppState
void * AppState
ऐप्लिकेशन के लिए खास डेटा का पॉइंटर.
सार्वजनिक फ़ंक्शन
GetBinding
Binding * GetBinding( void ) const
WeaveEchoClient से जुड़े Binding ऑब्जेक्ट पर, पॉइंटर दिखाता है.
GetEventCallback
EventCallback GetEventCallback( void ) const
एपीआई इवेंट कॉलबैक फ़ंक्शन का पॉइंटर दिखाता है, जो फ़िलहाल WeaveEchoClient ऑब्जेक्ट पर कॉन्फ़िगर किया गया है.
Init
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
WeaveEchoClient ऑब्जेक्ट शुरू करें.
किसी साथी को इको मैसेज भेजने की तैयारी के लिए, WeaveEchoClient ऑब्जेक्ट शुरू करें.
ब्यौरा | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
IsSendRrepeating
bool IsSendRrepeating() const
अगर WeaveEchoClient ऑब्जेक्ट अभी भेजने के मोड में है, तो 'सही' दिखाता है.
RequestInProgress
bool RequestInProgress() const
अगर EchoRequest भेजा जा चुका है और WeaveEchoClient ऑब्जेक्ट जवाब का इंतज़ार कर रहा है, तो 'सही' दिखाता है.
भेजें
WEAVE_ERROR Send( void )
साथी को एक EchoRequest मैसेज भेजें.
यह तरीका पीयर नोड को EchoRequest मैसेज भेजने की प्रोसेस शुरू करता है. अगर और जब भी इससे जुड़ा EchoResponse मैसेज मिलता है, तब उसे ResponseReceived API इवेंट के ज़रिए ऐप्लिकेशन पर डिलीवर कर दिया जाएगा.
EchoRequest मैसेज बनाते समय, WeaveEchoClient मैसेज का पेलोड तैयार करने के लिए ReadyPayload API इवेंट के ज़रिए ऐप्लिकेशन को एक अनुरोध भेजता है.
इस तरीके को कॉल करते समय, अगर बाइंडिंग ऑब्जेक्ट, 'तैयार है' की स्थिति में नहीं है, तो मांग पर तैयार की जाने वाली तैयारी शुरू करने के लिए, Binding::RequestPrepare() तरीके से अनुरोध किया जाएगा. इसके बाद, भेजें कार्रवाई को तब तक सूची में रखा जाएगा, जब तक यह प्रक्रिया पूरी नहीं हो जाती. इस सूची में ज़्यादा से ज़्यादा एक पंक्ति हो सकती है. इसलिए, सूची में पहले से भेजे गए किसी भी Send() को कॉल करने पर, सिर्फ़ एक EchoRequest मिलेगा.
जब WeaveEchoClient सेंड-रिपीटिंग मोड में हो, तब Send() को कॉल करने पर (उदाहरण के लिए, SendRepeating() को पहले कॉल करने की वजह से) भेजने के साइकल को बढ़ाने और रीसेट करने का असर दिखता है. हालांकि, इससे WeaveEchoClient को भेजने के दोहराने वाले मोड से बाहर नहीं लाया जाता.
भेजें
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
किसी खास पेलोड के साथ साथी को एक EchoRequest मैसेज भेजें.
यह तरीका पीयर नोड को EchoRequest मैसेज भेजने की प्रोसेस शुरू करता है. दिए गए पेलोड बफ़र का कॉन्टेंट, साथी को EchoRequest मैसेज के पेलोड के तौर पर भेजा जाएगा. अगर और जब भी इससे जुड़ा EchoResponse मैसेज मिलता है, तब उसे ResponseReceived API इवेंट के ज़रिए ऐप्लिकेशन पर डिलीवर कर दिया जाएगा.
इस तरीके को कॉल करने पर, दिए गए पेलोड बफ़र का मालिकाना हक WeaveEchoClient ऑब्जेक्ट को मिल जाता है, जिसके पास इसे खाली करने की ज़िम्मेदारी होती है. यह तब भी लागू होता है, जब कोई तरीका सही तरीके से पूरा होता है या उसमें कोई गड़बड़ी होती है.
इस तरीके को कॉल करते समय, अगर बाइंडिंग ऑब्जेक्ट, 'तैयार है' की स्थिति में नहीं है, तो मांग पर तैयार की जाने वाली तैयारी शुरू करने के लिए, Binding::RequestPrepare() तरीके को अनुरोध किया जाएगा. इसके बाद, इस प्रक्रिया के पूरा होने तक भेजने की कार्रवाई को सूची में जोड़ दिया जाएगा. इस सूची में ज़्यादा से ज़्यादा एक पंक्ति हो सकती है. इसलिए, सूची में पहले से भेजे गए किसी भी Send() को कॉल करने पर, सिर्फ़ एक EchoRequest मिलेगा.
जब WeaveEchoClient सेंड-रिपीटिंग मोड में हो, तब Send() को कॉल करने पर (उदाहरण के लिए, SendRepeating() को पहले कॉल करने की वजह से) भेजने के साइकल को बढ़ाने और रीसेट करने का असर दिखता है. हालांकि, इससे WeaveEchoClient को भेजने के दोहराने वाले मोड से बाहर नहीं लाया जाता.
ब्यौरा | |||
---|---|---|---|
पैरामीटर |
|
SendRepeating
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज दोहराना शुरू करें.
यह तरीका, मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजने की प्रोसेस को दोहराता है. जैसा कि EchoResponse मैसेज उस साथी से मिलते हैं, वे ResponseReceived API इवेंट के ज़रिए ऐप्लिकेशन पर डिलीवर किए जाते हैं.
SendRepeating() को कॉल करने पर, WeaveEchoClient सेंड-रिपीटिंग मोड में चला जाता है. इसमें यह तब तक रहता है, जब तक Stop() कॉल नहीं किया जाता या Binding की गड़बड़ी नहीं होती. SendRepeating() को कई बार कॉल करने से, भेजने की प्रोसेस को रीसेट करने और इंटरवल को अपडेट करने का असर पड़ता है.
किसी क्रम को शुरुआती तौर पर तब भेजा जाता है, जब SendRepeating() को कॉल किया जाता है या जब SendRepeating() के कॉल होने के बाद बाइंडिंग तैयार हो जाती है (नीचे देखें). बाद में भेजा जाने वाला डेटा, तय इंटरवल पर भेजा जाता है.
जब भी कोई मैसेज भेजा जाता है, तो WeaveEchoClient मैसेज का पेलोड तैयार करने के लिए, ReadyPayload API इवेंट के ज़रिए ऐप्लिकेशन को एक अनुरोध भेजता है.
मैसेज भेजते समय, अगर बाइंडिंग ऑब्जेक्ट, 'तैयार है' की स्थिति में नहीं है, तो मांग पर तैयार की जाने वाली तैयारी शुरू करने के लिए, Binding::RequestPrepare() तरीके से अनुरोध किया जाएगा. यह प्रोसेस पूरी होने तक, बार-बार भेजा जाने वाला मैसेज रोका जाएगा. मांग पर बाइंडिंग की तैयारी के दौरान अगर कोई गड़बड़ी हुई, तो WeaveEchoClient के लिए भेजने का मोड बंद हो जाएगा.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
यह WeaveEchoClient ऑब्जेक्ट पर, एपीआई इवेंट के कॉलबैक फ़ंक्शन को सेट करता है.
बंद करें
void Shutdown( void )
पहले से शुरू किए गए WeaveEchoClient ऑब्जेक्ट को शटडाउन करें.
ध्यान रखें कि यह तरीका सिर्फ़ तब कॉल किया जा सकता है, जब Init() तरीके को पहले कॉल किया गया हो.
रोकें
void Stop( void )
यह किसी भी चालू Echo एक्सचेंज को रोकता है और 'भेजने को दोबारा चलाने वाला मोड' रद्द करता है.
WeaveEchoClient
WeaveEchoClient( void )
सार्वजनिक स्टैटिक फ़ंक्शन
DefaultEventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
WeaveEchoClient एपीआई इवेंट के लिए डिफ़ॉल्ट हैंडलर.
ऐप्लिकेशन को ऐसे किसी भी एपीआई इवेंट के लिए इस तरीके को कॉल करना होगा जिसे वे नहीं पहचानते या हैंडल नहीं करते. दिए गए पैरामीटर वही होने चाहिए जो ऐप्लिकेशन के इवेंट हैंडलर फ़ंक्शन को क्लाइंट ऑब्जेक्ट से पास किए गए हों.
ब्यौरा | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|