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) typedef
void(*
EventType {
kEvent_PreparePayload = 1,
kEvent_RequestSent = 2,
kEvent_ResponseReceived = 3,
kEvent_CommunicationError = 4,
kEvent_ResponseTimeout = 5,
kEvent_RequestAborted = 6,
kEvent_DefaultCheck = 100
}
شمارش
State {
kState_NotInitialized = 0,
kState_Idle = 1,
kState_PreparingBinding = 2,
kState_RequestInProgress = 3,
kState_WaitingToSend = 4
}
شمارش

صفات عمومی

AppState
void *
اشاره گر به داده های خاص برنامه.

توابع عمومی

GetBinding (void) const
یک اشاره گر به شی 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
خواص
kEvent_CommunicationError

هنگام ارسال EchoRequest یا انتظار برای پاسخ، یک خطای ارتباطی رخ داد.

kEvent_DefaultCheck

برای تأیید صحیح مدیریت پیش فرض رویداد در برنامه استفاده می شود.

kEvent_PreparePayload

از برنامه درخواست می شود تا بار را برای درخواست اکو آماده کند.

kEvent_RequestAborted

یک تبادل اکو در حال انجام متوقف شد زیرا درخواستی برای شروع یک تبادل دیگر ارائه شد.

kEvent_RequestSent

یک پیام EchoRequest برای همتا ارسال شد.

kEvent_ResponseReceived

یک پیام EchoResponse از طرف همتا دریافت شد.

kEvent_ResponseTimeout

EchoResponse در زمان تعیین شده دریافت نشد.

دولت

 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 پیکربندی شده است، برمی گرداند.

GetState

State GetState(
  void
) const 

وضعیت فعلی شی WeaveEchoClient را بازیابی کنید.

شروع کنید

WEAVE_ERROR Init(
  Binding *binding,
  EventCallback eventCallback,
  void *appState
)

یک شی WeaveEchoClient را راه اندازی کنید.

یک شی WeaveEchoClient را برای آماده سازی برای ارسال پیام های اکو به یک همتا راه اندازی کنید.

جزئیات
مولفه های
[in] binding
یک شی Binding که برای برقراری ارتباط با گره همتا استفاده می شود.
[in] eventCallback
اشاره گر به تابعی که توسط شی WeaveEchoClient فراخوانی می شود تا رویدادهای API را به برنامه تحویل دهد.
[in] appState
یک اشاره گر به یک شی تعریف شده توسط برنامه که هر زمان که یک رویداد API رخ دهد به برنامه بازگردانده می شود.

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 را از حالت ارسال تکرار خارج نمی کند.

جزئیات
مولفه های
[in] payloadBuf
یک شیء PacketBuffer که حاوی داده‌های باری است که باید به همتا ارسال شود. مالکیت این بافر در همه موارد به شی 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 که نمی‌شناسند یا مدیریت نمی‌کنند فراخوانی کنند. پارامترهای ارائه شده باید همان پارامترهایی باشند که توسط شی کلاینت به تابع مدیریت رویداد برنامه ارسال می شود.

جزئیات
مولفه های
[in] appState
یک اشاره گر به اطلاعات وضعیت تعریف شده توسط برنامه مرتبط با شی مشتری.
[in] eventType
شناسه رویداد توسط پاسخ تماس رویداد ارسال شد
[in] inParam
ارجاع پارامترهای رویداد ورودی که توسط پاسخ تماس رویداد ارسال شده است
[in] outParam
ارجاع پارامترهای رویداد خروجی که توسط پاسخ تماس رویداد ارسال شده است