nl::Weave::Profiles::DataManagement_Legacy::Binding

#include <src/lib/profiles/data-management/Legacy/Binding.h>

বাইন্ডিং ক্লাস Weave ব্যবহার করে কোনও অ্যাপ্লিকেশন এন্টিটির হয়ে কমিউনিকেশন স্টেট ম্যানেজ করে।

সারাংশ

কোনও অ্যাপ্লিকেশন রিমোট এন্টিটির সাথে যোগাযোগ করার জন্য Weave ব্যবহার করতে চাইলে, তার জন্য অনেক বিকল্প থাকে। বাইন্ডিং ক্লাস এইসব বিকল্পকে একত্রিত করে এবং এমনভাবে সাজায় যাতে সহজ কাজগুলি সহজে এবং কঠিন কাজগুলি অন্তত সমাধানযোগ্য হয়। যেসব বিকল্প কভার করা হয়েছে তার মধ্যে রয়েছে:

  • পরিচিত পিয়ার নোডের সাথে ইউনিকাস্ট UDP কমিউনিকেশন।
  • "যেকোনও" নোডের সাথে UDP ব্রডকাস্ট।
  • পরিচিত পিয়ার নোডের সাথে ইউনিকাস্ট WRMP কমিউনিকেশন।
  • পরিচিত পিয়ার নোডের সাথে TCP কমিউনিকেশন।
  • সেট-আপ করার জন্য সার্ভিস ম্যানেজার ইনস্ট্যান্স ব্যবহার করে পরিচিত সার্ভিস এন্ডপয়েন্টের সাথে TCP কমিউনিকেশন।
  • আগে থেকে তৈরি কানেকশনের ভিত্তিতে TCP কমিউনিকেশন।

কনস্ট্রাক্টর ও ডেস্ট্রাক্টর

Binding(void)
Binding অবজেক্টের জন্য ডিফল্ট কনস্ট্রাক্টর।
~Binding(void)
Binding অবজেক্টের জন্য ডেস্ট্রাক্টর।

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

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
enum
Binding অবজেক্ট স্ট্যাটাসের সেট।

পাবলিক অ্যাট্রিবিউট

mAuthMode
WeaveAuthMode
Weave যাচাইকরণ মোড ব্যবহার করা হবে।
mConnection
এই বাইন্ডিংয়ে বর্তমানে ব্যবহার করা Weave কানেকশনের একটি পয়েন্টার।
mEngine
এই Binding-এর সাথে সম্পর্কিত ProtocolEngine অবজেক্টের একটি পয়েন্টার।
mPeerNodeId
uint64_t
বাইন্ডিং টার্গেটের ৬৪-বিট নোড আইডি।
mServiceMgr
এই বাইন্ডিং সম্পূর্ণ করার জন্য ব্যবহার করার জন্য (ঐচ্ছিক) ServiceManager অবজেক্টের একটি পয়েন্টার।
mState
uint8_t
বর্তমান Binding অবজেক্টের স্ট্যাটাস।
mTransport
uint8_t
এই বাইন্ডিং সম্পূর্ণ করতে যে ট্রান্সপোর্ট ব্যবহার করা হবে।

পাবলিক ফাংশন

