nl:: بافت:: پروفایل ها:: DataManagement_Legacy:: الزام آور

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

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

خلاصه

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

  • ارتباط UDP unicast با یک گره همتا شناخته شده.
  • UDP با "هر" گره پخش می شود.
  • ارتباط unicast WRMP با یک گره همتا شناخته شده.
  • ارتباطات TCP با یک گره همتا شناخته شده.
  • ارتباطات TCP با یک نقطه پایانی سرویس شناخته شده با استفاده از یک نمونه مدیر سرویس برای تنظیم موارد.
  • ارتباطات TCP بر اساس یک اتصال از پیش ایجاد شده.

سازندگان و تخریب کنندگان

Binding (void)
سازنده پیش فرض برای Binding اشیاء.
~Binding (void)
تخریب کننده برای اتصال اشیاء.

انواع عمومی

@165 {
kState_Incomplete = 0,
kState_Completing = 1,
kState_Complete = 2
}
enum
مجموعه حالت های شی Binding .

صفات عمومی

mAuthMode
WeaveAuthMode
حالت احراز هویت Weave مورد استفاده قرار می گیرد.
mConnection
اشاره گر به اتصال Weave که در حال حاضر در این صحافی استفاده می شود.
mEngine
اشاره گر به شی ProtocolEngine مربوط به این Binding .
mPeerNodeId
uint64_t
شناسه گره 64 بیتی هدف اتصال.
mServiceMgr
یک اشاره گر به شی (اختیاری) ServiceManager برای استفاده در تکمیل این اتصال.
mState
uint8_t
وضعیت فعلی شی Binding .
mTransport
uint8_t
حمل و نقل مورد استفاده در تکمیل این صحافی .

توابع عمومی

CompleteConfirm ( WeaveConnection *aConnection)
void
رسیدگی به تایید یک درخواست bind.
CompleteConfirm ( StatusReport & aReport)
void
رسیدگی به شکست یک درخواست bind.
CompleteConfirm (void)
void
رسیدگی به تایید یک درخواست bind.
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)
یک Binding را فقط با شناسه گره راه اندازی کنید.
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

حالت یک Binding که کامل و آماده استفاده است.

kState_Completing

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

kState_Incomplete

حالت اولیه (و نهایی) یک Binding .

صفات عمومی

mAuthMode

WeaveAuthMode mAuthMode

حالت احراز هویت Weave مورد استفاده قرار می گیرد.

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

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

mConnection

WeaveConnection * mConnection

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

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

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

موتور من

ProtocolEngine * mEngine

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

یک اتصال به طور کلی با توجه به یک موتور پروتکل خاص تکمیل می شود، که بیشتر به عنوان راهی برای دسترسی به MessageLayer استفاده می شود. این جایی است که ما آن را پیگیری می کنیم.

mPeerNodeId

uint64_t mPeerNodeId

شناسه گره 64 بیتی هدف اتصال.

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

هر Binding یک موجودیت هدف دارد که در اینجا نامگذاری شده است. علاوه بر شناسه گره Weave، ممکن است یک نقطه پایانی سرویس را نامگذاری کند.

mServiceMgr

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

یک اشاره گر به شی (اختیاری) ServiceManager برای استفاده در تکمیل این اتصال.

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

هنگام اتصال به سرویس Weave، یک شناسه پایانی سرویس 64 بیتی ممکن است در زمان اولیه به جای شناسه گره 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
)

رسیدگی به تایید یک درخواست bind.

جزئیات
مولفه های
[in] aConnection
یک اشاره گر به یک WeaveConnection فعال به هدف اتصال.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

رسیدگی به شکست یک درخواست bind.

جزئیات
مولفه های
[in] aReport
ارجاع به یک شی StatusReport که خرابی را توصیف می کند.

CompleteConfirm

void CompleteConfirm(
  void
)

رسیدگی به تایید یک درخواست bind.

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
)

