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.
সারাংশ
ওয়েভ ইকো ক্লায়েন্ট ক্লাস ওয়েভ ইকো প্রোটোকলের ইনিশিয়েটর সাইড প্রয়োগ করে। আইসিএমপি পিং প্রোটোকলের মতোই, উইভ ইকো প্রোটোকলটি একটি ওয়েভ নোডের সজীবতা এবং পৌঁছানোর ক্ষমতা পরীক্ষা করতে ব্যবহার করা যেতে পারে।
বাইন্ডিং অবজেক্ট দ্বারা চিহ্নিত একটি পিয়ার নোডে এক-অফ বা পুনরাবৃত্তিমূলক EchoRequest বার্তা পাঠাতে অ্যাপ্লিকেশনগুলি WeaveEchoClient ক্লাস ব্যবহার করতে পারে। ইকো অনুরোধে সাড়া দেওয়ার জন্য একটি সংশ্লিষ্ট শ্রেণী বিদ্যমান (দেখুন WeaveEchoServer )।
ক্লায়েন্ট বাইন্ডিং
WeaveEchoClient একটি ওয়েভ বাইন্ডিং অবজেক্ট নেয় যা ইকো অনুরোধের উদ্দিষ্ট প্রাপকের সাথে যোগাযোগ শনাক্ত করতে এবং স্থাপন করতে ব্যবহৃত হয়। WeaveEchoClient অবজেক্টের সূচনা হওয়ার আগে অ্যাপ্লিকেশন দ্বারা বাইন্ডিং কনফিগার এবং প্রস্তুত করা যেতে পারে, অথবা এটি অপ্রস্তুত রাখা যেতে পারে, এই ক্ষেত্রে WeaveEchoClient বাইন্ডিংয়ের অন-ডিমান্ড প্রস্তুতির অনুরোধ করবে (বিস্তারিত জানার জন্য Binding::RequestPrepare() দেখুন )
রেডি স্টেটে প্রবেশ করার পরে যদি এটি ব্যর্থ হয় তবে বাইন্ডিংয়ের অন-ডিমান্ড প্রস্তুতির জন্যও অনুরোধ করা হবে।
সেন্ড রিপিটিং মোড
SendRepeating() পদ্ধতিটি WeaveEchoClient-কে SendRepeating মোডে রাখতে ব্যবহার করা যেতে পারে। এই মোডে ক্লায়েন্ট অবজেক্ট একটি কনফিগার করা ব্যবধানে পিয়ারের কাছে EchoRequest বার্তাগুলির একটি পুনরাবৃত্তি ক্রম পাঠায়। SendRepeating মোড স্টপ() পদ্ধতিতে কল করে বাতিল করা যেতে পারে।
মাল্টিকাস্ট এবং ব্রডকাস্ট
একটি WeaveEchoClient অবজেক্ট একটি উপযুক্ত IPv6 মাল্টিকাস্ট ঠিকানা বা IPv4 স্থানীয় নেটওয়ার্ক সম্প্রচার ঠিকানা (255.255.255.255) সহ বাইন্ডিং অবজেক্ট কনফিগার করে একাধিক প্রাপককে একযোগে EchoRequest পাঠাতে ব্যবহার করা যেতে পারে। যখন WeaveEchoClient অবজেক্ট একটি মাল্টিকাস্ট বা সম্প্রচার পিয়ার ঠিকানা সনাক্ত করে, এটি স্বয়ংক্রিয়ভাবে EchoRequest পাঠানোর পরে মাল্টি-রিস্পন্স মোডে প্রবেশ করে।
এই মোডে, বস্তুটি একই এক্সচেঞ্জে আসা সমস্ত আগত EchoResponse বার্তা শুনতে এবং বিতরণ করতে থাকে। অবজেক্টটি মাল্টি-রিস্পন্স মোডে থাকে যতক্ষণ না: 1) অ্যাপ্লিকেশনটি Stop() বা Send() , 2) SendRepeating মোডে কল করে, অন্য অনুরোধ পাঠানোর সময় আসে, বা 3) কোনও প্রতিক্রিয়া পাওয়া যায় না এবং প্রাপ্তির সময়সীমা শেষ হয়ে যায়।
API ইভেন্ট
এটির অপারেশন চলাকালীন, WeaveEchoClient অবজেক্ট নির্দিষ্ট ক্রিয়াকলাপের অনুরোধ করতে বা গুরুত্বপূর্ণ ইভেন্টের বিজ্ঞপ্তিগুলি সরবরাহ করতে অ্যাপ্লিকেশনটিকে কল করবে। এই API ইভেন্ট কলগুলি ক্লায়েন্ট অবজেক্টে বর্তমানে কনফিগার করা কলব্যাক ফাংশনে করা হয়। উল্লেখ করা ব্যতীত, অ্যাপ্লিকেশনগুলি একটি ইভেন্ট কলব্যাকের সময় ক্লায়েন্টের অবস্থা পরিবর্তন করতে বিনামূল্যে। একটি সামগ্রিক ব্যতিক্রম হল অবজেক্টের Shutdown() পদ্ধতি, যা কলব্যাকের সময় কখনই কল করা যাবে না।
নিম্নলিখিত API ইভেন্টগুলি সংজ্ঞায়িত করা হয়েছে:
PreparePayload
WeaveEchoClient একটি EchoRequest বার্তা তৈরি করতে চলেছে এবং একটি পেলোড সরবরাহ করার জন্য অ্যাপ্লিকেশনটিকে অনুরোধ করছে৷ একটি অ্যাপ্লিকেশন ইচ্ছা করলে, এটি পেলোড ডেটা সহ একটি নতুন প্যাকেটবাফার ফেরত দিতে পারে। যদি অ্যাপ্লিকেশনটি এই ইভেন্টটি পরিচালনা না করে, তাহলে শূন্য-দৈর্ঘ্যের পেলোড সহ একটি ইকোরিকুয়েস্ট স্বয়ংক্রিয়ভাবে পাঠানো হবে। এই কলব্যাকের সময় অ্যাপ্লিকেশনটি WeaveEchoClient- এর অবস্থা পরিবর্তন করতে পারে না।
অনুরোধ পাঠানো হয়েছে
একটি EchoRequest বার্তা সহকর্মীকে পাঠানো হয়েছিল।
প্রতিক্রিয়া প্রাপ্ত
পিয়ার থেকে একটি ইকোরসপন্স বার্তা পাওয়া গেছে। ইভেন্টের আর্গুমেন্টে প্রতিক্রিয়া পেলোড এবং প্রতিক্রিয়া বার্তা সম্পর্কে মেটা-তথ্য রয়েছে।
যোগাযোগের ত্রুটি
একটি EchoRequest তৈরি বা পাঠানোর সময় বা একটি প্রতিক্রিয়ার জন্য অপেক্ষা করার সময় একটি ত্রুটি ঘটেছে৷ একটি প্রতিক্রিয়ার জন্য অপেক্ষা করার সময় ঘটতে পারে এমন ত্রুটিগুলির উদাহরণ হল মূল ত্রুটি বা সংযোগের অপ্রত্যাশিত বন্ধ। ইভেন্টের আর্গুমেন্টে ত্রুটির কারণ রয়েছে।
প্রতিক্রিয়ার সময়সীমা
বরাদ্দকৃত সময়ে একটি ইকো রেসপন্স পাওয়া যায়নি। রেসপন্স টাইমআউট বাইন্ডিং অবজেক্টে DefaultResponseTimeout বৈশিষ্ট্য দ্বারা নিয়ন্ত্রিত হয়।
অনুরোধ বাতিল করা হয়েছে
একটি অগ্রগতি ইকো এক্সচেঞ্জ বাতিল করা হয়েছে কারণ পূর্ববর্তী বার্তায় প্রতিক্রিয়া পাওয়ার আগে আরেকটি ইকোরিকোয়েস্ট পাঠানোর অনুরোধ করা হয়েছিল৷ পরবর্তী ইকোরিকোয়েস্ট পাঠানোর সময় হলে এটি সেন্ডরিপিটিং মোডে দেখা দিতে পারে। এটিও ঘটতে পারে যদি অ্যাপ্লিকেশনটি একটি ইকোরিকোয়েস্ট পাঠানোর পরে সেন্ড() কল করে কিন্তু কোনো প্রতিক্রিয়া পাওয়ার আগে।
যখন অবজেক্টটি মাল্টি-রিস্পন্স মোডে থাকে, অন্তত একটি ইকো-রিস্পন্স বার্তা প্রাপ্ত হলে ইভেন্টটি দমন করা হয়।
কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর | |
---|---|
WeaveEchoClient (void) |
পাবলিক প্রকার | |
---|---|
EventCallback )(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) | typedefvoid(* |
EventType { | enum |
State { | enum |
পাবলিক বৈশিষ্ট্য | |
---|---|
AppState | void * অ্যাপ্লিকেশন-নির্দিষ্ট ডেটার জন্য একটি পয়েন্টার। |
পাবলিক ফাংশন | |
---|---|
GetBinding (void) const | Binding * WeaveEchoClient- এর সাথে যুক্ত বাইন্ডিং অবজেক্টে একটি পয়েন্টার ফেরত দেয়। |
GetEventCallback (void) const | EventCallback WeaveEchoClient অবজেক্টে বর্তমানে কনফিগার করা API ইভেন্ট কলব্যাক ফাংশনে একটি পয়েন্টার প্রদান করে। |
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 অবজেক্টে API ইভেন্ট কলব্যাক ফাংশন সেট করে। |
Shutdown (void) | void একটি পূর্বে শুরু করা WeaveEchoClient অবজেক্ট বন্ধ করুন। |
Stop (void) | void প্রগতিতে থাকা যেকোন ইকো বিনিময় বন্ধ করে এবং সেন্ড-রিপিটিং মোড বাতিল করে। |
পাবলিক স্ট্যাটিক ফাংশন | |
---|---|
DefaultEventHandler (void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam) | void WeaveEchoClient API ইভেন্টের জন্য ডিফল্ট হ্যান্ডলার। |
কাঠামো | |
---|---|
nl:: বুনন:: প্রোফাইল:: Echo_Next:: WeaveEchoClient:: InEventParam | WeaveEchoClient API ইভেন্টে ইনপুট পরামিতি। |
nl:: বুনন:: প্রোফাইল:: Echo_Next:: WeaveEchoClient:: OutEventParam | WeaveEchoClient API ইভেন্টে আউটপুট প্যারামিটার। |
পাবলিক প্রকার
ইভেন্ট কলব্যাক
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
ইভেন্ট টাইপ
EventType
রাজ্য
State
বৈশিষ্ট্য | |
---|---|
kState_Idle | ক্লায়েন্ট অবজেক্টটি নিষ্ক্রিয়। |
kState_NotInitialized | ক্লায়েন্ট অবজেক্ট আরম্ভ করা হয় না। |
kState_PreparingBinding | ক্লায়েন্ট অবজেক্ট বাইন্ডিং প্রস্তুত হওয়ার জন্য অপেক্ষা করছে। |
kState_RequestInProgress | একটি EchoRequest বার্তা পাঠানো হয়েছে এবং ক্লায়েন্ট অবজেক্ট একটি প্রতিক্রিয়ার জন্য অপেক্ষা করছে৷ |
kState_WaitingToSend | SendRepeating() কল করা হয়েছে এবং ক্লায়েন্ট অবজেক্টটি পরবর্তী সময়ের জন্য একটি EchoRequest পাঠানোর জন্য অপেক্ষা করছে। |
পাবলিক বৈশিষ্ট্য
অ্যাপস্টেট
void * AppState
অ্যাপ্লিকেশন-নির্দিষ্ট ডেটার জন্য একটি পয়েন্টার।
পাবলিক ফাংশন
GetBinding
Binding * GetBinding( void ) const
WeaveEchoClient- এর সাথে যুক্ত বাইন্ডিং অবজেক্টে একটি পয়েন্টার ফেরত দেয়।
GetEventCallback
EventCallback GetEventCallback( void ) const
WeaveEchoClient অবজেক্টে বর্তমানে কনফিগার করা API ইভেন্ট কলব্যাক ফাংশনে একটি পয়েন্টার প্রদান করে।
ইনিট
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 প্রিপেয়ারপেলোড এপিআই ইভেন্টের মাধ্যমে বার্তাটির পেলোড প্রস্তুত করার জন্য অ্যাপ্লিকেশনটির কাছে একটি অনুরোধ করে।
এই পদ্ধতিটি কল করার সময় যদি বাইন্ডিং অবজেক্টটি প্রস্তুত অবস্থায় না থাকে, তবে চাহিদা অনুযায়ী প্রস্তুতি শুরু করার জন্য Binding::RequestPrepare() পদ্ধতিতে একটি অনুরোধ করা হবে। এই প্রক্রিয়াটি সম্পূর্ণ না হওয়া পর্যন্ত প্রেরণ অপারেশনটি সারিবদ্ধ থাকবে। এই সারির সর্বোচ্চ গভীরতা এক। এইভাবে Send() কে যেকোনও কল করার সময় সারিতে একটি পূর্ববর্তী পাঠানোর ফলে শুধুমাত্র একটি ইকোরিকুয়েস্ট পাঠানো হবে।
WeaveEchoClient সেন্ড-রিপিটিং মোডে থাকাকালীন Send() কল করা (অর্থাৎ SendRepeating() তে পূর্ববর্তী কলের কারণে) প্রেরণ চক্রকে ত্বরান্বিত এবং রিসেট করার প্রভাব রয়েছে কিন্তু WeaveEchoClient-কে সেন্ড-রিপিটিং মোড থেকে বের করে দেয় না।
পাঠান
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
একটি নির্দিষ্ট পেলোড সহ পিয়ারকে একটি EchoRequest বার্তা পাঠান।
এই পদ্ধতিটি পিয়ার নোডে একটি EchoRequest বার্তা পাঠানোর প্রক্রিয়া শুরু করে। সরবরাহকৃত পেলোড বাফারের বিষয়বস্তু EchoRequest বার্তার পেলোড হিসাবে পিয়ারের কাছে পাঠানো হবে। যদি এবং যখন একটি সংশ্লিষ্ট EchoResponse বার্তা গৃহীত হয় তখন এটি ResponseReceived API ইভেন্টের মাধ্যমে অ্যাপ্লিকেশনে বিতরণ করা হবে।
এই পদ্ধতিতে কল করার পরে, সরবরাহকৃত পেলোড বাফারের মালিকানা WeaveEchoClient অবজেক্টের কাছে চলে যায়, যার এটি মুক্ত করার দায়িত্ব রয়েছে। পদ্ধতিটি সফলভাবে বা একটি ত্রুটির সাথে সম্পন্ন হোক না কেন এটি সত্য।
এই পদ্ধতিটি কল করার সময় যদি বাইন্ডিং অবজেক্টটি প্রস্তুত অবস্থায় না থাকে, তবে চাহিদা অনুযায়ী প্রস্তুতি শুরু করার জন্য Binding::RequestPrepare() পদ্ধতিতে একটি অনুরোধ করা হবে। এই প্রক্রিয়াটি সম্পূর্ণ না হওয়া পর্যন্ত প্রেরণ অপারেশনটি সারিবদ্ধ থাকবে। এই সারির সর্বোচ্চ গভীরতা এক। এইভাবে Send() কে যেকোনও কল করার সময় সারিতে একটি পূর্ববর্তী পাঠানোর ফলে শুধুমাত্র একটি ইকোরিকুয়েস্ট পাঠানো হবে।
WeaveEchoClient সেন্ড-রিপিটিং মোডে থাকাকালীন Send() কল করা (অর্থাৎ SendRepeating() তে পূর্ববর্তী কলের কারণে) প্রেরণ চক্রকে ত্বরান্বিত এবং রিসেট করার প্রভাব রয়েছে কিন্তু WeaveEchoClient-কে সেন্ড-রিপিটিং মোড থেকে বের করে দেয় না।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
|
সেন্ড রিপিটিং
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
পিয়ারের কাছে EchoRequest বার্তাগুলির পুনরাবৃত্তিমূলক ক্রম প্রেরণ শুরু করুন৷
এই পদ্ধতিটি পিয়ারকে EchoRequest বার্তা পাঠানোর একটি পুনরাবৃত্তি প্রক্রিয়া শুরু করে। EchoResponse বার্তাগুলি সহকর্মীর কাছ থেকে প্রাপ্ত হওয়ায় সেগুলি ResponseReceived API ইভেন্টের মাধ্যমে অ্যাপ্লিকেশনে বিতরণ করা হয়।
যখন SendRepeating() কল করা হয়, তখন WeaveEchoClient সেন্ড-রিপিটিং মোডে প্রবেশ করে যেখানে এটি Stop() বলা না হওয়া পর্যন্ত বা বাইন্ডিং এরর না হওয়া পর্যন্ত থাকে। SendRepeating() কে একাধিকবার কল করার ফলে সেন্ড সাইকেল রিসেট করা এবং ব্যবধান আপডেট করার প্রভাব রয়েছে।
SendRepeating() কল করার সময় বা যখনই SendRepeating() কল করার পরে বাইন্ডিং প্রস্তুত হয়ে যায় তখন একটি সিকোয়েন্সের প্রাথমিক প্রেরণ ঘটে (নীচে দেখুন)। পরবর্তী প্রেরণগুলি নির্দিষ্ট ব্যবধানে এর পরে ঘটে।
প্রতিবার পাঠানোর সময়, WeaveEchoClient প্রিপেয়ারপেলোড এপিআই ইভেন্টের মাধ্যমে বার্তাটির পেলোড প্রস্তুত করার জন্য অ্যাপ্লিকেশনটিতে একটি অনুরোধ করে।
যদি বার্তা পাঠানোর সময় বাইন্ডিং অবজেক্টটি প্রস্তুত অবস্থায় না থাকে, তাহলে চাহিদা অনুযায়ী প্রস্তুতি শুরু করার জন্য Binding::RequestPrepare() পদ্ধতিতে একটি অনুরোধ করা হবে। এই প্রক্রিয়াটি সম্পূর্ণ না হওয়া পর্যন্ত আরও বারবার বার্তা পাঠানো থামানো হবে। অন-ডিমান্ড বাইন্ডিং প্রস্তুতির সময় ব্যর্থতার ফলে WeaveEchoClient সেন্ড-রিপিটিং মোড ছেড়ে চলে যাবে।
সেট ইভেন্ট কলব্যাক
void SetEventCallback( EventCallback eventCallback )
WeaveEchoClient অবজেক্টে API ইভেন্ট কলব্যাক ফাংশন সেট করে।
শাটডাউন
void Shutdown( void )
একটি পূর্বে শুরু করা WeaveEchoClient অবজেক্ট বন্ধ করুন।
মনে রাখবেন যে এই পদ্ধতিটি শুধুমাত্র তখনই বলা যেতে পারে যদি Init() পদ্ধতিটি আগে কল করা হয়ে থাকে।
থামো
void Stop( void )
প্রগতিতে থাকা যেকোন ইকো বিনিময় বন্ধ করে এবং সেন্ড-রিপিটিং মোড বাতিল করে।
WeaveEchoClient
WeaveEchoClient( void )
পাবলিক স্ট্যাটিক ফাংশন
ডিফল্ট ইভেন্টহ্যান্ডলার
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
WeaveEchoClient API ইভেন্টের জন্য ডিফল্ট হ্যান্ডলার।
কোনো API ইভেন্টের জন্য এই পদ্ধতিতে কল করার জন্য অ্যাপ্লিকেশনের প্রয়োজন হয় যা তারা চিনতে পারে না বা পরিচালনা করে না। সরবরাহকৃত পরামিতিগুলি অবশ্যই ক্লায়েন্ট অবজেক্টের দ্বারা অ্যাপ্লিকেশনের ইভেন্ট হ্যান্ডলার ফাংশনে পাস করা প্যারামিটারগুলির মতোই হতে হবে৷
বিস্তারিত | |||||||||
---|---|---|---|---|---|---|---|---|---|
পরামিতি |
|