nl:: বুনা:: প্রোফাইল:: ডেটা ম্যানেজমেন্ট_কারেন্ট:: কমান্ড সেন্ডার

#include <src/lib/profiles/data-management/Current/CommandSender.h>

সারসংক্ষেপ

দ্রষ্টব্য: এই ক্লাসটি কমান্ড পাঠানোর প্রোটোকল বিশদগুলিকে অন্তর্ভুক্ত করে, অ্যাপ্লিকেশনগুলির জন্য জড়িত মেকানিক্সকে সরল করে। অ্যাপ্লিকেশনটি কমান্ডের পেলোড সহ একটি প্যাকেটবাফার প্রদান করে এবং সেইসাথে আর্গুমেন্টের একটি ঐচ্ছিক সেট যা কমান্ড হেডারের বিষয়বস্তু এবং কমান্ডের আচরণ পরিবর্তন করে। কমান্ড পরিচালনার চারপাশে এই মোড়কের উপযোগিতা প্রকৃতপক্ষে সীমিত, প্রধানত নিরাপত্তা যাচাইকরণ এবং ডেটা সিরিয়ালাইজেশন/ডি-সিরিয়ালাইজেশনের সাথে জড়িত জটিলতা/নমনীয়তার কারণে।

কমান্ড যাচাইকরণের বিশদটি এখনও টিবিডি

এই ক্লাসটি অ্যাপ্লিকেশনগুলিকে অনুমান করতেও সাহায্য করে যে কোনও সংশ্লিষ্ট TraitDataSink-এর মধ্যে থাকা ডেটা কমান্ডের পার্শ্ব-প্রতিক্রিয়াগুলি ধরেছে কিনা (কমান্ড প্রতিক্রিয়াতে দেওয়া সংস্করণের উপর ভিত্তি করে)। অ্যাপ্লিকেশনটি সেই বস্তুর স্টোরেজ পরিচালনার জন্য দায়ী।

ওয়েভ বাঁধাই

এই ক্লাসের একটি অবজেক্টকে ওয়েভ বাইন্ডিং দিয়ে শুরু করা যেতে পারে, যা কমান্ড পাঠাতে ব্যবহার করার জন্য ডিফল্ট বাইন্ডিং হিসেবে কাজ করবে। ব্যবহারকারী SendCommand() এর প্রতিটি কলে একটি বাইন্ডিং প্রদান করতে পারে, যা ডিফল্ট বাইন্ডিংকে ওভাররাইড করবে। একটি ডিফল্ট বাইন্ডিং প্রদান করা আবশ্যক নয়, তবে CommandSender- এ প্রদত্ত যেকোন বাইন্ডিং ইতিমধ্যেই আরম্ভ করা আবশ্যক।

ইভেন্ট কলব্যাক

ব্যবহারকারীকে অবশ্যই এই ধরনের একটি ফাংশন সংজ্ঞায়িত করতে হবে যদি তারা কমান্ড পাঠানোর পরে ঘটে যাওয়া ইভেন্টগুলি সম্পর্কে আপডেট করতে চায় (নীচে "API ইভেন্টগুলি" দেখুন)। এটি NULL হতে পারে যদি ব্যবহারকারী কমান্ড পাঠানোর পরে কি ঘটবে তা চিন্তা না করে।

API ইভেন্ট

নিম্নলিখিত ইভেন্টগুলি একটি কমান্ড পাঠানোর পরে সম্ভাব্য ফলাফল:

যোগাযোগে ত্রুটি

কমান্ড তৈরি বা পাঠানোর সময় বা প্রতিক্রিয়ার জন্য অপেক্ষা করার সময় একটি ত্রুটি ঘটেছে। একটি প্রতিক্রিয়ার জন্য অপেক্ষা করার সময় ঘটতে পারে এমন ত্রুটিগুলির উদাহরণ হল মূল ত্রুটি বা সংযোগের অপ্রত্যাশিত বন্ধ। ইভেন্টকলব্যাক হ্যান্ডলারের কাছে InEventParam আর্গুমেন্টে ত্রুটির কারণ থাকবে।

ইনপ্রগ্রেস রিসিভড

প্রাপক একটি 'প্রগতিতে চলছে' বার্তা পাঠাতে পারে যা নির্দেশ করে যে কমান্ডটি গৃহীত হয়েছে, কিন্তু এখনও সম্পূর্ণ হয়নি। একবার সম্পূর্ণ হলে, প্রাপক একটি প্রতিক্রিয়া বা স্ট্যাটাস রিপোর্ট পাঠাবে। একটি 'প্রগতিতে' বার্তা পাঠানোর প্রয়োজন নেই৷

স্ট্যাটাস রিপোর্ট প্রাপ্ত

একটি StatusReport এর প্রাপ্তি বোঝায় যে কমান্ড প্রক্রিয়াকরণে একটি ত্রুটি ছিল। InEventParam-এর মাধ্যমে StatusReport অ্যাক্সেস করা যেতে পারে।

প্রতিক্রিয়া প্রাপ্ত

একটি প্রতিক্রিয়া প্রাপ্তি বোঝায় যে কমান্ড প্রাপক কমান্ডটি সফলভাবে পরিচালনা করেছেন। প্রতিক্রিয়াতে একটি পেলোড থাকতে পারে বা নাও থাকতে পারে। যদি অ্যাপলিকেশন প্যাকেট বাফার রাখতে চায়, তাহলে রেফ কাউন্ট বাড়ানোর জন্য এটি ExchangeContext::AddRef() কল করতে পারে।

পাবলিক প্রকার

EventCallback )(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam) typedef
void(*
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:: বুনা:: প্রোফাইল:: ডেটা ম্যানেজমেন্ট_কারেন্ট:: কমান্ড সেন্ডার:: সিঙ্ক্রোনাইজড ট্র্যাটস্টেট

পাবলিক প্রকার

ইভেন্ট কলব্যাক

void(* EventCallback)(void *const aAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutEventParam)

ইভেন্টের ধরণ

 EventType

পাবলিক বৈশিষ্ট্য

mAppState

void * mAppState = NULL

mSyncronizedTraitState

SynchronizedTraitState * mSyncronizedTraitState = NULL

পাবলিক স্ট্যাটিক ফাংশন

ডিফল্ট ইভেন্টহ্যান্ডলার

void DefaultEventHandler(
  void *aAppState,
  EventType aEvent,
  const InEventParam & aInParam,
  OutEventParam & aOutParam
)

পাবলিক ফাংশন

বন্ধ

void Close(
  bool aAbortNow
)

এটা

WEAVE_ERROR Init(
  nl::Weave::Binding *aBinding,
  const EventCallback aEventCallback,
  void *const aAppState
)

সেন্ডকমান্ড

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  ResourceIdentifier & aResourceId,
  uint32_t aProfileId,
  uint32_t aCommandType
)

সেন্ডকমান্ড

WEAVE_ERROR SendCommand(
  nl::Weave::PacketBuffer *aPayload,
  nl::Weave::Binding *aBinding,
  SendParams & aSendParams
)

SynchronizedTraitState সেট করুন

void SetSynchronizedTraitState(
  SynchronizedTraitState *aTraitState
)