CompleteConfirm(WeaveConnection *aConnection)
void
বাইন্ড অনুরোধের কনফার্মেশন ম্যানেজ করুন।
CompleteConfirm(StatusReport & aReport)
void
বাইন্ড অনুরোধের ব্যর্থতা ম্যানেজ করুন।
CompleteConfirm(void)
void
বাইন্ড অনুরোধের কনফার্মেশন ম্যানেজ করুন।
CompleteRequest(ProtocolEngine *aEngine)
বাইন্ডিং সম্পূর্ণ করার অনুরোধ।
Connect(WeaveConnection *aConnection)
সম্পূর্ণ কানেকশন প্রদান করে TCP বাইন্ডিং সম্পূর্ণ করুন।
Finalize(void)
void
"আনকমপ্লিট" বাইন্ডিং এবং এটি ফ্রি করুন।
Finalize(WEAVE_ERROR aErr)
void
"আনকমপ্লিট" বাইন্ডিং এবং এটি ফ্রি করুন।
Free(void)
void
বাইন্ডিং স্টেট মুছে দিন।
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Binding থেকে একটি ExchangeContext অবজেক্ট তৈরি করুন।
IncompleteIndication(StatusReport & aReport)
void
বাইন্ডিংয়ের ব্যর্থতা ম্যানেজ করুন।
Init(const uint64_t & aPeerNodeId)
শুধুমাত্র একটি নোড আইডি দিয়ে Binding শুরু করুন।
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
পিয়ার আইডি ও ট্রান্সপোর্টের উপর ভিত্তি করে বাইন্ডিং অবজেক্ট শুরু করুন।
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
পরিষেবা এন্ডপয়েন্টে বাইন্ডিং অবজেক্ট ইনিশিয়ালাইজ করুন।
Init(WeaveConnection *aConnection)
WeaveConnection-এর সাথে Binding অবজেক্ট শুরু করুন।
IsComplete(void)
bool
বাইন্ডিং সম্পূর্ণ হয়েছে কিনা তা চেক করুন।
IsFree(void)
bool
বাইন্ডিং ফ্রি কিনা তা চেক করুন।
UncompleteRequest(void)
void
বাইন্ডিং অসম্পূর্ণ থেকে যায়।
UncompleteRequest(WEAVE_ERROR aErr)
void
বাইন্ডিং অসম্পূর্ণ থেকে যায়।

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

@১৬৫

 @165

Binding অবজেক্ট স্ট্যাটাসের সেট।

প্রপার্টি
kState_Complete

Binding-এর স্ট্যাটাস যা সম্পূর্ণ এবং ব্যবহারের জন্য প্রস্তুত।

kState_Completing

বাইন্ডিং-এর স্ট্যাটাস যা সম্পূর্ণ হওয়ার প্রসেসে রয়েছে।

kState_Incomplete

বাইন্ডিং-এর প্রাথমিক (এবং চূড়ান্ত) অবস্থা।

পাবলিক অ্যাট্রিবিউট

mAuthMode

WeaveAuthMode mAuthMode

Weave যাচাইকরণ মোড ব্যবহার করা হবে।

(READ_ONLY)

এই বাইন্ডিং দ্বারা পরিচালিত সব কমিউনিকেশনে এই যাচাইকরণ মোড ব্যবহার করা হয়।

mConnection

WeaveConnection * mConnection

এই বাইন্ডিংয়ে বর্তমানে ব্যবহার করা Weave কানেকশনের একটি পয়েন্টার।

(শুধু পড়া যাবে)

TCP বাইন্ডিং কোনও কানেকশনের সাথে সাথে সাথে শুরু করা যেতে পারে অথবা সম্পূর্ণ হওয়ার সময় একটি বরাদ্দ করা যেতে পারে।

mEngine

ProtocolEngine * mEngine

এই Binding-এর সাথে সম্পর্কিত ProtocolEngine অবজেক্টের একটি পয়েন্টার।

একটি নির্দিষ্ট প্রোটোকল ইঞ্জিনের সাপেক্ষে সাধারণত একটি বাইন্ডিং সম্পূর্ণ হয়, যা বেশিরভাগই MessageLayer অ্যাক্সেস করার উপায় হিসাবে ব্যবহৃত হয়। আমরা এখানে এটি ট্র্যাক করি।

mPeerNodeId

uint64_t mPeerNodeId

বাইন্ডিং টার্গেটের ৬৪-বিট নোড আইডি।

(শুধু পড়া যাবে)

প্রতিটি বাইন্ডিং-এর একটি টার্গেট এন্টিটি থাকে, যার নাম এখানে দেওয়া আছে। Weave নোড আইডি ছাড়াও এটি কোনও পরিষেবা এন্ডপয়েন্টের নাম হতে পারে।

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

