nl:: Weave:: Profiles:: 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.
Ringkasan
Class WeaveEchoClient menerapkan sisi inisiator protokol Weave Echo. Mirip dengan protokol ping ICMP, protokol Weave Echo dapat digunakan untuk menguji keaktifan dan keterjangkauan node Weave.
Aplikasi dapat menggunakan class WeaveEchoClient untuk mengirim pesan EchoRequest satu kali atau berulang ke node pembanding yang diidentifikasi oleh objek Binding. Class yang sesuai tersedia untuk merespons permintaan echo (lihat WeaveEchoServer).
Binding Klien
WeaveEchoClient mengambil objek Binding Weave yang digunakan untuk mengidentifikasi dan membangun komunikasi dengan penerima permintaan echo yang dituju. Binding dapat dikonfigurasi dan disiapkan oleh aplikasi sebelum inisialisasi objek WeaveEchoClient, atau tidak dapat disiapkan, dalam hal ini WeaveEchoClient akan meminta persiapan binding sesuai permintaan (lihat Binding::RequestPrepare() untuk mengetahui detailnya).
Persiapan Binding sesuai permintaan juga akan diminta jika gagal setelah memasuki status Siap.
Kirim Mode Berulang
Metode SendRepeating() dapat digunakan untuk menyetel WeaveEchoClient ke mode SendRepeating. Dalam mode ini, objek klien mengirimkan urutan berulang pesan EchoRequest ke peer pada interval yang telah dikonfigurasi. Mode SendRepeating dapat dibatalkan dengan memanggil metode Stop().
{i>Multicast<i} dan Siaran
Objek WeaveEchoClient dapat digunakan untuk mengirim EchoRequest ke beberapa penerima secara bersamaan dengan mengonfigurasi objek Binding menggunakan alamat multicast IPv6 yang sesuai atau alamat siaran jaringan lokal IPv4 (255.255.255.255). Saat objek WeaveEchoClient mendeteksi alamat peer multicast atau siaran, objek tersebut akan otomatis memasuki mode MultiResponse setelah mengirim EchoRequest.
Dalam mode ini, objek terus memproses dan mengirimkan semua pesan EchoResponse yang masuk yang masuk di pertukaran yang sama. Objek tetap berada dalam mode MultiResponse hingga: 1) aplikasi memanggil Stop() atau Send(), 2) dalam mode SendRepeating, saatnya untuk mengirim permintaan lain, atau 3) tidak ada respons yang diterima dan waktu tunggu penerimaan berakhir.
Peristiwa API
Selama operasinya, objek WeaveEchoClient akan memanggil aplikasi untuk meminta tindakan tertentu atau mengirimkan notifikasi peristiwa penting. Panggilan peristiwa API ini dilakukan ke fungsi callback yang saat ini dikonfigurasi pada objek klien. Kecuali dinyatakan lain, aplikasi bebas mengubah status klien selama callback peristiwa. Satu pengecualian secara keseluruhan adalah metode Shutdown() objek, yang mungkin tidak pernah dipanggil selama callback.
Peristiwa API berikut ditentukan:
PreparePayload
WeaveEchoClient akan membuat pesan EchoRequest dan meminta aplikasi untuk menyediakan payload. Jika diinginkan, aplikasi dapat mengembalikan PacketBuffer baru yang berisi data payload. Jika aplikasi tidak menangani peristiwa ini, EchoRequest dengan payload panjang nol akan dikirim secara otomatis. Aplikasi TIDAK BOLEH mengubah status WeaveEchoClient selama callback ini.
RequestSent
Pesan EchoRequest dikirim ke peer.
ResponseReceived
Pesan EchoResponse diterima dari rekan. Argumen untuk peristiwa berisi payload respons dan informasi meta tentang pesan respons.
CommunicationError
Terjadi error saat membuat atau mengirim EchoRequest, atau saat menunggu respons. Contoh error yang dapat terjadi saat menunggu respons adalah error utama atau penutupan koneksi yang tidak terduga. Argumen untuk peristiwa berisi alasan error.
ResponseTimeout
EchoResponse tidak diterima dalam waktu yang ditentukan. Waktu tunggu respons dikontrol oleh properti DefaultResponseTimeout pada objek Binding.
RequestAborted
Pertukaran Echo yang sedang berlangsung dibatalkan karena permintaan dibuat untuk mengirim EchoRequest lain sebelum respons diterima ke pesan sebelumnya. Hal ini dapat muncul dalam mode SendRepeating ketika waktu tiba untuk mengirim EchoRequest berikutnya. Hal ini juga dapat terjadi jika aplikasi memanggil Send() setelah EchoRequest dikirim, tetapi sebelum respons apa pun diterima.
Saat objek berada dalam mode MultiResponse, peristiwa akan disembunyikan jika setidaknya satu pesan EchoResponse telah diterima.
Konstruktor dan Destruktor |
|
---|---|
WeaveEchoClient(void)
|
Jenis publik |
|
---|---|
EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
|
typedefvoid(*
|
EventType{
|
enum |
State{
|
enum |
Atribut publik |
|
---|---|
AppState
|
void *
Pointer ke data khusus aplikasi.
|
Fungsi publik |
|
---|---|
GetBinding(void) const
|
Binding *
Menampilkan pointer ke objek Binding yang terkait dengan WeaveEchoClient.
|
GetEventCallback(void) const
|
EventCallback
Menampilkan pointer ke fungsi callback peristiwa API yang saat ini dikonfigurasi pada objek WeaveEchoClient.
|
GetState(void) const
|
Ambil status objek WeaveEchoClient saat ini.
|
Init(Binding *binding, EventCallback eventCallback, void *appState)
|
Lakukan inisialisasi objek WeaveEchoClient.
|
IsSendRrepeating() const
|
bool
Menampilkan true (benar) jika objek WeaveEchoClient saat ini dalam mode kirim-berulang.
|
RequestInProgress() const
|
bool
Menampilkan true (benar) jika EchoRequest telah dikirim dan objek WeaveEchoClient sedang menunggu respons.
|
Send(void)
|
Kirim pesan EchoRequest ke peer.
|
Send(PacketBuffer *payloadBuf)
|
Kirim pesan EchoRequest ke peer dengan payload tertentu.
|
SendRepeating(uint32_t sendIntervalMS)
|
Memulai pengiriman urutan berulang pesan EchoRequest ke peer.
|
SetEventCallback(EventCallback eventCallback)
|
void
Menetapkan fungsi callback peristiwa API pada objek WeaveEchoClient.
|
Shutdown(void)
|
void
Matikan objek WeaveEchoClient yang telah diinisialisasi sebelumnya.
|
Stop(void)
|
void
Menghentikan pertukaran Echo yang sedang berlangsung dan membatalkan mode kirim-berulang.
|
Fungsi statis publik |
|
---|---|
DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
|
void
Pengendali default untuk peristiwa API WeaveEchoClient.
|
Struct |
|
---|---|
nl:: |
Input parameter ke peristiwa API WeaveEchoClient. |
nl:: |
Parameter output ke peristiwa API WeaveEchoClient. |
Jenis publik
EventCallback
void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)
EventType
EventType
Properti | |
---|---|
kEvent_CommunicationError
|
Terjadi error komunikasi saat mengirim EchoRequest atau menunggu respons. |
kEvent_DefaultCheck
|
Digunakan untuk memverifikasi penanganan peristiwa default yang benar dalam aplikasi. |
kEvent_PreparePayload
|
Aplikasi diminta untuk menyiapkan payload untuk Echo request. |
kEvent_RequestAborted
|
Pertukaran Echo yang sedang berlangsung dibatalkan karena permintaan dibuat untuk memulai pertukaran lain. |
kEvent_RequestSent
|
Pesan EchoRequest dikirim ke peer. |
kEvent_ResponseReceived
|
Pesan EchoResponse diterima dari rekan. |
kEvent_ResponseTimeout
|
EchoResponse tidak diterima dalam waktu yang ditentukan. |
Negara Bagian
State
Properti | |
---|---|
kState_Idle
|
Objek klien tidak ada aktivitas. |
kState_NotInitialized
|
Objek klien belum diinisialisasi. |
kState_PreparingBinding
|
Objek klien menunggu binding siap. |
kState_RequestInProgress
|
Pesan EchoRequest telah dikirim dan objek klien sedang menunggu respons. |
kState_WaitingToSend
|
SendRepeating() telah dipanggil dan objek klien menunggu waktu berikutnya untuk mengirim EchoRequest. |
Atribut publik
AppState
void * AppState
Pointer ke data khusus aplikasi.
Fungsi publik
GetBinding
Binding * GetBinding( void ) const
Menampilkan pointer ke objek Binding yang terkait dengan WeaveEchoClient.
GetEventCallback
EventCallback GetEventCallback( void ) const
Menampilkan pointer ke fungsi callback peristiwa API yang saat ini dikonfigurasi pada objek WeaveEchoClient.
Init
WEAVE_ERROR Init( Binding *binding, EventCallback eventCallback, void *appState )
Lakukan inisialisasi objek WeaveEchoClient.
Lakukan inisialisasi objek WeaveEchoClient sebagai persiapan untuk mengirim pesan echo ke peer.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
IsSendRrepeating
bool IsSendRrepeating() const
Menampilkan true (benar) jika objek WeaveEchoClient saat ini dalam mode kirim-berulang.
RequestInProgress
bool RequestInProgress() const
Menampilkan true (benar) jika EchoRequest telah dikirim dan objek WeaveEchoClient sedang menunggu respons.
Kirim
WEAVE_ERROR Send( void )
Kirim pesan EchoRequest ke peer.
Metode ini memulai proses pengiriman pesan EchoRequest ke node peer. Jika dan saat pesan EchoResponse yang sesuai diterima, pesan tersebut akan dikirimkan ke aplikasi melalui peristiwa ResponseReceived API.
Saat membuat pesan EchoRequest, WeaveEchoClient membuat permintaan ke aplikasi, melalui peristiwa PreparePayload API, untuk menyiapkan payload pesan.
Jika objek Binding tidak dalam status Siap saat metode ini dipanggil, permintaan akan dibuat ke metode Binding::RequestPrepare() untuk memulai persiapan on demand. Operasi pengiriman kemudian akan diantrekan hingga proses ini selesai. Kedalaman maksimum antrean ini adalah satu. Dengan demikian, setiap panggilan ke Send() saat ada pengiriman sebelumnya dalam antrean akan menghasilkan hanya satu EchoRequest yang dikirim.
Memanggil Send() saat WeaveEchoClient berada dalam mode kirim-ulang (yaitu karena panggilan sebelumnya ke SendRepeating()) memiliki efek mempercepat dan mengatur ulang siklus pengiriman tetapi tidak mengeluarkan WeaveEchoClient dari mode kirim-ulang.
Kirim
WEAVE_ERROR Send( PacketBuffer *payloadBuf )
Kirim pesan EchoRequest ke peer dengan payload tertentu.
Metode ini memulai proses pengiriman pesan EchoRequest ke node peer. Isi buffer payload yang disediakan akan dikirim ke peer sebagai payload pesan EchoRequest. Jika dan saat pesan EchoResponse yang sesuai diterima, pesan tersebut akan dikirimkan ke aplikasi melalui peristiwa ResponseReceived API.
Setelah memanggil metode ini, kepemilikan buffer payload yang disediakan akan diteruskan ke objek WeaveEchoClient, yang bertanggung jawab untuk membebaskannya. Hal ini berlaku terlepas dari apakah metode berhasil diselesaikan atau dengan error.
Jika objek Binding tidak dalam status Siap saat metode ini dipanggil, permintaan akan dibuat ke metode Binding::RequestPrepare() untuk memulai persiapan on demand. Operasi pengiriman kemudian akan diantrekan sampai proses ini selesai. Kedalaman maksimum antrean ini adalah satu. Dengan demikian, setiap panggilan ke Send() saat ada pengiriman sebelumnya dalam antrean akan menghasilkan hanya satu EchoRequest yang dikirim.
Memanggil Send() saat WeaveEchoClient berada dalam mode kirim-ulang (yaitu karena panggilan sebelumnya ke SendRepeating()) memiliki efek mempercepat dan mengatur ulang siklus pengiriman tetapi tidak mengeluarkan WeaveEchoClient dari mode kirim-ulang.
Detail | |||
---|---|---|---|
Parameter |
|
SendRepeating
WEAVE_ERROR SendRepeating( uint32_t sendIntervalMS )
Memulai pengiriman urutan berulang pesan EchoRequest ke peer.
Metode ini memulai proses berulang pengiriman pesan EchoRequest ke peer. Saat diterima dari peer, pesan EchoResponse akan dikirim ke aplikasi melalui peristiwa ResponseReceived API.
Saat SendRepeating() dipanggil, WeaveEchoClient memasuki mode kirim-berulang, yang akan tetap berada hingga Stop() dipanggil atau terjadi error Binding. Memanggil SendRepeating() beberapa kali memiliki efek mereset siklus pengiriman dan memperbarui interval.
Pengiriman awal urutan terjadi pada saat SendRepeating() dipanggil, atau setiap kali Binding menjadi siap setelah SendRepeating() dipanggil (lihat di bawah). Pengiriman berikutnya terjadi setelahnya pada interval yang ditentukan.
Setiap kali pengiriman terjadi, WeaveEchoClient membuat permintaan ke aplikasi, melalui peristiwa PreparePayload API, untuk menyiapkan payload pesan.
Jika objek Binding tidak dalam status Siap saat tiba waktunya untuk mengirim pesan, permintaan akan dibuat ke metode Binding::RequestPrepare() untuk memulai persiapan on demand. Pengiriman pesan berulang lebih lanjut akan dijeda hingga proses ini selesai. Kegagalan selama persiapan Binding on-demand akan menyebabkan WeaveEchoClient keluar dari mode kirim-berulang.
SetEventCallback
void SetEventCallback( EventCallback eventCallback )
Menetapkan fungsi callback peristiwa API pada objek WeaveEchoClient.
Nonaktif
void Shutdown( void )
Matikan objek WeaveEchoClient yang telah diinisialisasi sebelumnya.
Perhatikan, metode ini hanya dapat dipanggil jika metode Init() telah dipanggil sebelumnya.
Hentikan
void Stop( void )
Menghentikan pertukaran Echo yang sedang berlangsung dan membatalkan mode kirim-berulang.
WeaveEchoClient
WeaveEchoClient( void )
Fungsi statis publik
DefaultEventHandler
void DefaultEventHandler( void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam )
Pengendali default untuk peristiwa API WeaveEchoClient.
Aplikasi diperlukan untuk memanggil metode ini untuk setiap peristiwa API yang tidak dikenali atau ditangani. Parameter yang diberikan harus sama dengan parameter yang diteruskan oleh objek klien ke fungsi pengendali peristiwa aplikasi.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|