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{
|
شمارشی مجموعه وضعیتهای شیء 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 تعریف شده است.
عملکردهای عمومی
CompleteConfirm
void CompleteConfirm( WeaveConnection *aConnection )
تأیید درخواست اتصال را مدیریت کنید.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
CompleteConfirm
void CompleteConfirm( StatusReport & aReport )
مدیریت کردن ناموفق بودن درخواست اتصال.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
CompleteConfirm
void CompleteConfirm( void )
تأیید درخواست اتصال را مدیریت کنید.
CompleteRequest
WEAVE_ERROR CompleteRequest( ProtocolEngine *aEngine )
درخواست تکمیل اتصال.
تکمیل اتصال، حداقل برای اتصالهایی که به TCP نیاز دارند، با توجه به شیء ProtocolEngine خاصی انجام میشود که دسترسی به نمونه ExchangeManager را فراهم میکند.
| جزئیات | |||||||
|---|---|---|---|---|---|---|---|
| پارامترها |
|
||||||
| مقادیر برگشتی |
|
||||||
| کالاهای مرجوعی |
درغیراینصورت، هرگونه WEAVE_ERROR که هنگام تلاش برای اتصال برگردانده میشود.
|
||||||
متصل کردن
WEAVE_ERROR Connect( WeaveConnection *aConnection )
با ارائه اتصال کامل، اتصال TCP را تکمیل کنید.
تا زمانی که اتصال TCP جدیداً مقداردهیشده تکمیل نشده باشد، نمیتوان از آن استفاده کرد. معمولاً این کار درصورت درخواست انجام میشود، یعنی زمانی که برنامه تلاش میکند از اتصال برای ارسال پیام استفاده کند، اما با ارائه اتصال Weave نیز میتوان آن را بهطور صریح تکمیل کرد.
| جزئیات | |||||||
|---|---|---|---|---|---|---|---|
| پارامترها |
|
||||||
| مقادیر برگشتی |
|
||||||
نهایی کردن
void Finalize( void )
یک اتصال را «ناتمام» کنید و آن را آزاد کنید.
اتصالها ممکن است وضعیتی داشته باشند که نیاز به پاکسازی داشته باشد، مثلاً بسته شدن اتصال، که توسط روش Uncomplete() مدیریت میشود، علاوهبر وضعیتی که بهسادگی توسط روش Free() به وضعیت اولیه خود پاک میشود. این روش، عمدتاً بهدلیل راحتی، هر دو را فراخوانی میکند.
همچنین ببینید:Finalize(WEAVE_ERROR)
نهایی کردن
void Finalize( WEAVE_ERROR aErr )
یک اتصال را «ناتمام» کنید و آن را آزاد کنید.
اتصالها ممکن است وضعیتی داشته باشند که نیاز به پاکسازی داشته باشد، مثلاً بسته شدن اتصال، که توسط روش Uncomplete() مدیریت میشود، علاوهبر وضعیتی که بهسادگی توسط روش Free() به وضعیت اولیه خود پاک میشود. این روش، عمدتاً بهدلیل راحتی، هر دو را فراخوانی میکند.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
نهایی کردن(باطل کردن)
رایگان
void Free( void )
پاک کردن وضعیت اتصال.
بدون قیدوشرط همه وضعیتهای اتصال را به وضعیت اصلیشان برمیگرداند.
GetExchangeCtx
ExchangeContext * GetExchangeCtx( WeaveExchangeManager *aExchangeMgr, void *aAppState )
تولید شیء ExchangeContext از Binding.
| جزئیات | |||||
|---|---|---|---|---|---|
| پارامترها |
|
||||
| کالاهای مرجوعی |
اشارهگری به شیء ExchangeContext، یا NULL درصورت ناموفق بودن.
|
||||
IncompleteIndication
void IncompleteIndication( StatusReport & aReport )
رسیدگی به خطای اتصال.
این روش فراخوانی میشود و بهنوبه خود، وقتی اتصال پساز تکمیل ناموفق باشد، یعنی پساز اینکه CompleteConfirm() با وضعیتی که نشاندهنده موفقیت است فراخوانی شده باشد، گردانندههای لایه بالاتر را فراخوانی میکند.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
CompleteConfirm(StatusReport &aReport).
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId )
اتصال را فقط با شناسه گره مقداردهی اولیه کنید.
این کار منجر به اتصال با انتقال پیشفرض پیکربندیشده میشود.
| جزئیات | |||||
|---|---|---|---|---|---|
| پارامترها |
|
||||
| مقادیر برگشتی |
|
||||
Init
WEAVE_ERROR Init( const uint64_t & aPeerNodeId, uint8_t aTransport )
یک شیء Binding را براساس شناسه همتا و انتقال مقداردهی اولیه کنید.
| جزئیات | |||||
|---|---|---|---|---|---|
| پارامترها |
|
||||
| مقادیر برگشتی |
|
||||
Init
WEAVE_ERROR Init( const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode )
مقداردهی اولیه شیء Binding به نقطه پایانی سرویس.
این نحوه اتصال به نقطه پایانی خاصی در سرویس Nest است. این نوع اتصال به فرایند تکمیل چندمرحلهای نیاز دارد که ممکن است شامل پر کردن یا بهروزرسانی حافظه پنهان دایرکتوری سرویس محلی باشد. در بیشتر موارد، این فرایند از برنامه پنهان است اما به این معنی است که خطاهایی که بعداً در فرایند رخ میدهند ممکن است معمولاً ازطریق فراخوانی برگشتی «تأیید» مربوطه، بعداز (گاهی اوقات خیلی بعداز) درخواست اصلی برای استفاده (و تکمیل) اتصال ارائه شوند.
| جزئیات | |||||||
|---|---|---|---|---|---|---|---|
| پارامترها |
|
||||||
| مقادیر برگشتی |
|
||||||
Init
WEAVE_ERROR Init( WeaveConnection *aConnection )
مقداردهی اولیه شیء Binding با WeaveConnection.
| جزئیات | |||||
|---|---|---|---|---|---|
| پارامترها |
|
||||
| مقادیر برگشتی |
|
||||
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() را بهعنوان بخشی از پاکسازی درصورت بروز خطا درنظر بگیرند.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
UncompleteRequest(void)
~صحافی
virtual ~Binding( void )
نابودگر برای اشیای Binding.
همه وضعیتهای داخلی را پاک میکند و درصورت لزوم، اتصالهای باز را میبندد.