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

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

کلاس Binding وضعیت ارتباطات را ازطرف نهاد برنامه بااستفاده از Weave مدیریت می‌کند.

خلاصه

وقتی برنامه‌ای می‌خواهد از Weave برای برقراری ارتباط با نهادی از راه دور استفاده کند، گزینه‌های متنوعی وجود دارد. کلاس Binding این گزینه‌ها را جمع‌آوری می‌کند و آن‌ها را به‌گونه‌ای مرتب می‌کند که کارهای آسان، آسان‌تر و کارهای دشوارتر حداقل قابل‌حل باشند. گزینه‌های تحت پوشش عبارت‌اند از:

  • ارتباط UDP تک‌پخشی با گره همتای شناخته‌شده.
  • همه‌فرستی UDP با «هر» گره.
  • ارتباط WRMP تک‌پخشی با گره همتای شناخته‌شده.
  • ارتباطات TCP با گره همتای شناخته‌شده.
  • ارتباطات TCP با نقطه پایانی سرویس شناخته‌شده بااستفاده از نمونه مدیر سرویس برای راه‌اندازی موارد.
  • ارتباطات TCP براساس اتصال ازپیش برقرارشده.

سازنده‌ها و مخرب‌ها

Binding(void)
سازنده پیش‌فرض برای اشیاء Binding.
~Binding(void)
نابودگر برای اشیای Binding.

انواع عمومی

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
شمارشی
مجموعه وضعیت‌های شیء Binding.

مشخصه‌های عمومی

mAuthMode
WeaveAuthMode
حالت اصالت‌سنجی Weave که باید استفاده شود.
mConnection
اشاره‌گری به اتصال Weave که درحال‌حاضر در این اتصال استفاده می‌شود.
mEngine
اشاره‌گری به شیء ProtocolEngine مربوط به این Binding.
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)
تولید شیء ExchangeContext از Binding.
IncompleteIndication(StatusReport & aReport)
void
رسیدگی به خطای اتصال.
Init(const uint64_t & aPeerNodeId)
اتصال را فقط با شناسه گره مقداردهی اولیه کنید.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
یک شیء Binding را براساس شناسه همتا و انتقال مقداردهی اولیه کنید.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
مقداردهی اولیه شیء Binding به نقطه پایانی سرویس.
Init(WeaveConnection *aConnection)
مقداردهی اولیه شیء Binding با WeaveConnection.
IsComplete(void)
bool
بررسی کنید که آیا صحافی کامل شده است یا نه.
IsFree(void)
bool
بررسی کنید که آیا اتصال آزاد است یا نه.
UncompleteRequest(void)
void
باعث شود اتصال ناقص باشد.
UncompleteRequest(WEAVE_ERROR aErr)
void
باعث شود اتصال ناقص باشد.

انواع عمومی

@165

 @165

مجموعه حالت‌های شیء Binding.

مشخصات
kState_Complete

وضعیت اتصال که کامل و آماده استفاده است.

kState_Completing

وضعیت Binding که درحال تکمیل شدن است.

kState_Incomplete

وضعیت اولیه (و نهایی) Binding.

مشخصه‌های عمومی

mAuthMode

WeaveAuthMode mAuthMode

حالت اصالت‌سنجی Weave که باید استفاده شود.

(فقط خواندنی)

این حالت اصالت‌سنجی مورداستفاده در همه ارتباطات تحت نظارت این اتصال است.

mConnection

WeaveConnection * mConnection

اشاره‌گری به اتصال Weave که درحال‌حاضر در این اتصال استفاده می‌شود.

(فقط خواندنی)

اتصال‌های TCP ممکن است با یک اتصال بلافاصله مقداردهی اولیه شوند یا ممکن است در زمان تکمیل، یک اتصال اختصاص دهند.

mEngine

ProtocolEngine * mEngine

اشاره‌گری به شیء ProtocolEngine مربوط به این Binding.

اتصال معمولاً با توجه به یک موتور پروتکل خاص تکمیل می‌شود که بیشتر به‌عنوان راهی برای دسترسی به 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 ممکن است لغو شود.
همچنین ببینید:
نهایی کردن(باطل کردن)

