nl:: Weave:: Binding
#include <src/lib/core/WeaveBinding.h>
هدف موردنظر ارتباط Weave و اطلاعات پیکربندی مرتبط را ضبط میکند.
خلاصه
یک شیء Binding هدف موردنظر ارتباط Weave (که با نام «همتا» نیز شناخته میشود) را بههمراه مجموعهای از پارامترهای پیکربندی که نحوه برقراری ارتباط با همتا را توصیف میکند، شناسایی میکند. اتصالها مستقل از پروتکل برنامهای هستند که بین دو طرف برقرار است. بههمین دلیل، آنها «چه کسی» و «چگونه» ارتباط را ضبط میکنند، اما «چه چیزی» را ضبط نمیکنند.
برنامهها باید ملزوماتی را با پارامترهای خاص نوع کانال ارتباطی موردنظر پیکربندی کنند. پیوندها از طیف وسیعی از انتقالهای شبکه، ازجمله TCP، UDP، UDP با «پیامرسانی قابلاعتماد Weave»، و Weave ازطریق BLE (WoBLE) پشتیبانی میکنند. برنامهها همچنین میتوانند استفاده از سازوکارهای امنیتی خاصی را برای محافظت از پیامهای ارسالشده بین طرفین درخواست کنند. این شامل جلسههای CASE و PASE، و کلیدهای گروه برنامه میشود. واسط پیکربندی ملزم کردن از سبک API بیانی استفاده میکند که به برنامهها اجازه میدهد الزامات خود را برای ارتباط با عبارات ساده بیان کنند.
برای جزئیات بیشتر، مستندات Binding::Configuration را ببینید.
آمادهسازی
پیشاز برقراری ارتباط، اتصال باید «آماده» شود. عمل آمادهسازی ملزم کردن شامل ایجاد وضعیت لازم برای برقراری ارتباط است. این میتواند شامل مواردی مانند حل کردن نشانی شبکه همتا، برقراری اتصال شبکه، و مذاکره درباره کلیدهای امنیتی باشد. پساز پیکربندی توسط برنامه، Binding از همه مراحل لازم برای آمادهسازی ارتباط مراقبت میکند و پساز تکمیل فرایند، با برنامه تماس میگیرد. به این ترتیب، «پیوندها» مکانیسمهای ارتباطی را پنهان میکنند و به برنامهها اجازه میدهند روی تعاملات سطح بالا تمرکز کنند.
ارتباطات
وقتی اتصال آماده شد، برای استفاده آماده میشود. در این حالت، برنامهها (یا بهطور معمولتر، کد لایه پروتکل که ازطرف برنامه کار میکند) از Binding درخواست میکنند تا بافت تبادل Weave را اختصاص دهد. بافت تبادل حاصل ازقبل برای ارتباط پیکربندی شده است و به برنامه اجازه میدهد فوراً تبادل Weave را با همتا آغاز کند. برنامه میتواند به درخواست زمینههای تبادل از Binding ادامه دهد تا زمانی که Binding بسته شود، یا رویدادی، مثلاً خرابی شبکه، کانال ارتباطی زیربنایی را خاتمه دهد.
تغییرات وضعیت ملزم کردن
درطول دوره استفاده، Binding رویدادهای میانای برنامهسازی کاربردی را به برنامه ارائه میدهد و آن را از تغییرات در وضعیت Binding مطلع میکند. برای مثال، وقتی آمادهسازی موفقیتآمیز باشد، برنامه رویدادی دریافت میکند که به آن اطلاع میدهد ملزم کردن برای استفاده آماده است. بههمین ترتیب، اگر کانال ارتباطی زیرین با مشکل مواجه شود، رویدادی به برنامه ارسال میشود که به آن اطلاع میدهد ملحق کردن دیگر در وضعیت آماده نیست.
رویدادهای «میانای برنامهسازی کاربردی» ازطریق تابع برگشت رویداد که هنگام تخصیص ملزم کردن ارائه میشود به برنامه تحویل داده میشوند.
ملزم کردن کل دوره
اتصال مرجع شمارششده است تا امکان استفاده مشترک در چندین مؤلفه نرمافزاری فراهم شود. وقتی ملزوم تخصیص داده میشود، یک مرجع واحد برای ملزوم ایجاد میشود. برنامه مسئول است که این مرجع را در زمانی در آینده آزاد کند تا پیوند برای استفاده مجدد بعدی آزاد شود.
وقتی کار برنامه با Binding تمام شد، ممکن است Close() را در binding فراخوانی کند. این کار ارجاع برنامه به Binding را آزاد میکند و همه ارسالهای بعدی رویدادهای میانای برنامهسازی کاربردی را مسدود میکند. وقتی آخرین ارجاع به Binding منتشر شود، بهطور خودکار بسته میشود.
انواع عمومی |
|
|---|---|
@23{
|
شمارشی |
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
|
EventType{
|
شمارشی |
State
|
شمارشی |
مشخصههای عمومی |
|
|---|---|
AppState
|
void *
|
عملکردهای عمومی |
|
|---|---|
AddRef(void)
|
void
مرجعی را برای شیء پیوند رزرو کنید.
|
AdjustResponseTimeout(ExchangeContext *apExchangeContext) const
|
«زمینه مبادله» موجود را دوباره پیکربندی کنید تا مهلت پاسخ را تنظیم کنید.
|
AllocateRightSizedBuffer(PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize)
|
|
BeginConfiguration()
|
فرایند پیکربندی ملزم کردن.
|
CanBePrepared(void) const
|
bool
|
Close(void)
|
void
شیء پیوند را ببندید و مرجع را آزاد کنید.
|
GetConnection() const
|
دریافت شیء اتصال Weave مرتبط با اتصال.
|
GetDefaultResponseTimeout() const
|
uint32_t
مهلت زمانی پیشفرض پاسخ تبادل را برای استفاده هنگام برقراری ارتباط با همتا دریافت کنید.
|
GetDefaultWRMPConfig(void) const
|
const WRMPConfig &
پیکربندی WRMP پیشفرض را برای استفاده هنگام برقراری ارتباط با همتا دریافت کنید.
|
GetEncryptionType(void) const
|
uint8_t
نوع رمزگذاری پیام را که باید هنگام رمزگذاری پیامها به/از همتا استفاده شود بازیابی کنید.
|
GetEventCallback() const
|
EventCallback
تابعی را که هنگام وقوع رویداد API برای Binding فراخوانی میشود دریافت کنید.
|
GetExchangeManager() const
|
|
GetKeyId(void) const
|
uint32_t
شناسه کلید رمزگذاری پیام را که باید هنگام رمزگذاری پیامها به/از همتا استفاده شود بازیابی کنید.
|
GetLogId(void) const
|
uint16_t
شناسه یکتایی برای اتصال دریافت کنید.
|
GetMaxWeavePayloadSize(const System::PacketBuffer *msgBuf)
|
uint32_t
حداکثر اندازه بار Weave را که میتواند در PacketBuffer ارائهشده جای بگیرد دریافت کنید.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
رشتهای میسازد که گره همتا و نشانی / اطلاعات اتصال منسوب به آن را توصیف میکند.
|
GetPeerIPAddress(nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const
|
void
اطلاعات نشانی IP را برای همتا بازیابی کنید (درصورت وجود).
|
GetPeerNodeId(void) const
|
uint64_t
شناسه گره همتای متصل را بازیابی کنید.
|
GetProtocolLayerCallback(EventCallback & callback, void *& state) const
|
void
|
GetState(void) const
|
State
وضعیت فعلی اتصال را بازیابی کنید.
|
IsAuthenticMessageFromPeer(const WeaveMessageInfo *msgInfo)
|
bool
تعیین میکند که آیا پیام ورودی خاصی از همتای پیکربندیشده است و بهدرستی اصالتسنجی شده است یا نه.
|
IsConnectionTransport() const
|
bool
|
IsPreparing(void) const
|
bool
|
IsReady(void) const
|
bool
|
IsUDPTransport() const
|
bool
|
IsUnreliableUDPTransport() const
|
bool
|
IsWRMTransport() const
|
bool
|
NewExchangeContext(ExchangeContext *& appExchangeContext)
|
«زمینه تبادل» جدیدی برای برقراری ارتباط با همتایی که هدف اتصال است اختصاص دهید.
|
Release(void)
|
void
ارجاع به شیء اتصالی را منتشر کنید.
|
RequestPrepare()
|
از برنامه بخواهید پیوند را پیکربندی و آماده کند.
|
Reset(void)
|
void
پیوند را به حالت پیکربندینشده بازنشانی کنید.
|
SetDefaultResponseTimeout(uint32_t msec)
|
void
زمان استراحت پاسخ تبادل پیشفرض را برای استفاده هنگام برقراری ارتباط با همتا تنظیم کنید.
|
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
|
void
پیکربندی WRMP پیشفرض را برای استفاده هنگام برقراری ارتباط با همتا تنظیم کنید.
|
SetEventCallback(EventCallback aEventCallback)
|
void
تابع تعریفشده برنامه را تنظیم کنید تا وقتی رویداد میانای برنامهسازی کاربردی برای اتصال رخ میدهد، فراخوانی شود.
|
SetProtocolLayerCallback(EventCallback callback, void *state)
|
void
بااستفاده از Binding ازطرف برنامه، تابع برگشتی رویداد را برای کد لایه پروتکل تنظیم کنید.
|
توابع ایستا عمومی |
|
|---|---|
DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
Default handler for binding API events.
|
کلاسها |
|
|---|---|
|
nl:: |
میانایی با سبک بیانیه برای پیکربندی و آمادهسازی شیء Binding ارائه میدهد. |
ساختارها |
|
|---|---|
|
nl:: |
پارامترهای ورودی برای رویداد میانای برنامهسازی کاربردی Binding. |
|
nl:: |
پارامترهای برونداد را به رویداد میانای برنامهسازی کاربردی ملزمسازی. |
انواع عمومی
@23
@23
| مشخصات | |
|---|---|
kGetPeerDescription_MaxLength
|
حداکثر طول رشته (شامل نویسه NUL) که توسط GetPeerDescription() برگردانده میشود. |
EventCallback
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
EventType
EventType
| مشخصات | |
|---|---|
kEvent_BindingFailed
|
اتصال ناموفق بود و دیگر نمیتوان از آن برای برقراری ارتباط با همتا استفاده کرد. |
kEvent_BindingReady
|
کنش آمادهسازی در اتصال موفقیتآمیز بود و اکنون میتوان از اتصال برای برقراری ارتباط با همتا استفاده کرد. |
kEvent_ConnectionEstablished
|
اتصال Weave درخواستی برقرار شد. |
kEvent_DefaultCheck
|
برای درستیسنجی کردن مدیریت صحیح رویداد پیشفرض در برنامه استفاده میشود. |
kEvent_PASEParametersRequested
|
از برنامه درخواست شده است پارامترهایی را برای استفاده درطول ایجاد جلسه PASE ارائه دهد. |
kEvent_PrepareFailed
|
کنش آمادهسازی در اتصال ناموفق بود. |
kEvent_PrepareRequested
|
از برنامه درخواست میشود تا اتصال را برای استفاده توسط پشته شبکه پیکربندی و آماده کند. |
kEvent_TAKEParametersRequested
|
از برنامه درخواست میشود تا پارامترهایی را که درطول ایجاد جلسه TAKE استفاده میشود ارائه دهد. |
ایالت
State
مشخصههای عمومی
AppState
void * AppState
عملکردهای عمومی
AddRef
void AddRef( void )
ارجاعی به شیء اتصالدهنده رزرو کنید.
AdjustResponseTimeout
WEAVE_ERROR AdjustResponseTimeout( ExchangeContext *apExchangeContext ) const
برای تنظیم زمان اتمام پاسخ، «بافت تبادل» موجود را دوباره پیکربندی کنید.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
AllocateRightSizedBuffer
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
BeginConfiguration
Configuration BeginConfiguration()
فرایند پیکربندی اتصال را شروع کنید.
برنامهها باید BeginConfiguration() را فراخوانی کنند تا Binding را قبلاز آمادهسازی آن برای برقراری ارتباط با همتا پیکربندی کنند.
| جزئیات | |
|---|---|
| کالاهای مرجوعی |
شیء Binding::Configuration که میتواند برای پیکربندی اتصال استفاده شود.
|
CanBePrepared
bool CanBePrepared( void ) const
بستن
void Close( void )
بستن شیء اتصالی و انتشار مرجع.
وقتی فراخوانده میشود، این روش باعث میشود که اتصال وارد حالت «بسته» شود. همه کنشهای آمادهسازی درحال انجام برای اتصال لغو میشود و همه منابع ارتباطات خارجی نگهداریشده توسط اتصال آزاد میشود.
فراخوانی Close() تعداد مرجع مرتبط با اتصال را کاهش میدهد و اگر تعداد مرجع صفر شود، شیء را آزاد میکند.
GetConnection
WeaveConnection * GetConnection() const
دریافت شیء اتصال Weave مرتبط با اتصال.
| جزئیات | |
|---|---|
| برگرداندن |
اشارهگری به شیء WeaveConnection، یا NULL اگر اتصالی منسوب به اتصال وجود نداشته باشد.
|
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
مهلت زمانی پیشفرض پاسخ تبادل را برای استفاده هنگام برقراری ارتباط با همتا دریافت کنید.
| جزئیات | |
|---|---|
| کالاهای مرجوعی |
مهلت پاسخدهی به میلیثانیه.
|
GetDefaultWRMPConfig
const WRMPConfig & GetDefaultWRMPConfig( void ) const
پیکربندی پیشفرض WRMP را برای استفاده هنگام برقراری ارتباط با همتا دریافت کنید.
| جزئیات | |
|---|---|
| کالاهای مرجوعی |
مرجعی به ساختار WRMPConfig که حاوی مقادیر پیکربندی پیشفرض است.
|
GetEncryptionType
uint8_t GetEncryptionType( void ) const
نوع رمزگذاری پیام را که باید هنگام رمزگذاری پیامها به/از همتا استفاده شود بازیابی کنید.
GetEventCallback
EventCallback GetEventCallback() const
تابعی را که هنگام وقوع رویداد API برای Binding فراخوانی میشود دریافت کنید.
| جزئیات | |
|---|---|
| کالاهای مرجوعی |
اشارهگری به تابع بازخوانی.
|
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
شناسه کلید رمزگذاری پیام را که باید هنگام رمزگذاری پیامها به/از همتا استفاده شود بازیابی کنید.
GetLogId
uint16_t GetLogId( void ) const
شناسه یکتایی برای اتصال دریافت کنید.
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const System::PacketBuffer *msgBuf )
حداکثر اندازه بار داده Weave را که میتواند در PacketBuffer ارائهشده قرار گیرد دریافت کنید.
برای UDP، ازجمله UDP با WRM، حداکثر اندازه بار مفید برگرداندهشده تضمین میکند که پیام Weave حاصل از MTU پیکربندیشده UDP سرریز نخواهد شد.
علاوهبراین، این روش تضمین میکند که بار خالص Weave از PacketBuffer ارائهشده سرریز نخواهد کرد.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
| کالاهای مرجوعی |
حداکثر اندازه پایهبار Weave.
|
||
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
رشتهای میسازد که گره همتا و نشانی منسوب آن / اطلاعات اتصال را توصیف میکند.
| جزئیات | |||||
|---|---|---|---|---|---|
| پارامترها |
|
||||
GetPeerIPAddress
void GetPeerIPAddress( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId ) const
اطلاعات نشانی IP را برای همتا بازیابی کنید (درصورت وجود).
دردسترس بودن اطلاعات نشانی IP همتا به وضعیت و پیکربندی اتصال بستگی دارد. اطلاعات نشانی IP فقط هنگام استفاده از انتقال مبتنی بر IP (TCP، UDP، یا UDP با WRMP) دردسترس است. پیشاز شروع آمادهسازی، اطلاعات نشانی فقط درصورتی دردسترس است که صریحاً توسط برنامه درطول پیکربندی تنظیم شده باشد. درطول مرحله آمادهسازی، اطلاعات نشانی زمانی دردسترس قرار میگیرد که آمادهسازی نشانی تکمیل شود (برای نمونه، پساز تکمیل وضوح ساناد). پساز آماده شدن اتصال، اطلاعات نشانی تا زمانی که اتصال بازنشانی شود دردسترس باقی میماند.
| جزئیات | |||||||
|---|---|---|---|---|---|---|---|
| پارامترها |
|
||||||
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
شناسه گره همتای پیوند را بازیابی کنید.
فقط زمانی معتبر است که شیء اتصال آماده شده باشد.
| جزئیات | |
|---|---|
| کالاهای مرجوعی |
شناسه گره Weave همتا
|
GetProtocolLayerCallback
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
وضعیت فعلی اتصال را بازیابی کنید.
| جزئیات | |
|---|---|
| برگرداندن |
وضعیت اتصال.
|
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
تعیین میکند که آیا پیام ورودی خاصی از همتای پیکربندیشده است و بهدرستی اصالتسنجی شده است یا نه.
این روش جزئیات زیر را درباره پیام دادهشده تأیید میکند:
- پیام از گره همتای اتصال منشأ گرفته است
- پیام ازطریق همان نوع انتقال پیوند دریافت شده است. اگر پیام ازطریق اتصال دریافت شده باشد، این روش همچنین تأیید میکند که پیام ازطریق همان اتصالی دریافت شده است که با اتصال مرتبط است.
- کلید رمزگذاری و نوع استفادهشده برای رمزگذاری پیام با موارد پیکربندیشده در پیوند مطابقت داشته باشد. برای اتصالاتی که بدون استفاده از امنیت پیکربندی شدهاند، این روش تأیید میکند که پیام ورودی رمزگذاری نشده است.
این روش برای استفاده در پروتکلهایی مانند WDM درنظر گرفته شده است که در آن همتایان میتوانند پساز تبادل اولیه از گره به همتا، بهطور خودجوش تبادل را به گره محلی آغاز کنند. در چنین مواردی، این روش به گره محلی اجازه میدهد تأیید کند که پیام ناخواسته ورودی توسط همتای مرتبط ارسال شده است. (البته، برای «پیوندهایی» که بدون استفاده از رمزگذاری پیام پیکربندی شدهاند، این ادعا از دیدگاه امنیتی ارزشی ندارد. این برنما صرفاً تأیید میکند که شناسه گره فرستنده و انواع انتقال مطابقت دارند.)
توجه داشته باشید که اگر اتصال در حالت «آماده» نباشد، این روش همیشه مقدار نادرست را برمیگرداند.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
| کالاهای مرجوعی |
اگر پیام واقعاً از همتا باشد، True است.
|
||
IsConnectionTransport
bool IsConnectionTransport() const
IsPreparing
bool IsPreparing( void ) const
| جزئیات | |
|---|---|
| کالاهای مرجوعی |
اگر Binding درحال آمادهسازی باشد، درست است.
|
IsUDPTransport
bool IsUDPTransport() const
IsUnreliableUDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
NewExchangeContext
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
«زمینه تبادل» جدیدی را برای ارتباط با همتایی که هدف اتصال است اختصاص دهید.
| جزئیات | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| پارامترها |
|
||||||||
| مقادیر برگشتی |
|
||||||||
انتشار
void Release( void )
ارجاع به شیء پیوند را آزاد کنید.
اگر ارجاع دیگری به شیء اتصال وجود نداشته باشد، اتصال بسته و آزاد میشود.
RequestPrepare
WEAVE_ERROR RequestPrepare()
از برنامه بخواهید پیوند را پیکربندی و آماده کند.
کد لایه پروتکل میتواند از این روش در ملزوماتی که پیکربندی نشدهاند یا ناموفق بودهاند استفاده کند تا رویدادی را به برنامه (kEvent_PrepareRequested) راهاندازی کند و از آن بخواهد ملزومات را برای استفاده پیکربندی و آماده کند.
این روش را فقط میتوان در Bindings در حالتهای NotConfigured یا Failed فراخوانی کرد.
اگر برنامه از پیکربندی/آمادهسازی درخواستی «پیوندها» پشتیبانی نکند، روش با WEAVE_ERROR_NOT_IMPLEMENTED ناموفق خواهد بود.
بازنشانی
void Reset( void )
پیوند را به حالت پیکربندینشده بازنشانی کنید.
وقتی Reset() فراخوانی میشود، هرگونه کنش آمادهسازی درحال انجام برای اتصال لغو میشود و همه منابع ارتباطات خارجی که اتصال دراختیار دارد آزاد میشود. Reset() اتصال را در وضعیت «پیکربندینشده» قرار میدهد، پساز آن ممکن است دوباره پیکربندی و آماده شود.
Reset() تعداد ارجاعهای اتصال را تغییر نمیدهد.
SetDefaultResponseTimeout
void SetDefaultResponseTimeout( uint32_t msec )
زمان استراحت پاسخ تبادل پیشفرض را برای استفاده هنگام برقراری ارتباط با همتا تنظیم کنید.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
SetDefaultWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
پیکربندی WRMP پیشفرض را برای استفاده هنگام برقراری ارتباط با همتا تنظیم کنید.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
SetEventCallback
void SetEventCallback( EventCallback aEventCallback )
تابع تعریفشده برنامه را تنظیم کنید تا وقتی رویداد «میانای برنامهسازی کاربردی» برای ملزم کردن رخ میدهد فراخوانی شود.
| جزئیات | |||
|---|---|---|---|
| پارامترها |
|
||
SetProtocolLayerCallback
void SetProtocolLayerCallback( EventCallback callback, void *state )
بااستفاده از Binding ازطرف برنامه، تابع برگشتی رویداد را برای کد لایه پروتکل تنظیم کنید.
وقتی رویدادهای میانای برنامهسازی کاربردی برای Binding رخ میدهد، این تابع علاوهبر تابع بازخوانی تعریفشده توسط برنامه فراخوانی خواهد شد.
| جزئیات | |||||
|---|---|---|---|---|---|
| پارامترها |
|
||||
توابع عمومی ایستا
DefaultEventHandler
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
گرداننده پیشفرض برای اتصال رویدادهای API.
برنامهها باید این روش را برای هر رویداد میانای برنامهسازی کاربردی که نمیشناسند یا مدیریت نمیکنند فراخوانی کنند. پارامترهای ارائهشده باید با پارامترهایی که با اتصال به تابع گرداننده رویداد برنامه ارسال شدهاند یکسان باشد.
| جزئیات | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| پارامترها |
|
||||||||