یک صحافی را "ناتمام" کنید و آن را آزاد کنید.

Bindingها ممکن است حالتی داشته باشند که نیاز به پاکسازی دارد، مثلاً بسته شدن اتصال، که با روش Uncomplete() مدیریت می شود، علاوه بر حالتی که به سادگی با روش Free() به حالت اولیه پاک می شود. این روش، تا حد زیادی به خاطر راحتی، هر دو را فراخوانی می کند.

همچنین ببینید:
نهایی کردن (WEAVE_ERROR)

نهایی کردن

void Finalize(
  WEAVE_ERROR aErr
)

یک صحافی را "ناتمام" کنید و آن را آزاد کنید.

Bindingها ممکن است حالتی داشته باشند که نیاز به پاکسازی دارد، مثلاً بسته شدن اتصال، که با روش 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 در صورت شکست.

نشان ناقص

void IncompleteIndication(
  StatusReport & aReport
)

رسیدگی به شکست یک اتصال.

این متد فراخوانی می‌شود و به نوبه خود، هنگامی که اتصال پس از تکمیل نشد، یعنی پس از فراخوانی CompleteConfirm () با وضعیتی که نشان دهنده موفقیت است، دسته‌های لایه بالاتر را فراخوانی می‌کند.

جزئیات
مولفه های
[in] aReport
ارجاعی به گزارش وضعیت که توضیح می دهد چه اشتباهی رخ داده است.
همچنین ببینید:
CompleteConfirm (StatusReport &aReport) .

شروع کنید

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

یک Binding را فقط با شناسه گره راه اندازی کنید.

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

جزئیات
مولفه های
[in] aPeerNodeId
ارجاع به شناسه 64 بیتی هدف الزام آور.
ارزش های بازگشتی
WEAVE_NO_ERROR
در مورد موفقیت
WEAVE_ERROR_INVALID_ARGUMENT
اگر صحافی کمتر مشخص شده باشد.

شروع کنید

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

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

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

شروع کنید

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

یک شی Binding به یک نقطه پایانی سرویس را راه اندازی کنید.

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

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

شروع کنید

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

یک شی Binding را با یک WeaveConnection راه اندازی کنید.

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

کامل است

bool IsComplete(
  void
)

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

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

رایگان است

bool IsFree(
  void
)

چک یک الزام آور رایگان است.

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

جزئیات
برمی گرداند
درست است اگر صحافی آزاد باشد، در غیر این صورت نادرست است.

UncompleteRequest

void UncompleteRequest(
  void
)

باعث ناقص بودن یک اتصال شود.

اساساً، پس از فراخوانی این روش، یک اتصال باید در حالت «ناقص» باشد، اما، به‌طور دقیق‌تر، هر وضعیت مرتبطی که در خود اتصال وجود ندارد، به عنوان مثال اتصال TCP، نیز باید پاک شود. برنامه ها ممکن است فراخوانی UncompleteRequest() را به عنوان بخشی از پاکسازی خطا در نظر بگیرند.

همچنین ببینید:
درخواست ناتمام (WEAVE_ERROR)

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

باعث ناقص بودن یک اتصال شود.

اساساً، پس از فراخوانی این روش، یک اتصال باید در حالت «ناقص» باشد، اما، به‌طور دقیق‌تر، هر وضعیت مرتبطی که در خود اتصال وجود ندارد، به عنوان مثال اتصال TCP، نیز باید پاک شود. برنامه ها ممکن است فراخوانی UncompleteRequest() را به عنوان بخشی از پاکسازی خطا در نظر بگیرند.

جزئیات
مولفه های
[in] aErr
اگر WEAVE_NO_ERROR نباشد، اتصال موجود، در صورت وجود، به‌جای بسته شدن به‌خوبی قطع می‌شود.
همچنین ببینید:
UncompleteRequest (باطل)

~صحافی

virtual  ~Binding(
  void
)

تخریب کننده برای اتصال اشیاء.

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