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 ऑब्जेक्ट के शुरू होने से पहले, Binding को कॉन्फ़िगर और तैयार किया जा सकता है या इसे बिना तैयार रहने दिया जा सकता है. ऐसे में, WeaveEchoClient की मदद से, बाइंडिंग को मांग पर तैयार करने का अनुरोध किया जा सकता है (ज़्यादा जानकारी के लिए, Binding::Request Ready() देखें).

मांग पर बाइंडिंग को तैयार करने का अनुरोध भी किया जाएगा. ऐसा तब किया जाएगा, जब 'रेडी' की स्थिति में आने के बाद यह फ़ॉर्म काम नहीं करेगा.

ईमेल को दोहराने वाला मोड

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

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

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

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

एपीआई इवेंट

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

यहां दिए गए एपीआई इवेंट से जुड़ी जानकारी दी गई है:

PreparePayload

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

RequestSent

पीयर को एक EchoRequest मैसेज भेजा गया.

ResponseReceived

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

CommunicationError

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

ResponseTimeout

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

RequestAborted

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

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

कंस्ट्रक्टर और डिस्ट्रक्टर

WeaveEchoClient(void)

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

EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) typedef
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
पहले से चल रहे किसी भी इको एक्सचेंज को बंद कर देता है और ईमेल को दोहराने वाला मोड रद्द कर देता है.

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

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 ऑब्जेक्ट की मौजूदा स्थिति का पता लगाएं.

शुरू करें

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 की मदद से, ऐप्लिकेशन को अनुरोध भेजा जाता है, ताकि वह मैसेज के पेलोड को तैयार करने के लिए, PromptPayload API इवेंट के ज़रिए ऐप्लिकेशन को अनुरोध कर सके.

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

जब WeaveEchoClient की मैसेज रिपीटिंग मोड (जैसे कि SendRepeating() को पिछले कॉल करने की वजह से) कॉल किया जाता है, तब Send() को कॉल करने पर 'भेजने की अवधि' को तेज़ और रीसेट किया जाता है. हालांकि, यह WeaveEchoClient के ज़रिए मैसेज को दोहराने वाले मोड से बाहर नहीं लेता है.

भेजें

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

किसी खास पेलोड के साथ, साथी को EchoRequest मैसेज भेजें.

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

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

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

जब WeaveEchoClient की मैसेज रिपीटिंग मोड (जैसे कि SendRepeating() को पिछले कॉल करने की वजह से) कॉल किया जाता है, तब Send() को कॉल करने पर 'भेजने की अवधि' को तेज़ और रीसेट किया जाता है. हालांकि, यह WeaveEchoClient के ज़रिए मैसेज को दोहराने वाले मोड से बाहर नहीं लेता है.

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

SendRepeating

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

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

यह तरीका, मिलते-जुलते ऐप्लिकेशन को EchoRequest मैसेज भेजने की प्रक्रिया को फिर से शुरू करता है. EchoResponse से मैसेज मिलने पर, उन्हें ResponseReceived API इवेंट की मदद से ऐप्लिकेशन में भेजा जाता है.

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

किसी क्रम को पहली बार भेजा जाना तब होता है, जब SendRepeating() को कॉल किया जाता है या फिर SendRepeating() को कॉल करने के बाद बाइंडिंग तैयार हो जाती है (नीचे देखें). इसके बाद, तय इंटरवल में यह भेजा जाता है.

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

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

SetEventCallback

void SetEventCallback(
  EventCallback eventCallback
)

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

बंद है

void Shutdown(
  void
)

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

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

रोकें

void Stop(
  void
)

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

WeaveEchoClient

 WeaveEchoClient(
  void
)

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

DefaultEventHandler

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

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

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

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