এই বাইন্ডিং সম্পূর্ণ করার জন্য ব্যবহার করার জন্য (ঐচ্ছিক) ServiceManager অবজেক্টের একটি পয়েন্টার।

(শুধু পড়া যাবে)

Weave পরিষেবার সাথে বাইন্ডিং করার সময়, Weave নোড আইডির পরিবর্তে ইনিশিয়ালাইজেশনের সময় ৬৪-বিট পরিষেবা এন্ডপয়েন্ট আইডি প্রদান করা হতে পারে। এই ক্ষেত্রে, বাইন্ডিং সম্পূর্ণ করার জন্য একটি ServiceManager অবজেক্টও প্রয়োজন। সাধারণ TCP বা WRMP বাইন্ডিংয়ের জন্য ServiceManager অবজেক্টের প্রয়োজন হয় না।

mState

uint8_t mState

বর্তমান Binding অবজেক্টের স্ট্যাটাস।

একবারে শুধুমাত্র একটি "সম্পূর্ণ" অপারেশন চালানো যেতে পারে এবং যেকোনও ক্ষেত্রে, আপনি যদি সম্পূর্ণ করা বাইন্ডিং সম্পূর্ণ করতে বলেন, তাহলে এটি অবিলম্বে কনফার্ম ফাংশনকে কল করে। নিচের স্টেট ভেরিয়েবল বর্তমান স্টেট ট্র্যাক করে এবং লকআউট হিসেবে কাজ করে।

mTransport

uint8_t mTransport

এই বাইন্ডিং সম্পূর্ণ করতে যে ট্রান্সপোর্ট ব্যবহার করা হবে।

(শুধু পড়া যাবে)

mTransport-এর সম্ভাব্য ভ্যালু DMConstants.h-এ উল্লেখ করা আছে।

পাবলিক ফাংশন

বাঁধাই

 Binding(
  void
)

Binding অবজেক্টের জন্য ডিফল্ট কনস্ট্রাক্টর।

সব ইন্টার্নাল স্টেট মুছে দেয়।

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

বাইন্ড অনুরোধের কনফার্মেশন ম্যানেজ করুন।

বিবরণ
প্যারামিটারগুলি
[in] aConnection
বাইন্ডিং টার্গেটে অ্যাক্টিভ WeaveConnection-এর একটি পয়েন্টার।

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

বাইন্ড অনুরোধের ব্যর্থতা ম্যানেজ করুন।

বিবরণ
প্যারামিটারগুলি
[in] aReport
ব্যর্থতার বিবরণ সহ StatusReport অবজেক্টের রেফারেন্স।

CompleteConfirm

void CompleteConfirm(
  void
)

বাইন্ড অনুরোধের কনফার্মেশন ম্যানেজ করুন।

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

বাইন্ডিং সম্পূর্ণ করার অনুরোধ।

বাইন্ডিং সম্পূর্ণ করার কাজটি, অন্তত TCP-র প্রয়োজন হয় এমন বাইন্ডিংয়ের ক্ষেত্রে, একটি নির্দিষ্ট ProtocolEngine অবজেক্টের সাপেক্ষে করা হয়, যা ExchangeManager ইনস্ট্যান্সে অ্যাক্সেস প্রদান করে।

বিবরণ
প্যারামিটারগুলি
[in] aEngine
ProtocolEngine অবজেক্টের একটি পয়েন্টার যার হয়ে সম্পূর্ণ করার কাজ করা হচ্ছে।
রিটার্ন ভ্যালু
WEAVE_NO_ERROR
সফল হলে।
WEAVE_ERROR_INCORRECT_STATE
বাইন্ডিং আগেই সম্পূর্ণ হয়ে থাকলে।
WEAVE_ERROR_NO_MEMORY
কানেকশন প্রয়োজন হলে এবং কোনও কানেকশন উপলভ্য না থাকলে
ফেরত
অন্যথায়, কানেক্ট করার চেষ্টা করার সময় যেকোনও WEAVE_ERROR রিটার্ন করা হয়।

