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{
  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 से जुड़े 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::Weave::Profiles::Echo_Next::WeaveEchoClient::InEventParam

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

nl::Weave::Profiles::Echo_Next::WeaveEchoClient::OutEventParam

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 ऑब्जेक्ट पर कॉन्फ़िगर किया गया है.

GetState

State GetState(
  void
) const 

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

Init

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

WeaveEchoClient ऑब्जेक्ट शुरू करें.

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

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

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 को भेजने के दोहराने वाले मोड से बाहर नहीं लाया जाता.

ब्यौरा
पैरामीटर
[in] payloadBuf
PacketBuffer ऑब्जेक्ट में, मिलते-जुलते ऐप्लिकेशन को भेजा जाने वाला पेलोड डेटा होता है. इस बफ़र का मालिकाना हक, सभी मामलों में 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 एपीआई इवेंट के लिए डिफ़ॉल्ट हैंडलर.

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

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