nl:: بافت:: پروفایل ها:: راهنمای خدمات:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
شی مدیر برای فهرست خدمات Weave.
خلاصه
مدیر سرویس Weave رابط اصلی برنامه های کاربردی به سرویس دایرکتوری است. به این ترتیب، پیچیدگی های ذاتی در جستجوی ورودی دایرکتوری مرتبط با یک نقطه پایانی سرویس، انجام جستجوی DNS روی یک یا چند نام میزبان موجود در آنجا، تلاش برای اتصال، ایمن کردن اتصال و غیره را پنهان می کند. همچنین ممکن است حافظه پنهان اطلاعات فهرست خدمات را مدیریت کند.
سازندگان و ویرانگرها | |
---|---|
WeaveServiceManager (void) این روش نمونه WeaveServiceManager را مقداردهی اولیه می کند. | |
~WeaveServiceManager (void) این روش نمونه WeaveServiceManager را از بین می برد. |
انواع عمومی | |
---|---|
@303 { | enum |
OnConnectBegin )(struct ServiceConnectBeginArgs &args) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(* یک تماس برنامه بلافاصله قبل از برقراری اتصال انجام می شود. |
OnServiceEndpointQueryBegin )(void) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(* یک تماس برنامه کاربردی برای علامتگذاری زمان درخواست فهرست خدمات خروجی. |
OnServiceEndpointQueryEndWithTimeInfo )(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) | nl::Weave::پروفایل::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(* یک تماس برنامه کاربردی برای ارائه مقادیر زمانی از پاسخ دایرکتوری سرویس. |
RootDirectoryAccessor )(uint8_t *aDirectory, uint16_t aLength) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessorWEAVE_ERROR (* یک تابع دسترسی برای اطلاعات دایرکتوری ریشه. |
StatusHandler )(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport) | nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(* یک کنترل کننده برای شرایط خطا و وضعیت. |
توابع عمومی | |
---|---|
SetConnectBeginCallback ( OnConnectBegin aConnectBegin) | void یک تابع تماس را تنظیم کنید تا بلافاصله قبل از برقراری اتصال فراخوانی شود. |
cancel (uint64_t aServiceEp, void *aAppState) | void این روش درخواست اتصال را لغو می کند. |
clearCache (void) | void اگر وضعیت در ترمینال kServiceMgrState_Resolved باشد، این روش وضعیت و حافظه پنهان مدیر را پاک می کند، به این معنی که پاسخ از نقطه پایانی Service Directory دریافت شده است. |
connect (uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf) | این روش درخواست اتصال به یک سرویس Weave را می دهد. |
init ( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin) | این متد شیء Service manager را مقداردهی اولیه می کند. |
lookup (uint64_t aServiceEp, HostPortList *outHostPortList) | این روش اطلاعات دایرکتوری را برای یک نقطه پایانی سرویس جستجو می کند. |
lookup (uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry) | این روش اطلاعات دایرکتوری را برای یک نقطه پایانی سرویس جستجو می کند. |
onConnectionClosed ( WEAVE_ERROR aError) | void این روش رویداد بسته اتصال گزارش شده توسط زمینه تبادل Weave مرتبط را مدیریت می کند. |
onConnectionComplete ( WEAVE_ERROR aError) | void این روش رویداد اتصال تکمیل شده را برای تراکنش جستجوی نقطه پایانی سرویس مدیریت می کند. |
onResponseReceived (uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg) | void این روش هر پیام پاسخی را در مکالمه با سرویس دایرکتوری کنترل می کند. |
onResponseTimeout (void) | void این روش رویداد تایم اوت را کنترل می کند که در آن هیچ پاسخی از سرویس دایرکتوری دریافت نمی شود. |
relocate ( WEAVE_ERROR aError) | void این روش کش دایرکتوری سرویس را جابجا می کند. |
relocate (void) | void این روش کش دایرکتوری سرویس را جابجا می کند. |
replaceOrAddCacheEntry (uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId) | ورودی فهرست اصلی نام میزبان و شناسه پورت را در ابتدای فهرست فهرست اضافه کنید. |
reset ( WEAVE_ERROR aError) | void این روش مدیر سرویس را به حالت اولیه بازنشانی می کند. |
reset (void) | void این روش مدیر سرویس را به حالت اولیه بازنشانی می کند. |
unresolve ( WEAVE_ERROR aError) | void این روش کش دایرکتوری سرویس را باطل می کند. |
unresolve (void) | void این روش کش دایرکتوری سرویس را باطل می کند. |
کلاس ها | |
---|---|
nl:: Weave:: پروفایل ها:: ServiceDirectory:: WeaveServiceManager:: ConnectRequest | این کلاس نشان دهنده یک تراکنش واحد است که توسط مدیر سرویس مدیریت می شود. |
انواع عمومی
@303
@303
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
یک تماس برنامه بلافاصله قبل از برقراری اتصال انجام می شود.
این فراخوانی میتواند توسط برنامهها برای مشاهده و تغییر اختیاری آرگومانهای ارسال شده به #WeaveConnection::Connect () در طول ایجاد یک اتصال سرویس استفاده شود. این فراخوانی هم برای اتصال به نقطه پایانی سرویس هدف و هم برای اتصال به نقطه پایانی دایرکتوری خدمات در صورتی که جستجوی دایرکتوری باید انجام شود، فراخوانی می شود.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
یک تماس برنامه کاربردی برای علامتگذاری زمان درخواست فهرست خدمات خروجی.
این زمانی فراخوانی می شود که ما می خواهیم درخواست پرس و جو نقطه پایانی سرویس را ارسال کنیم. این برای مطابقت با OnServiceEndpointQueryEnd برای جبران زمان پرواز پیام استفاده می شود.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
یک تماس برنامه کاربردی برای ارائه مقادیر زمانی از پاسخ دایرکتوری سرویس.
این زمانی فراخوانی می شود که ما اطلاعات زمانی را از پاسخ پرسش دایرکتوری سرویس دریافت می کنیم توجه داشته باشید که این پاسخ تنها در صورتی اتفاق می افتد که یک پاسخ با موفقیت تجزیه شود و اطلاعات زمانی گنجانده شود.
جزئیات | |||||
---|---|---|---|---|---|
پارامترها |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
یک تابع دسترسی برای اطلاعات دایرکتوری ریشه.
باید از جایی شروع کنید و با دایرکتوری سرویس باید با یک دایرکتوری خرد شروع کنید که حاوی آدرس سروری است که می توانید برای دریافت هر چیز دیگری ضربه بزنید. از آنجایی که منشأ و منشأ این اطلاعات احتمالاً از دستگاهی به دستگاه دیگر متفاوت است، ما در اینجا یک پاسخ تماس دسترسی ارائه می دهیم.
جزئیات | |||||
---|---|---|---|---|---|
پارامترها |
| ||||
برمی گرداند | WEAVE_NO_ERROR در مورد موفقیت، در غیر این صورت فرآیند بارگیری متوقف می شود. |
Status Handler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
یک کنترل کننده برای شرایط خطا و وضعیت.
ممکن است کاربر مدیر سرویس از مشکلاتی در تلاش برای اجرای درخواست اتصال به یکی از دو روش مطلع شود. ممکن است یک گزارش وضعیت از سرویس دریافت کند یا ممکن است یک WEAVE_ERROR ایجاد شده داخلی دریافت کند. در هر صورت، اطلاعات از طریق این تماس برگشتی به دست می آید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
|
توابع عمومی
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
یک تابع تماس را تنظیم کنید تا بلافاصله قبل از برقراری اتصال فراخوانی شود.
جزئیات | |||
---|---|---|---|
پارامترها |
|
WeaveServiceManager
WeaveServiceManager( void )
این روش نمونه WeaveServiceManager را مقداردهی اولیه می کند.
توجه داشته باشید که init() باید برای مقداردهی اولیه این نمونه فراخوانی شود.
لغو
void cancel( uint64_t aServiceEp, void *aAppState )
این روش درخواست اتصال را لغو می کند.
این روش درخواست اتصال را با توجه به شناسه نقطه پایانی سرویس و شیء وضعیت برنامه در زمان درخواست به عنوان شناسه لغو می کند. اگر آخرین درخواست اتصال باشد، این روش وضعیت اتصال دایرکتوری خدمات معلق را نیز پاک می کند.
جزئیات | |||||
---|---|---|---|---|---|
پارامترها |
|
clearCache
void clearCache( void )
اگر وضعیت در ترمینال kServiceMgrState_Resolved باشد، این روش وضعیت و حافظه پنهان مدیر را پاک می کند، به این معنی که پاسخ از نقطه پایانی Service Directory دریافت شده است.
اتصال
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
این روش درخواست اتصال به یک سرویس Weave را می دهد.
این تماس اتصال سطح بالا است. اساساً یک اتصال ایمن به سرویس Weave با توجه به یک نقطه پایانی سرویس و یک حالت احراز هویت ایجاد می کند یا در تلاش است.
این متد فقط پس از فراخوانی موفقیت آمیز به init() قابل فراخوانی است و درخواست اتصال به طور بالقوه توسط cancel() لغو می شود.
این روش را می توان قبل از اینکه حافظه پنهان محلی با داده هایی از داده های پیش فرض ارائه شده یا سفر به سرویس دایرکتوری پر شود فراخوانی کرد. مدیر سرویس فقط درخواست را قبل از تعیین محتوای کش در صف قرار می دهد.
جزئیات | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
پارامترها |
| ||||||||||||||
برمی گرداند | WEAVE_NO_ERROR در موفقیت؛ در غیر این صورت، یک کد خطای مربوطه. |
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
این متد شیء Service manager را مقداردهی اولیه می کند.
برای استفاده، یک شی مدیر سرویس باید مقداردهی اولیه شود. پس از فراخوانی موفقیت آمیز این متد، کلاینت ها می توانند شروع به فراخوانی connect() , lookup() و روش های دیگر کنند.
جزئیات | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
پارامترها |
| ||||||||||||||||
برمی گرداند | اگر آرگومان تابع نامعتبر باشد، WEAVE_ERROR_INVALID_ARGUMENT . در غیر این صورت، WEAVE_NO_ERROR . |
جستجو
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
این روش اطلاعات دایرکتوری را برای یک نقطه پایانی سرویس جستجو می کند.
اگر دایرکتوری سرویس حل شده باشد، یعنی اگر یک عملیات Connect() موفقیت آمیز انجام شده باشد، این روش شیء ارائه شده HostPortList را پر می کند.
توجه: HostPortList به شی WeaveServiceManager محدود شده است. تا زمانی که کش دایرکتوری سرویس پاک شود یا تا زمانی که جستجوی دایرکتوری سرویس دیگری رخ دهد، معتبر باقی می ماند.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
| ||||||
ارزش های بازگشتی |
|
جستجو
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
این روش اطلاعات دایرکتوری را برای یک نقطه پایانی سرویس جستجو می کند.
اگر دایرکتوری سرویس حل شده باشد، یعنی اگر یک عملیات Connect() موفقیت آمیز انجام شده باشد، این روش یک ورودی دایرکتوری را با یک شناسه نقطه پایانی سرویس برمی گرداند.
این روش جزئیات پیادهسازی داخلی فهرست سرویس را نشان میدهد، پیادهسازیها باید به شدت با استفاده از گونهای از این روش که HostPortList را تولید میکند، موافق باشند.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
| ||||||
ارزش های بازگشتی |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
این روش رویداد بسته اتصال گزارش شده توسط زمینه تبادل Weave مرتبط را مدیریت می کند.
جزئیات | |||
---|---|---|---|
پارامترها |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
این روش رویداد اتصال تکمیل شده را برای تراکنش جستجوی نقطه پایانی سرویس مدیریت می کند.
یکی دو تا احتمال وجود دارد. اول، اتصال ممکن است شکست بخورد که در این صورت کار ما تمام شده است. در غیر این صورت، اتصال در واقع کامل شده است و کاری که میخواهیم انجام دهیم این است که یک متن مبادله را باز کنیم و یک جستجوی دایرکتوری ارسال کنیم.
جزئیات | |||
---|---|---|---|
پارامترها |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
این روش هر پیام پاسخی را در مکالمه با سرویس دایرکتوری کنترل می کند.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
|
onResponseTimeout
void onResponseTimeout( void )
این روش رویداد تایم اوت را کنترل می کند که در آن هیچ پاسخی از سرویس دایرکتوری دریافت نمی شود.
نقل مکان کند
void relocate( WEAVE_ERROR aError )
این روش کش دایرکتوری سرویس را جابجا می کند.
هنگامی که یک نقطه پایانی سرویس یک گزارش وضعیت با کد وضعیت kStatus_Relocated برمیگرداند، برنامه میتواند برای پاک کردن حافظه پنهان و لغو درخواستهای اتصال ، unresolve() را فراخوانی کند. این روش مدیریت خطا را با فراخوانی ()unresolve در اولین بار و reset() در صورتی که مشکل هنوز حل نشده است، ساده می کند.
این نسخه از روش - در اینجا برای سازگاری با عقب - یک خطا را دریافت و ثبت می کند و سپس relocate(void) را فراخوانی می کند.
جزئیات | |||
---|---|---|---|
پارامترها |
|
جابجایی (باطل)
نقل مکان کند
void relocate( void )
این روش کش دایرکتوری سرویس را جابجا می کند.
هنگامی که یک نقطه پایانی سرویس یک گزارش وضعیت با کد وضعیت kStatus_Relocated برمیگرداند، برنامه میتواند برای پاک کردن حافظه پنهان و لغو درخواستهای اتصال ، unresolve() را فراخوانی کند. این روش مدیریت خطا را با فراخوانی ()unresolve در اولین بار و reset() در صورتی که مشکل هنوز حل نشده است، ساده می کند.
همچنین ببینید:تغییر مکان (WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
ورودی فهرست اصلی نام میزبان و شناسه پورت را در ابتدای فهرست فهرست اضافه کنید.
تنظیم مجدد
void reset( WEAVE_ERROR aError )
این روش مدیر سرویس را به حالت اولیه بازنشانی می کند.
این روش همه حالتهای مدیر سرویس از جمله وضعیت ارتباطات، وضعیت حافظه پنهان و وضعیت هر درخواست اتصال معلق را بازنشانی میکند.
این نسخه از روش - در اینجا برای سازگاری با عقب - یک خطا را دریافت و ثبت می کند و سپس reset(void) را فراخوانی می کند.
جزئیات | |||
---|---|---|---|
پارامترها |
|
تنظیم مجدد (باطل)
تنظیم مجدد
void reset( void )
این روش مدیر سرویس را به حالت اولیه بازنشانی می کند.
این روش همه حالتهای مدیر سرویس از جمله وضعیت ارتباطات، وضعیت حافظه پنهان و وضعیت هر درخواست اتصال معلق را بازنشانی میکند.
همچنین ببینید:بازنشانی (WEAVE_ERROR)
حل نشدن
void unresolve( WEAVE_ERROR aError )
این روش کش دایرکتوری سرویس را باطل می کند.
این روش وضعیت کش دایرکتوری سرویس را طوری تنظیم می کند که در درخواست بعدی مدیر سرویس یک پرس و جو دایرکتوری سرویس را صادر کند.
این نسخه از روش - در اینجا برای سازگاری با عقب - یک خطا را دریافت و ثبت می کند و سپس unresolve(void) را فراخوانی می کند.
جزئیات | |||
---|---|---|---|
پارامترها |
|
حل نشدن (باطل)
حل نشدن
void unresolve( void )
این روش کش دایرکتوری سرویس را باطل می کند.
این روش وضعیت کش دایرکتوری سرویس را طوری تنظیم می کند که در درخواست بعدی مدیر سرویس یک پرس و جو دایرکتوری سرویس را صادر کند.
همچنین ببینید:حل نشدن (WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
این روش نمونه WeaveServiceManager را از بین می برد.