কানেক্ট করুন

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

সম্পূর্ণ কানেকশন প্রদান করে TCP বাইন্ডিং সম্পূর্ণ করুন।

নতুন শুরু করা TCP বাইন্ডিং সম্পূর্ণ না হওয়া পর্যন্ত ব্যবহার করা যাবে না। সাধারণত, অ্যাপ্লিকেশন যখন মেসেজ পাঠানোর জন্য বাইন্ডিং ব্যবহার করার চেষ্টা করে তখন এটি চাহিদা অনুযায়ী করা হয়, তবে এটি Weave কানেকশন প্রদান করেও স্পষ্টভাবে সম্পূর্ণ করা যেতে পারে।

বিবরণ
প্যারামিটারগুলি
[in] aConnection
বাইন্ডিং সম্পূর্ণ করতে ব্যবহৃত WeaveConnection-এর একটি পয়েন্টার।
রিটার্ন ভ্যালু
WEAVE_NO_ERROR
সফল হলে।
WEAVE_ERROR_INCORRECT_STATE
বাইন্ডিংয়ের আগে থেকেই কানেকশন থাকলে।
WEAVE_ERROR_INVALID_ARGUMENT
কানেকশন NULL হলে।

ফাইনাল করুন

void Finalize(
  void
)

"আনকমপ্লিট" বাইন্ডিং এবং এটি ফ্রি করুন।

বাইন্ডিংয়ের এমন অবস্থা থাকতে পারে যা ক্লিন-আপ করতে হয়, যেমন কানেকশন বন্ধ করা, যা Uncomplete() পদ্ধতির মাধ্যমে ম্যানেজ করা হয়, এর সাথে এমন অবস্থাও থাকে যা Free() পদ্ধতির মাধ্যমে প্রাথমিক অবস্থায় ফিরিয়ে আনা হয়। এই পদ্ধতি, মূলত সুবিধার জন্য, দুটিকেই আহ্বান করে।

আরও দেখুন:
Finalize(WEAVE_ERROR)

ফাইনাল করুন

void Finalize(
  WEAVE_ERROR aErr
)

"আনকমপ্লিট" বাইন্ডিং এবং এটি ফ্রি করুন।

বাইন্ডিংয়ের এমন অবস্থা থাকতে পারে যা ক্লিন-আপ করতে হয়, যেমন কানেকশন বন্ধ করা, যা Uncomplete() পদ্ধতির মাধ্যমে ম্যানেজ করা হয়, এর সাথে এমন অবস্থাও থাকে যা Free() পদ্ধতির মাধ্যমে প্রাথমিক অবস্থায় ফিরিয়ে আনা হয়। এই পদ্ধতি, মূলত সুবিধার জন্য, দুটিকেই আহ্বান করে।

বিবরণ
প্যারামিটারগুলি
[in] aErr
এই ত্রুটি কোডটি এই অনুরোধের কারণ নির্দেশ করে। WEAVE_NO_ERROR না হলে, TCP কানেকশন বাতিল করা হতে পারে।
আরও দেখুন:
Finalize(void)

ফ্রি

void Free(
  void
)

বাইন্ডিং স্টেট মুছে দিন।

কোনও শর্ত ছাড়াই সমস্ত বাইন্ডিং স্টেটকে তার আসল স্টেটে ফিরিয়ে আনুন।

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

Binding থেকে একটি ExchangeContext অবজেক্ট তৈরি করুন।

বিবরণ
প্যারামিটারগুলি
[in] aExchangeMgr
এক্সচেঞ্জ ম্যানেজারের একটি পয়েন্টার যেখান থেকে কনটেক্সটের জন্য অনুরোধ করা যায়।
[in] aAppState
অ্যাপ্লিকেশন স্টেট অবজেক্টের একটি ভয়েড পয়েন্টার যা পরে ব্যবহারের জন্য এক্সচেঞ্জ কনটেক্সটে স্টোর করা হবে।
ফেরত
ExchangeContext অবজেক্টের একটি পয়েন্টার, অথবা ব্যর্থ হলে NULL।

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

