nl:: Weave:: Profiles:: DataManagement_Current:: CommandSender
#include <src/lib/profiles/data-management/Current/CommandSender.h>
সারাংশ
মনে রাখবেন:এই ক্লাসটি কমান্ড পাঠানোর প্রোটোকল সংক্রান্ত বিবরণ এনক্যাপসুলেট করে, যা অ্যাপ্লিকেশনের জন্য সংশ্লিষ্ট মেকানিক্সকে সহজ করে তোলে। অ্যাপ্লিকেশনটি একটি PacketBuffer প্রদান করে যাতে কমান্ডের পেলোড এবং আর্গুমেন্টের একটি ঐচ্ছিক সেট থাকে যা কমান্ড হেডারের কন্টেন্টের পাশাপাশি কমান্ডের আচরণ পরিবর্তন করে। কমান্ড ম্যানেজ করার ক্ষেত্রে এই র্যাপারের উপযোগিতা সত্যিই সীমিত, প্রধানত নিরাপত্তা যাচাইকরণ এবং ডেটা সিরিয়ালাইজেশন/ডি-সিরিয়ালাইজেশনের সাথে জড়িত জটিলতা/নমনীয়তার কারণে।
কমান্ড যাচাইকরণের বিবরণ এখনও ঠিক করা হয়নি
এই ক্লাসটি অ্যাপ্লিকেশনগুলিকে অনুমান করতেও সাহায্য করে যে কোনও সংশ্লিষ্ট TraitDataSink-এর মধ্যে থাকা ডেটা কমান্ডের সাইড-ইফেক্টগুলি (কমান্ডের উত্তরে প্রদত্ত ভার্সনের উপর ভিত্তি করে) ধরেছে কিনা। সেই অবজেক্টের স্টোরেজ ম্যানেজ করার দায়িত্ব অ্যাপ্লিকেশনের।
Weave বাইন্ডিং
এই ক্লাসের একটি অবজেক্ট Weave Binding-এর মাধ্যমে শুরু করা যেতে পারে, যা কমান্ড পাঠানোর জন্য ডিফল্ট Binding হিসেবে কাজ করবে। ব্যবহারকারী SendCommand()-এর প্রতিটি কলের জন্য একটি বাইন্ডিং প্রদান করতে পারেন, যা ডিফল্ট বাইন্ডিং ওভাররাইড করবে। ডিফল্ট Binding প্রদান করা আবশ্যক নয়, তবে CommandSender-এ প্রদান করা যেকোনও বাইন্ডিং আগে থেকেই ইনিশিয়ালাইজ করা থাকতে হবে।
EventCallback
কমান্ড পাঠানোর পরে ঘটা ইভেন্ট সম্পর্কে আপডেট পেতে চাইলে, ব্যবহারকারীকে এই ধরনের ফাংশন অবশ্যই নির্ধারণ করতে হবে (নিচে "API ইভেন্ট" দেখুন)। কমান্ড পাঠানোর পরে কী হবে তা নিয়ে ব্যবহারকারী চিন্তিত না হলে এটি NULL হতে পারে।
API ইভেন্ট
কমান্ড পাঠানোর পরে নিম্নলিখিত ইভেন্টগুলি সম্ভাব্য ফলাফল হিসেবে দেখা যেতে পারে:
CommunicationError
কমান্ড তৈরি বা পাঠানোর সময় অথবা উত্তরের জন্য অপেক্ষা করার সময় কোনও সমস্যা হয়েছে। উত্তরের জন্য অপেক্ষা করার সময় যেসব সমস্যা হতে পারে তার মধ্যে অন্যতম হল কী সংক্রান্ত সমস্যা বা কানেকশন অপ্রত্যাশিতভাবে বন্ধ হয়ে যাওয়া। সমস্যার কারণ EventCallback হ্যান্ডলারের InEventParam আর্গুমেন্টে উল্লেখ করা থাকবে।
InProgressReceived
প্রাপক 'প্রসেস চলছে' মেসেজ পাঠাতে পারেন, যার অর্থ হল কমান্ড পাওয়া গেছে, তবে এখনও সম্পূর্ণ হয়নি। সম্পূর্ণ হয়ে গেলে, প্রাপক একটি Response বা StatusReport পাঠাবেন। 'প্রসেস চলছে' মেসেজ পাঠানোর প্রয়োজন নেই।
StatusReportReceived
StatusReport পাওয়ার অর্থ হল Command প্রসেস করার সময় কোনও সমস্যা হয়েছে। InEventParam-এর মাধ্যমে StatusReport অ্যাক্সেস করা যাবে।
ResponseReceived
উত্তর পাওয়ার অর্থ হল, কমান্ড প্রাপক কমান্ড সফলভাবে ম্যানেজ করেছেন। Response-এ পেলোড থাকতে পারে বা নাও থাকতে পারে। অ্যাপ্লিকেশন যদি প্যাকেট বাফার রাখতে চায়, তাহলে এটি রেফারেন্স কাউন্ট বাড়াতে ExchangeContext::AddRef() কল করতে পারে।
পাবলিক প্রকার |
|
|---|---|
EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
|
typedefvoid(*
|
EventType
|
enum |
পাবলিক অ্যাট্রিবিউট |
|
|---|---|
mAppState = NULL
|
void *
|
mSyncronizedTraitState = NULL
|
|
পাবলিক স্ট্যাটিক ফাংশন |
|
|---|---|
DefaultEventHandler(void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
|
পাবলিক ফাংশন |
|
|---|---|
Close(bool aAbortNow)
|
void
|
Init(nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType)
|
|
SendCommand(nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams)
|
|
SetSynchronizedTraitState(SynchronizedTraitState *aTraitState)
|
void
|
স্ট্রাক্ট |
|
|---|---|
|
nl:: |
কাস্টম কমান্ডের প্রাপক প্রেরককে ডেটা ফেরত পাঠিয়েছে। |
|
nl:: |
EventCallback ফাংশন থেকে CommandSender অবজেক্টে ডেটা ফেরত পাঠানো হয়েছে। |
|
nl:: |
SendCommand()-এ পাস করার জন্য আর্গুমেন্ট এনক্যাপসুলেট করে। |
|
nl:: |
|
পাবলিক প্রকার
EventCallback
void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)
EventType
EventType
পাবলিক অ্যাট্রিবিউট
mAppState
void * mAppState = NULL
mSyncronizedTraitState
SynchronizedTraitState * mSyncronizedTraitState = NULL
পাবলিক স্ট্যাটিক ফাংশন
DefaultEventHandler
void DefaultEventHandler( void *aAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
পাবলিক ফাংশন
বন্ধ করুন
void Close( bool aAbortNow )
Init
WEAVE_ERROR Init( nl::Weave::Binding *aBinding, const EventCallback aEventCallback, void *const aAppState )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, ResourceIdentifier & aResourceId, uint32_t aProfileId, uint32_t aCommandType )
SendCommand
WEAVE_ERROR SendCommand( nl::Weave::PacketBuffer *aPayload, nl::Weave::Binding *aBinding, SendParams & aSendParams )