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
}
enum
State {
kState_NotInitialized = 0,
kState_Idle = 1,
kState_PreparingBinding = 2,
kState_RequestInProgress = 3,
kState_WaitingToSend = 4
}
enum

صفات عمومی

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
مرجع پارامترهای رویداد خروجی که توسط پاسخ تماس رویداد ارسال شده است