বাইন্ডিংয়ের ব্যর্থতা ম্যানেজ করুন।

এই পদ্ধতিটি চালু করা হয় এবং এর ফলে, সম্পূর্ণ হওয়ার পরে বাইন্ডিং ব্যর্থ হলে উচ্চ-স্তরের হ্যান্ডলারদের চালু করে, অর্থাৎ, সাফল্যের ইঙ্গিত দেয় এমন একটি স্ট্যাটাস সহ CompleteConfirm() চালু হওয়ার পরে।

বিবরণ
প্যারামিটারগুলি
[in] aReport
কী ভুল হয়েছে তা বর্ণনা করে StatusReport-এর একটি রেফারেন্স।
আরও দেখুন:
CompleteConfirm(StatusReport &aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

শুধুমাত্র একটি নোড আইডি দিয়ে Binding শুরু করুন।

এর ফলে কনফিগার করা ডিফল্ট ট্রান্সপোর্টের সাথে বাইন্ডিং হয়।

বিবরণ
প্যারামিটারগুলি
[in] aPeerNodeId
বাইন্ডিং টার্গেটের ৬৪-বিট আইডির রেফারেন্স।
রিটার্ন ভ্যালু
WEAVE_NO_ERROR
সফল হলে।
WEAVE_ERROR_INVALID_ARGUMENT
বাইন্ডিং কম-নির্দিষ্ট করা থাকলে।

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

পিয়ার আইডি ও ট্রান্সপোর্টের উপর ভিত্তি করে বাইন্ডিং অবজেক্ট শুরু করুন।

বিবরণ
প্যারামিটারগুলি
[in] aPeerNodeId
বাইন্ডিং টার্গেটের ৬৪-বিট নোড শনাক্তকারীর রেফারেন্স।
[in] aTransport
WeaveTransportOption থেকে ট্রান্সপোর্ট স্পেসিফিকেশন।
রিটার্ন ভ্যালু
WEAVE_NO_ERROR
সফল হলে।
WEAVE_ERROR_INVALID_ARGUMENT
বাইন্ডিং কম-নির্দিষ্ট করা থাকলে।

Init

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

পরিষেবা এন্ডপয়েন্টে বাইন্ডিং অবজেক্ট শুরু করুন।

Nest পরিষেবার নির্দিষ্ট এন্ডপয়েন্টের সাথে আপনি এইভাবে বাইন্ড করেন। এই ধরনের বাইন্ডিংয়ের জন্য মাল্টি-স্টেজ সম্পূর্ণ করার প্রসেস প্রয়োজন, যার মধ্যে লোকাল সার্ভিস ডিরেক্টরি ক্যাশে পপুলেট বা আপডেট করা অন্তর্ভুক্ত থাকতে পারে। বেশিরভাগ ক্ষেত্রে, এই প্রসেসটি অ্যাপ্লিকেশন থেকে লুকানো থাকে তবে এর অর্থ হল প্রসেসে পরে উদ্ভূত ত্রুটিগুলি ডেলিভার করা হতে পারে, সাধারণত প্রাসঙ্গিক "কনফার্ম" কলব্যাকের মাধ্যমে, পরে - কখনও কখনও অনেক পরে - বাইন্ডিং ব্যবহার (এবং সম্পূর্ণ) করার আসল অনুরোধের পরে।

বিবরণ
প্যারামিটারগুলি
[in] aServiceEpt
Weave Service এন্ডপয়েন্ট অফ ইন্টারেস্টের জন্য ৬৪-বিট শনাক্তকারীর রেফারেন্স।
[in] aServiceMgr
পরিষেবা ম্যানেজার ইনস্ট্যান্সের একটি পয়েন্টার যা পরিষেবা টিয়ার খুঁজতে এবং তার সাথে কানেক্ট করতে ব্যবহার করা হয়।
[in] aAuthMode
কানেক্ট করার সময় ব্যবহার করার জন্য যাচাইকরণ মোড।
রিটার্ন ভ্যালু
WEAVE_NO_ERROR
সফল হলে।
WEAVE_ERROR_INVALID_ARGUMENT
বাইন্ডিং কম-নির্দিষ্ট করা থাকলে।

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

WeaveConnection-এর সাথে Binding অবজেক্ট শুরু করুন।

বিবরণ
প্যারামিটারগুলি
[in] aConnection
বাইন্ডিংয়ের ভিত্তি হিসেবে ব্যবহার করার জন্য WeaveConnection-এর একটি পয়েন্টার..
রিটার্ন ভ্যালু
WEAVE_NO_ERROR
সফল হলে।
WEAVE_ERROR_INVALID_ARGUMENT
বাইন্ডিং কম-নির্দিষ্ট করা থাকলে।

IsComplete

bool IsComplete(
  void
)

বাইন্ডিং সম্পূর্ণ হয়েছে কিনা তা চেক করুন।

বিবরণ
ফেরত
এটি সম্পূর্ণ হলে true, অন্যথায় false.
আরও দেখুন:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

বাইন্ডিং ফ্রি কিনা তা চেক করুন।

এই প্রসঙ্গে "ফ্রি" বলতে বোঝায়, "একটি নির্দিষ্ট পিয়ার নোড আইডি আছে"। IsFree()-এর অর্থ "Free() কল করা হয়েছে এবং তারপর থেকে ব্যবহার করা হয়নি" হিসেবে বিবেচনা করা উচিত।

বিবরণ
ফেরত
বাইন্ডিং ফ্রি হলে true, অন্যথায় false।

UncompleteRequest

void UncompleteRequest(
  void
)

বাইন্ডিং অসম্পূর্ণ থেকে যায়।

মূলত, এই পদ্ধতি কল করার পরে বাইন্ডিং "অসম্পূর্ণ" অবস্থায় থাকবে, তবে আরও সূক্ষ্মভাবে, বাইন্ডিংয়ের মধ্যে নেই এমন যেকোনও প্রাসঙ্গিক অবস্থা, যেমন TCP কানেকশন, পরিষ্কার করা উচিত। অ্যাপ্লিকেশনগুলি ত্রুটির ক্ষেত্রে ক্লিনআপের অংশ হিসাবে UncompleteRequest() চালু করার কথা বিবেচনা করতে পারে।

এগুলিও দেখুন:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

বাইন্ডিং অসম্পূর্ণ থেকে যায়।

মৌলিকভাবে, এই পদ্ধতিটি কল করার পরে একটি বাইন্ডিং "অসম্পূর্ণ" অবস্থায় থাকবে, তবে আরও সূক্ষ্মভাবে, বাইন্ডিংয়ে অন্তর্ভুক্ত নয় এমন কোনও প্রাসঙ্গিক অবস্থা, যেমন TCP কানেকশন, পরিষ্কার করা উচিত। অ্যাপ্লিকেশনগুলি ত্রুটির ক্ষেত্রে ক্লিনআপের অংশ হিসাবে UncompleteRequest() চালু করার কথা বিবেচনা করতে পারে।

বিবরণ
প্যারামিটারগুলি
[in] aErr
WEAVE_NO_ERROR না হলে, আগে থেকে থাকা কানেকশন, যদি থাকে, সেটি বন্ধ করার পরিবর্তে বাতিল করা হবে।
আরও দেখুন:
UncompleteRequest(void)

~বাঁধাই

virtual  ~Binding(
  void
)

Binding অবজেক্টের জন্য ডেস্ট্রাক্টর।

সব ইন্টার্নাল স্টেট মুছে দেয় এবং প্রয়োজন হলে খোলা কানেকশন বন্ধ করে দেয়।