nl:: بافت:: پروفایل ها:: Echo_Next:: WeaveEchoClient
#include <src/lib/profiles/echo/Next/WeaveEchoClient.h>
Provides the ability to send Weave EchoRequest messages to a peer node and receive the corresponding EchoResponse messages.
خلاصه
کلاس WeaveEchoClient سمت آغازگر پروتکل Weave Echo را پیاده سازی می کند. مشابه پروتکل پینگ ICMP، پروتکل Weave Echo را می توان برای آزمایش زنده بودن و دسترس پذیری یک گره Weave استفاده کرد.
برنامهها میتوانند از کلاس WeaveEchoClient برای ارسال پیامهای EchoRequest یکباره یا تکراری به یک گره همتا که توسط یک شی Binding شناسایی شده است استفاده کنند. یک کلاس مربوطه برای پاسخ به درخواست های اکو وجود دارد (به WeaveEchoServer مراجعه کنید).
Client Binding
WeaveEchoClient یک شی Weave Binding می گیرد که برای شناسایی و برقراری ارتباط با گیرنده مورد نظر درخواست های اکو استفاده می شود. Binding را می توان قبل از مقداردهی اولیه شی WeaveEchoClient توسط برنامه پیکربندی و آماده کرد، یا می تواند آماده باقی بماند، در این صورت WeaveEchoClient آماده سازی بر اساس تقاضای binding را درخواست می کند (برای جزئیات به Binding::RequestPrepare() مراجعه کنید. ).
در صورتی که پس از وارد شدن به حالت آماده شکست بخورد، آماده سازی بر اساس تقاضا نیز درخواست می شود.
حالت SendRepeating
روش SendRepeating() می تواند برای قرار دادن WeaveEchoClient در حالت SendRepeating استفاده شود. در این حالت، شی کلاینت یک دنباله تکراری از پیامهای EchoRequest را در یک بازه زمانی پیکربندی شده برای همتا ارسال میکند. حالت SendRepeating را می توان با فراخوانی متد Stop() لغو کرد.
چندپخشی و پخش
یک شی WeaveEchoClient می تواند برای ارسال EchoRequests به چندین گیرنده به طور همزمان با پیکربندی شی Binding با یک آدرس چندپخشی IPv6 مناسب یا آدرس پخش شبکه محلی IPv4 (255.255.255.255) استفاده شود. هنگامی که شی WeaveEchoClient یک آدرس چندپخشی یا پخش همتا را تشخیص میدهد، پس از ارسال EchoRequest به طور خودکار وارد حالت MultiResponse میشود.
در این حالت، شی همچنان به گوش دادن و ارائه تمام پیامهای EchoResponse ورودی که در یک تبادل میرسند، ادامه میدهد. شی در حالت MultiResponse باقی می ماند تا زمانی که: 1) برنامه Stop() یا Send() را فراخوانی کند، 2) در حالت SendRepeating، زمان ارسال درخواست دیگری فرا رسد، یا 3) پاسخی دریافت نشود و مهلت دریافت منقضی شود.
رویدادهای API
در طول عملیات خود، شی WeaveEchoClient به برنامه فراخوانی می شود تا اقدامات خاصی را درخواست کند یا اعلان رویدادهای مهم را ارائه دهد. این فراخوانیهای رویداد API با تابع پاسخ به تماس پیکربندیشده فعلی روی شی کلاینت انجام میشود. به جز موارد ذکر شده، برنامهها میتوانند وضعیت کلاینت را در طول یک تماس مجدد رویداد تغییر دهند. یکی از استثناهای کلی، متد Shutdown() شی است که ممکن است هرگز در طول یک فراخوانی فراخوانی نشود.
رویدادهای API زیر تعریف شده اند:
بارگیری را آماده کنید
WeaveEchoClient در شرف ایجاد یک پیام EchoRequest است و از برنامه درخواست میکند تا یک بار ارسال کند. اگر یک برنامه بخواهد، ممکن است یک PacketBuffer جدید حاوی داده های بارگذاری را برگرداند. اگر برنامه این رویداد را مدیریت نکند، یک EchoRequest با باری با طول صفر به صورت خودکار ارسال میشود. این برنامه ممکن است وضعیت WeaveEchoClient را در طول این تماس تغییر ندهد.
درخواست ارسال شد
یک پیام EchoRequest برای همتا ارسال شد.
پاسخ دریافت شد
یک پیام EchoResponse از طرف همتا دریافت شد. آرگومان های رویداد حاوی بار پاسخ و فرااطلاعات مربوط به پیام پاسخ است.
خطای ارتباط
هنگام تشکیل یا ارسال EchoRequest یا در انتظار پاسخ، خطایی روی داد. نمونههایی از خطاهایی که میتوانند در زمان انتظار برای پاسخ رخ دهند، خطاهای کلیدی یا بسته شدن غیرمنتظره اتصال هستند. استدلال های رویداد حاوی دلیل خطا هستند.
ResponseTimeout
EchoResponse در زمان تعیین شده دریافت نشد. زمان پاسخ توسط ویژگی DefaultResponseTimeout در شی Binding کنترل می شود.
درخواست لغو شد
یک تبادل Echo در حال انجام متوقف شد زیرا قبل از دریافت پاسخ به پیام قبلی، درخواستی برای ارسال یک EchoRequest دیگر وجود داشت. این می تواند در حالت SendRepeating زمانی رخ دهد که زمان ارسال EchoRequest بعدی فرا می رسد. اگر برنامه پس از ارسال EchoRequest اما قبل از دریافت پاسخ ، Send() را فراخوانی کند، این اتفاق میافتد.
هنگامی که شی در حالت MultiResponse است، اگر حداقل یک پیام EchoResponse دریافت شده باشد، رویداد سرکوب می شود.
سازندگان و ویرانگرها | |
---|---|
WeaveEchoClient (void) |
انواع عمومی | |
---|---|
EventCallback )(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) | typedefvoid(* |
EventType { | enum |
State { | enum |
صفات عمومی | |
---|---|
AppState | void * اشاره گر به داده های خاص برنامه. |
توابع عمومی | |
---|---|
GetBinding (void) const | Binding * یک اشاره گر به شی Binding مرتبط با WeaveEchoClient برمی گرداند. |
GetEventCallback (void) const | EventCallback یک اشاره گر به تابع تماس رویداد API که در حال حاضر روی شی WeaveEchoClient پیکربندی شده است، برمی گرداند. |
GetState (void) const | وضعیت فعلی شی WeaveEchoClient را بازیابی کنید. |
Init ( Binding *binding, EventCallback eventCallback, void *appState) | یک شی WeaveEchoClient را راه اندازی کنید. |
IsSendRrepeating () const | bool اگر شی WeaveEchoClient در حال حاضر در حالت ارسال تکرار باشد، مقدار true را برمیگرداند. |
RequestInProgress () const | bool اگر یک EchoRequest ارسال شده باشد و شی WeaveEchoClient منتظر پاسخ باشد، true برمیگرداند. |
Send (void) | یک پیام EchoRequest برای همتا ارسال کنید. |
Send (PacketBuffer *payloadBuf) | یک پیام EchoRequest برای همتا با یک بار مشخص ارسال کنید. |
SendRepeating (uint32_t sendIntervalMS) | ارسال یک دنباله تکراری از پیام های EchoRequest برای همتا را آغاز کنید. |
SetEventCallback (EventCallback eventCallback) | void تابع تماس رویداد API را روی شی WeaveEchoClient تنظیم می کند. |
Shutdown (void) | void یک شی WeaveEchoClient که قبلاً مقداردهی اولیه شده بود را خاموش کنید. |
Stop (void) | void هرگونه تبادل اکو در حال انجام را متوقف می کند و حالت ارسال تکرار را لغو می کند. |
توابع استاتیک عمومی | |
---|---|
DefaultEventHandler (void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam) | void کنترل کننده پیش فرض رویدادهای WeaveEchoClient API. |
سازه ها | |
---|---|
nl:: Weave:: پروفایل ها:: Echo_Next:: WeaveEchoClient:: InEventParam | پارامترهای ورودی به رویداد WeaveEchoClient API. |
nl:: Weave:: پروفایل ها:: Echo_Next:: WeaveEchoClient:: OutEventParam | پارامترهای خروجی به رویداد WeaveEchoClient API. |
انواع عمومی
رویداد Callback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
نوع رویداد
EventType
ایالت
State
خواص | |
---|---|
kState_Idle | شی مشتری بیکار است. |
kState_NotInitialized | شی مشتری مقداردهی اولیه نشده است. |
kState_PreparingBinding | شی مشتری منتظر است تا صحافی آماده شود. |
kState_RequestInProgress | یک پیام EchoRequest ارسال شده است و شی مشتری در انتظار پاسخ است. |
kState_WaitingToSend | SendRepeating() فراخوانی شده است و شی مشتری منتظر دفعه بعدی برای ارسال یک EchoRequest است. |
صفات عمومی
AppState
void * AppState
اشاره گر به داده های خاص برنامه.
توابع عمومی
GetBinding
Binding * GetBinding( void ) const
یک اشاره گر به شی Binding مرتبط با WeaveEchoClient برمی گرداند.
GetEventCallback
EventCallback GetEventCallback( void ) const
یک اشاره گر به تابع تماس رویداد API که در حال حاضر روی شی WeaveEchoClient پیکربندی شده است، برمی گرداند.
شروع کنید
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
یک شی WeaveEchoClient را راه اندازی کنید.
یک شی WeaveEchoClient را برای آماده سازی برای ارسال پیام های اکو به یک همتا راه اندازی کنید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
|
IsSendRrepeating
bool IsSendRrepeating() const
اگر شی WeaveEchoClient در حال حاضر در حالت ارسال تکرار باشد، مقدار true را برمیگرداند.
RequestInProgress
bool RequestInProgress() const
اگر یک EchoRequest ارسال شده باشد و شی WeaveEchoClient منتظر پاسخ باشد، true برمیگرداند.
ارسال کنید
WEAVE_ERROR Send( void )
یک پیام EchoRequest برای همتا ارسال کنید.
این روش فرآیند ارسال پیام EchoRequest به گره همتا را آغاز می کند. اگر و زمانی که یک پیام EchoResponse مربوطه دریافت شود، از طریق رویداد ResponseReceived API به برنامه تحویل داده می شود.
هنگام تشکیل پیام EchoRequest، WeaveEchoClient از طریق رویداد PreparePayload API درخواستی را برای آماده سازی بار پیام از برنامه ارائه می کند.
اگر شی Binding هنگام فراخوانی این متد در حالت Ready نباشد، درخواستی به متد Binding::RequestPrepare () برای شروع آماده سازی بر اساس تقاضا ارسال می شود. سپس عملیات ارسال تا تکمیل این فرآیند در صف قرار می گیرد. حداکثر عمق این صف یک است. بنابراین هر فراخوانی به Send() در حالی که ارسال قبلی در صف وجود داشته باشد تنها یک EchoRequest ارسال می شود.
فراخوانی Send() در حالی که WeaveEchoClient در حالت send-repeating است (یعنی به دلیل تماس قبلی با SendRepeating() ) باعث تسریع و تنظیم مجدد چرخه ارسال می شود اما WeaveEchoClient را از حالت ارسال تکرار خارج نمی کند.
ارسال کنید
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
یک پیام EchoRequest برای همتا با یک بار مشخص ارسال کنید.
این روش فرآیند ارسال پیام EchoRequest به گره همتا را آغاز می کند. محتویات بافر بار ارائه شده به عنوان محموله پیام EchoRequest برای همتا ارسال می شود. اگر و زمانی که یک پیام EchoResponse مربوطه دریافت شود، از طریق رویداد ResponseReceived API به برنامه تحویل داده می شود.
پس از فراخوانی این روش، مالکیت بافر بار ارائه شده به شی WeaveEchoClient می رسد که مسئولیت آزادسازی آن را دارد. این صرف نظر از اینکه روش با موفقیت کامل شود یا با خطا درست است.
اگر شی Binding هنگام فراخوانی این متد در حالت Ready نباشد، درخواستی به متد Binding::RequestPrepare () برای شروع آماده سازی بر اساس تقاضا ارسال می شود. سپس عملیات ارسال تا تکمیل این فرآیند در صف قرار می گیرد. حداکثر عمق این صف یک است. بنابراین هر فراخوانی به Send() در حالی که ارسال قبلی در صف وجود داشته باشد تنها یک EchoRequest ارسال می شود.
فراخوانی Send() در حالی که WeaveEchoClient در حالت send-repeating است (یعنی به دلیل تماس قبلی با SendRepeating() ) باعث تسریع و تنظیم مجدد چرخه ارسال می شود اما WeaveEchoClient را از حالت ارسال تکرار خارج نمی کند.
جزئیات | |||
---|---|---|---|
پارامترها |
|
SendRepeating
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
ارسال یک دنباله تکراری از پیام های EchoRequest برای همتا را آغاز کنید.
این روش یک فرآیند تکراری برای ارسال پیام های EchoRequest به همتا را آغاز می کند. همانطور که پیامهای EchoResponse از طرف همتا دریافت میشوند، از طریق رویداد ResponseReceived API به برنامه تحویل داده میشوند.
هنگامی که SendRepeating() فراخوانی می شود، WeaveEchoClient وارد حالت send-repeating می شود که در آن می ماند تا زمانی که Stop() فراخوانی شود یا یک خطای Binding رخ دهد. چندین بار فراخوانی SendRepeating() باعث تنظیم مجدد چرخه ارسال و به روز رسانی فاصله زمانی می شود.
ارسال اولیه یک دنباله در زمانی که SendRepeating() فراخوانی می شود، یا هر زمان که Binding پس از فراخوانی SendRepeating() آماده می شود، اتفاق می افتد (به زیر مراجعه کنید). ارسال های بعدی پس از آن در بازه زمانی مشخص شده رخ می دهد.
هر بار که ارسالی رخ می دهد، WeaveEchoClient از طریق رویداد PreparePayload API درخواستی را برای آماده سازی بار پیام به برنامه ارائه می کند.
اگر شی Binding هنگام ارسال پیام در حالت Ready نباشد، درخواستی از متد Binding::RequestPrepare () برای شروع آمادهسازی بر اساس تقاضا ارسال میشود. ارسال پیام های مکرر بیشتر تا تکمیل این فرآیند متوقف می شود. شکست در حین آماده سازی Binding بر اساس تقاضا باعث می شود WeaveEchoClient حالت ارسال تکرار را ترک کند.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
تابع تماس رویداد API را روی شی WeaveEchoClient تنظیم می کند.
خاموش شدن
void Shutdown( void )
یک شی WeaveEchoClient که قبلاً مقداردهی اولیه شده بود را خاموش کنید.
توجه داشته باشید که این متد تنها زمانی قابل فراخوانی است که متد Init() قبلا فراخوانی شده باشد.
توقف کنید
void Stop( void )
هرگونه تبادل اکو در حال انجام را متوقف می کند و حالت ارسال تکرار را لغو می کند.
WeaveEchoClient
WeaveEchoClient( void )
توابع استاتیک عمومی
DefaultEventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
کنترل کننده پیش فرض رویدادهای WeaveEchoClient 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-12 بهوقت ساعت هماهنگ جهانی.