رایگان

void Free(
  void
)

پاک کردن وضعیت اتصال.

بدون قیدوشرط همه وضعیت‌های اتصال را به وضعیت اصلی‌شان برمی‌گرداند.

GetExchangeCtx

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

تولید شیء ExchangeContext از Binding.

جزئیات
پارامترها
[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
)

اتصال را فقط با شناسه گره مقداردهی اولیه کنید.

این کار منجر به اتصال با انتقال پیش‌فرض پیکربندی‌شده می‌شود.

جزئیات
پارامترها
[in] aPeerNodeId
ارجاع به شناسه ۶۴ بیتی هدف اتصال.
مقادیر برگشتی
WEAVE_NO_ERROR
درصورت موفقیت.
WEAVE_ERROR_INVALID_ARGUMENT
اگر اتصال به‌طور کامل مشخص نشده باشد.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

یک شیء Binding را براساس شناسه همتا و انتقال مقداردهی اولیه کنید.

جزئیات
پارامترها
[in] aPeerNodeId
ارجاعی به شناسه گره ۶۴ بیتی هدف اتصال.
[in] aTransport
مشخصات حمل‌ونقل، از WeaveTransportOption.
مقادیر برگشتی
WEAVE_NO_ERROR
درصورت موفقیت.
WEAVE_ERROR_INVALID_ARGUMENT
اگر اتصال به‌طور کامل مشخص نشده باشد.

Init

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

مقداردهی اولیه شیء Binding به نقطه پایانی سرویس.

این نحوه اتصال به نقطه پایانی خاصی در سرویس Nest است. این نوع اتصال به فرایند تکمیل چندمرحله‌ای نیاز دارد که ممکن است شامل پر کردن یا به‌روزرسانی حافظه پنهان دایرکتوری سرویس محلی باشد. در بیشتر موارد، این فرایند از برنامه پنهان است اما به این معنی است که خطاهایی که بعداً در فرایند رخ می‌دهند ممکن است معمولاً ازطریق فراخوانی برگشتی «تأیید» مربوطه، بعداز (گاهی اوقات خیلی بعداز) درخواست اصلی برای استفاده (و تکمیل) اتصال ارائه شوند.

جزئیات
پارامترها
[in] aServiceEpt
ارجاع به شناسه ۶۴ بیتی برای نقطه پایانی Weave Service موردنظر.
[in] aServiceMgr
اشاره‌گری به نمونه مدیر سرویس برای استفاده در جستجوی ردیف سرویس و اتصال به آن.
[in] aAuthMode
حالت اصالت‌سنجی برای استفاده در اتصال.
مقادیر برگشتی
WEAVE_NO_ERROR
درصورت موفقیت.
WEAVE_ERROR_INVALID_ARGUMENT
اگر اتصال به‌طور کامل مشخص نشده باشد.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

مقداردهی اولیه شیء Binding با WeaveConnection.

جزئیات
پارامترها
[in] aConnection
اشاره‌گری به WeaveConnection برای استفاده به‌عنوان مبنای اتصال..
مقادیر برگشتی
WEAVE_NO_ERROR
درصورت موفقیت.
WEAVE_ERROR_INVALID_ARGUMENT
اگر اتصال به‌طور کامل مشخص نشده باشد.

IsComplete

bool IsComplete(
  void
)

بررسی کنید که آیا صحافی کامل شده است یا نه.

جزئیات
کالاهای مرجوعی
اگر کامل باشد، درست است، درغیراین‌صورت نادرست است.
همچنین ببینید:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

بررسی کنید که آیا اتصال آزاد است یا نه.

«آزاد» در این زمینه به‌سادگی به‌معنای «دارای شناسه گره همتای تعریف‌شده» است. IsFree() باید به این معنی درنظر گرفته شود که «Free() روی آن فراخوانی شده است و از آن زمان استفاده نشده است».

جزئیات
کالاهای مرجوعی
اگر اتصال رایگان باشد، درست است، درغیراین‌صورت نادرست است.

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.

همه وضعیت‌های داخلی را پاک می‌کند و درصورت لزوم، اتصال‌های باز را می‌بندد.