nl:: بافت:: صحافی
#include <src/lib/core/WeaveBinding.h>
هدف مورد نظر یک ارتباط Weave و اطلاعات پیکربندی مرتبط را ضبط می کند.
خلاصه
یک شی Binding هدف مورد نظر یک ارتباط Weave (همچنین به عنوان "همتا" شناخته میشود)، همراه با مجموعهای از پارامترهای پیکربندی که نحوه برقراری ارتباط با همتا را توصیف میکند، شناسایی میکند. اتصالات مستقل از پروتکل برنامه است که بین دو طرف صحبت می شود. به این ترتیب، آنها "چه کسی" و "چگونه" یک ارتباط را می گیرند، اما نه "چه چیزی".
برنامه ها باید یک Binding را با پارامترهای خاص برای نوع کانال ارتباطی مورد نظر پیکربندی کنند. Bindingها از طیف وسیعی از انتقالهای شبکه، از جمله TCP، UDP، UDP با پیامرسانی قابل اعتماد Weave، و Weave over BLE (WoBLE) پشتیبانی میکنند. برنامه ها همچنین می توانند استفاده از مکانیسم های امنیتی خاص را برای محافظت از پیام های ارسال شده بین طرفین درخواست کنند. این شامل جلسات CASE و PASE و کلیدهای گروه برنامه است. رابط برای پیکربندی Binding از یک سبک API اعلانی استفاده می کند که به برنامه ها اجازه می دهد الزامات خود را برای ارتباط به زبان ساده بیان کنند.
برای جزئیات بیشتر به مستندات مربوط به Binding::Configuration مراجعه کنید.
آماده سازی
قبل از برقراری ارتباط، یک Binding باید "آماده شود". عمل آماده سازی Binding شامل ایجاد وضعیت لازم برای برقراری ارتباط است. این می تواند شامل مواردی مانند: حل کردن آدرس شبکه همتا، ایجاد اتصال شبکه و مذاکره درباره کلیدهای امنیتی باشد. پس از پیکربندی توسط برنامه، Binding تمام مراحل لازم برای آماده شدن برای برقراری ارتباط را انجام می دهد و پس از تکمیل فرآیند به برنامه باز می گردد. به این ترتیب، Bindings مکانیک ارتباط را پنهان میکند و به برنامهها اجازه میدهد تا بر تعاملات سطح بالا تمرکز کنند.
ارتباط
هنگامی که یک صحافی آماده شد، برای استفاده آماده می شود. در این حالت، برنامه ها (یا به طور معمول، کد لایه پروتکل که از طرف یک برنامه کار می کند) از Binding درخواست می کنند تا یک زمینه تبادل Weave را اختصاص دهد. زمینه تبادل حاصل از پیش پیکربندی شده برای ارتباط، به برنامه اجازه میدهد تا فوراً یک تبادل Weave را با همتا آغاز کند. برنامه میتواند به درخواست زمینههای مبادله از Binding ادامه دهد تا زمانی که Binding بسته شود، یا برخی رویدادها، به عنوان مثال، خرابی شبکه، کانال ارتباطی اصلی را خاتمه دهد.
تغییرات دولت الزام آور
در طول استفاده از آن، Binding رویدادهای API را به برنامه ارائه می دهد و آن را از تغییرات در وضعیت Binding مطلع می کند. به عنوان مثال، هنگامی که آماده سازی با موفقیت انجام شود، برنامه یک رویداد دریافت می کند که به آن اطلاع می دهد که Binding آماده استفاده است. به طور مشابه، اگر کانال ارتباطی زیربنایی از کار بیفتد، رویدادی به برنامه ارسال میشود که به آن اطلاع میدهد که Binding دیگر در حالت آماده نیست.
رویدادهای API از طریق یک تابع فراخوانی رویداد که هنگام تخصیص Binding ارائه میشود، به برنامه تحویل داده میشوند.
طول عمر صحافی
Binding برای اجازه استفاده مشترک در چندین مؤلفه نرم افزاری، مرجع شمارش می شوند. هنگامی که یک Binding اختصاص داده می شود، یک مرجع واحد برای اتصال ایجاد می شود. برنامه مسئول انتشار این مرجع در مقطعی در آینده است به طوری که Binding برای استفاده مجدد بعدی رایگان باشد.
هنگامی که یک برنامه با Binding انجام می شود، ممکن است Close() را روی binding فراخوانی کند. این ارجاع برنامه به Binding را آزاد می کند و همه تحویل بیشتر رویدادهای API را مسدود می کند. هنگامی که آخرین مرجع به یک Binding آزاد می شود، به طور خودکار بسته می شود.
انواع عمومی | |
---|---|
@23 { | enum |
EventCallback )(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam) | typedefvoid(* |
EventType { | enum |
State | enum |
صفات عمومی | |
---|---|
AppState | void * |
توابع عمومی | |
---|---|
AddRef (void) | void یک مرجع به شیء الزام آور رزرو کنید. |
AdjustResponseTimeout ( ExchangeContext *apExchangeContext) const | برای تنظیم زمان پاسخ، یک بستر موجود Exchange را دوباره پیکربندی کنید. |
AllocateRightSizedBuffer (PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize) | |
BeginConfiguration () | فرآیند پیکربندی Binding است. |
CanBePrepared (void) const | bool |
Close (void) | void شی binding را ببندید و یک مرجع آزاد کنید. |
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) | یک Context Exchange جدید برای برقراری ارتباط با همتا که هدف اتصال است اختصاص دهید. |
Release (void) | void رفرنسی به شی binding آزاد کنید. |
RequestPrepare () | از برنامه درخواست کنید تا Binding را پیکربندی و آماده کند. |
Reset (void) | void اتصال را به حالت پیکربندی نشده بازنشانی کنید. |
SetDefaultResponseTimeout (uint32_t msec) | void زمان پاسخگویی تبادل پیشفرض را تنظیم کنید تا هنگام برقراری ارتباط با همتا استفاده شود. |
SetDefaultWRMPConfig (const WRMPConfig & wrmpConfig) | void پیکربندی پیشفرض WRMP را برای استفاده در هنگام برقراری ارتباط با همتا تنظیم کنید. |
SetEventCallback (EventCallback aEventCallback) | void تابع تعریف شده توسط برنامه را تنظیم کنید تا زمانی که یک رویداد API برای Binding رخ می دهد، فراخوانی شود. |
SetProtocolLayerCallback (EventCallback callback, void *state) | void یک تابع تماس رویداد را برای کد لایه پروتکل با استفاده از Binding از طرف یک برنامه تنظیم کنید. |
توابع استاتیک عمومی | |
---|---|
DefaultEventHandler (void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam) | void کنترل کننده پیش فرض برای اتصال رویدادهای API. |
کلاس ها | |
---|---|
nl:: بافت:: صحافی:: پیکربندی | یک رابط به سبک اظهاری برای پیکربندی و آماده سازی یک شی Binding ارائه می دهد. |
سازه ها | |
---|---|
nl:: بافت:: صحافی:: InEventParam | پارامترهای ورودی به رویداد Binding API. |
nl:: بافت:: صحافی:: OutEventParam | پارامترهای خروجی به یک رویداد Binding API. |
انواع عمومی
@23
@23
خواص | |
---|---|
kGetPeerDescription_MaxLength | حداکثر طول رشته (شامل کاراکتر NUL) که توسط GetPeerDescription() برگردانده شده است. |
رویداد Callback
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
نوع رویداد
EventType
ایالت
State
صفات عمومی
AppState
void * AppState
توابع عمومی
AdRef
void AddRef( void )
یک مرجع به شیء الزام آور رزرو کنید.
AdjustResponseTimeout
WEAVE_ERROR AdjustResponseTimeout( ExchangeContext *apExchangeContext ) const
برای تنظیم زمان پاسخ، یک بستر موجود Exchange را دوباره پیکربندی کنید.
جزئیات | |||
---|---|---|---|
پارامترها |
|
AllocateRightSizedBuffer
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
BeginConfiguration
Configuration BeginConfiguration()
فرآیند پیکربندی Binding است.
برنامهها باید BeginConfiguration() را برای پیکربندی Binding قبل از آمادهسازی برای برقراری ارتباط با peer فراخوانی کنند.
جزئیات | |
---|---|
برمی گرداند | یک Binding:: جسم پیکربندی که می تواند برای پیکربندی اتصال استفاده شود. |
CanBerepared
bool CanBePrepared( void ) const
بستن
void Close( void )
شی binding را ببندید و یک مرجع آزاد کنید.
این متد در صورت فراخوانی باعث می شود که binding به حالت Closed وارد شود. هر گونه اقدام آماده سازی در حال انجام برای اتصال لغو می شود و تمام منابع ارتباطی خارجی که توسط اتصال دهنده نگهداری می شود آزاد می شوند.
فراخوانی Close () تعداد مراجع مرتبط با binding را کاهش می دهد و اگر تعداد مرجع صفر شود، شی آزاد می شود.
GetConnection
WeaveConnection * GetConnection() const
شیء اتصال Weave مرتبط با اتصال را دریافت کنید.
جزئیات | |
---|---|
برمی گرداند | یک اشاره گر به یک شی WeaveConnection یا NULL اگر هیچ ارتباطی با اتصال وجود نداشته باشد. |
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
زمان پاسخگویی تبادل پیشفرض را برای استفاده در هنگام برقراری ارتباط با همتا دریافت کنید.
جزئیات | |
---|---|
برمی گرداند | پایان زمان پاسخ در MS. |
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 حاصل از UDP MTU پیکربندی شده سرریز نخواهد شد.
علاوه بر این، این روش تضمین می کند که بار Weave از PacketBuffer ارائه شده سرریز نخواهد شد.
جزئیات | |||
---|---|---|---|
پارامترها |
| ||
برمی گرداند | حداکثر اندازه محموله بافت. |
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) در دسترس است. قبل از شروع آماده سازی، اطلاعات آدرس تنها در صورتی در دسترس است که به صراحت توسط برنامه در طول پیکربندی تنظیم شده باشد. در طول مرحله آماده سازی، اطلاعات آدرس پس از تکمیل آماده سازی آدرس در دسترس است (مثلاً پس از تکمیل وضوح DNS). پس از آماده شدن Binding ، اطلاعات آدرس تا زمانی که Binding تنظیم مجدد نشود، در دسترس باقی میماند.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
|
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
شناسه گره همتای اتصال را بازیابی کنید.
فقط زمانی معتبر است که شیء الزام آور آماده شده باشد.
جزئیات | |
---|---|
برمی گرداند | شناسه گره همتا را ببافید |
GetProtocolLayerCallback
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
وضعیت فعلی صحافی را بازیابی کنید.
جزئیات | |
---|---|
برمی گرداند | حالت الزام آور. |
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
تعیین کنید که آیا یک پیام دریافتی خاص از طرف همتای پیکربندی شده است و به طور مناسب احراز هویت شده است.
این روش جزئیات زیر را در مورد پیام داده شده تأیید می کند:
- پیام از گره همتای اتصال نشات گرفته است
- پیام از طریق همان نوع انتقال به عنوان صحافی دریافت شد. اگر پیام از طریق اتصال دریافت شده باشد، این روش همچنین تأیید می کند که پیام از طریق اتصال دقیق مرتبط با اتصال دریافت شده است.
- کلید رمزگذاری و نوع مورد استفاده برای رمزگذاری پیام با موارد پیکربندی شده در صحافی مطابقت دارد. برای اتصالهایی که بدون استفاده از امنیت پیکربندی شدهاند، این روش تأیید میکند که پیام دریافتی رمزگذاری نشده است.
این روش برای استفاده در پروتکل هایی مانند WDM در نظر گرفته شده است که در آن همتایان می توانند به طور خود به خود مبادلات را به گره محلی پس از تبادل اولیه از گره به همتا آغاز کنند. در چنین مواردی، این روش به گره محلی اجازه می دهد تا تأیید کند که پیام ناخواسته دریافتی توسط همتای مرتبط ارسال شده است. (البته، برای Binding هایی که بدون استفاده از رمزگذاری پیام پیکربندی شده اند، این ادعا هیچ ارزشی از منظر امنیتی ارائه نمی دهد. این فقط تایید می کند که شناسه گره فرستنده و انواع انتقال مطابقت دارند.)
توجه داشته باشید که اگر binding در حالت Ready نباشد، این متد همیشه false را برمیگرداند.
جزئیات | |||
---|---|---|---|
پارامترها |
| ||
برمی گرداند | اگر پیام به طور واقعی از طرف همتا باشد درست است. |
IsConnectionTransport
bool IsConnectionTransport() const
در حال آماده سازی
bool IsPreparing( void ) const
جزئیات | |
---|---|
برمی گرداند | اگر صحافی در حال آماده سازی باشد درست است. |
IsUDPTransport
bool IsUDPTransport() const
UnreliableUDPTransport است
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
NewExchangeContext
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
یک Context Exchange جدید برای برقراری ارتباط با همتا که هدف اتصال است اختصاص دهید.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
پارامترها |
| ||||||||
ارزش های بازگشتی |
|
رها کنید
void Release( void )
رفرنسی به شی binding آزاد کنید.
اگر دیگر ارجاعی به شیء binding وجود نداشته باشد، صحافی بسته و آزاد می شود.
RequestPrepare
WEAVE_ERROR RequestPrepare()
از برنامه درخواست کنید تا Binding را پیکربندی و آماده کند.
کد لایه پروتکل میتواند از این روش در Binding استفاده کند که پیکربندی نشده یا ناموفق بوده است تا رویدادی را برای برنامه (kEvent_PrepareRequested) راهاندازی کند که درخواست پیکربندی و آماده کردن اتصال را برای استفاده دارد.
این روش را فقط می توان در Bindings در حالت NotConfigured یا Failed فراخوانی کرد.
اگر برنامه از پیکربندی/آماده سازی Bindings بر اساس درخواست پشتیبانی نکند، روش با WEAVE_ERROR_NOT_IMPLEMENTED شکست می خورد.
بازنشانی کنید
void Reset( void )
اتصال را به حالت پیکربندی نشده بازنشانی کنید.
هنگامی که Reset() فراخوانی می شود، هر اقدام آماده سازی در حال انجام برای binding لغو می شود و تمام منابع ارتباطی خارجی که توسط binding نگهداری می شود آزاد می شوند. Reset() binding را در حالت Unconfigured قرار می دهد، پس از آن ممکن است دوباره پیکربندی و آماده شود.
Reset() تعداد مراجع اتصال را تغییر نمی دهد.
SetDefaultResponseTimeout
void SetDefaultResponseTimeout( uint32_t msec )
زمان پاسخگویی تبادل پیشفرض را تنظیم کنید تا هنگام برقراری ارتباط با همتا استفاده شود.
جزئیات | |||
---|---|---|---|
پارامترها |
|
SetDefaultWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
پیکربندی پیش فرض WRMP را برای استفاده در هنگام برقراری ارتباط با همتا تنظیم کنید.
جزئیات | |||
---|---|---|---|
پارامترها |
|
SetEventCallback
void SetEventCallback( EventCallback aEventCallback )
تابع تعریف شده توسط برنامه را تنظیم کنید تا زمانی که یک رویداد API برای Binding رخ می دهد، فراخوانی شود.
جزئیات | |||
---|---|---|---|
پارامترها |
|
SetProtocolLayerCallback
void SetProtocolLayerCallback( EventCallback callback, void *state )
یک تابع تماس رویداد را برای کد لایه پروتکل با استفاده از Binding از طرف یک برنامه تنظیم کنید.
هنگامی که رویدادهای API برای Binding رخ می دهد، علاوه بر تابع فراخوانی تعریف شده توسط برنامه فراخوانی می شود.
جزئیات | |||||
---|---|---|---|---|---|
پارامترها |
|
توابع استاتیک عمومی
DefaultEventHandler
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
کنترل کننده پیش فرض برای اتصال رویدادهای API.
برنامهها باید این روش را برای رویدادهای API که نمیشناسند یا مدیریت نمیکنند فراخوانی کنند. پارامترهای ارائه شده باید همان پارامترهایی باشند که توسط اتصال به تابع کنترل کننده رویداد برنامه ارسال می شود.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
پارامترها |
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. The OPENTHREAD and related marks are trademarks of the Thread Group and are used under license.
تاریخ آخرین بهروزرسانی 2024-11-13 بهوقت ساعت هماهنگ جهانی.