Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

nl::Weave::Profil::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 jangkauan node Weave.

Aplikasi dapat menggunakan class WeaveEchoClient untuk mengirim pesan satu kali atau mengulangi EchoRequest ke node pembanding yang diidentifikasi oleh objek Binding. Class yang sesuai ada untuk merespons permintaan gema (lihat WeaveEchoServer).

Binding Klien

WeaveEchoClient mengambil objek Binding Weave yang digunakan untuk mengidentifikasi dan membuat komunikasi dengan penerima permintaan gema yang dimaksud. Binding dapat dikonfigurasi dan disiapkan oleh aplikasi sebelum inisialisasi objek WeaveEchoClient, atau dibiarkan tanpa persiapan, dalam hal ini WeaveEchoClient akan meminta persiapan binding on-demand (lihat Binding::RequestPrepare() untuk detailnya).

Persiapan Binding sesuai permintaan juga akan diminta jika gagal setelah memasuki status Siap.

Mode SendRepeating

Metode SendRepeating() dapat digunakan untuk mengalihkan WeaveEchoClient ke mode SendRepeating. Dalam mode ini, objek klien mengirimkan urutan pesan EchoRequest yang berulang ke pembanding pada interval yang dikonfigurasi. Mode SendRepeating dapat dibatalkan dengan memanggil metode Stop().

Multicast dan Siaran

Objek WeaveEchoClient dapat digunakan untuk mengirim EchoRequest ke beberapa penerima secara bersamaan dengan mengonfigurasi objek Binding dengan alamat multicast IPv6 yang sesuai atau alamat siaran jaringan lokal IPv4 (255.255.255.255). Saat objek WeaveEchoClient mendeteksi alamat pembanding multicast atau siaran, objek akan otomatis memasuki mode MultiResponse setelah pengiriman EchoRequest.

Dalam mode ini, objek terus mendengarkan dan mengirimkan semua pesan EchoResponse masuk yang tiba di pertukaran yang sama. Objek akan tetap berada dalam mode MultiResponse hingga: 1) aplikasi memanggil Stop() atau Send(), 2) dalam mode SendRepeating, waktunya tiba 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 jika dinyatakan lain, aplikasi bebas mengubah status klien selama callback peristiwa. Satu pengecualian keseluruhan adalah metode Shutdown() objek yang mungkin tidak akan dipanggil selama callback.

Peristiwa API berikut ditetapkan:

MempersiapkanPayload

WeaveEchoClient akan membentuk pesan EchoRequest dan meminta aplikasi untuk menyediakan payload. Jika diinginkan, aplikasi dapat menampilkan PacketBuffer baru yang berisi data payload. Jika aplikasi tidak menangani peristiwa ini, EchoRequest dengan payload panjang nol akan dikirim secara otomatis. Aplikasi TIDAK DAPAT mengubah status WeaveEchoClient selama callback ini.

PermintaanTerkirim

Pesan EchoRequest dikirim ke pembanding.

Respons Diterima

Pesan EchoResponse diterima dari pembanding. Argumen untuk peristiwa berisi payload respons dan informasi meta tentang pesan respons.

Error Komunikasi

Terjadi error saat membentuk 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.

Waktu Tunggu Respons

EchoResponse tidak diterima dalam waktu yang ditentukan. Waktu tunggu respons dikontrol oleh properti DefaultResponseTimeout pada objek Binding.

PermintaanDisimpan

Pertukaran Echo yang sedang berlangsung dibatalkan karena permintaan dibuat untuk mengirim EchoRequest lain sebelum respons diterima untuk pesan sebelumnya. Ini dapat muncul dalam mode SendRepeating saat waktu tiba untuk mengirimkan EchoRequest berikutnya. Ini juga dapat terjadi jika aplikasi memanggil Send() setelah EchoRequest dikirim, tetapi sebelum respons 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) 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

Atribut publik

AppState
void *
Pointer ke data khusus aplikasi.

Fungsi publik

GetBinding(void) const
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 jika objek WeaveEchoClient saat ini dalam mode kirim-ulang.
RequestInProgress() const
bool
Menampilkan true jika EchoRequest telah dikirim, dan objek WeaveEchoClient menunggu respons.
Send(void)
Kirim pesan EchoRequest ke pembanding.
Send(PacketBuffer *payloadBuf)
Kirim pesan EchoRequest kepada pembanding dengan payload tertentu.
SendRepeating(uint32_t sendIntervalMS)
Mulailah mengirim urutan pesan EchoRequest yang berulang ke pembanding.
SetEventCallback(EventCallback eventCallback)
void
Menetapkan fungsi callback peristiwa API pada objek WeaveEchoClient.
Shutdown(void)
void
Matikan objek WeaveEchoClient yang diinisialisasi sebelumnya.
Stop(void)
void
Menghentikan setiap pertukaran Echo yang sedang berlangsung dan membatalkan mode pengiriman ulang.

Fungsi statis publik

DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
void
Pengendali default untuk peristiwa API WeaveEchoClient.

Struct

nl::Weave::Profiles::Echo_Next::WeaveEchoClient::InEventParam

Masukkan parameter ke peristiwa API WeaveEchoClient.

nl::Weave::Profiles::Echo_Next::WeaveEchoClient::OutEventParam

Parameter output ke peristiwa API WeaveEchoClient.

Jenis publik

Callback Peristiwa

void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)

Jenis Peristiwa

 EventType
Properti
kEvent_CommunicationError

Terjadi kesalahan 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 permintaan Echo.

kEvent_RequestAborted

Pertukaran Echo yang sedang berlangsung dibatalkan karena permintaan dibuat untuk memulai bursa lain.

kEvent_RequestSent

Pesan EchoRequest dikirim ke pembanding.

kEvent_ResponseReceived

Pesan EchoResponse diterima dari pembanding.

kEvent_ResponseTimeout

EchoResponse tidak diterima dalam waktu yang ditentukan.

Negara bagian

 State
Properti
kState_Idle

Objek klien tidak aktif.

kState_NotInitialized

Objek klien tidak diinisialisasi.

kState_PreparingBinding

Objek klien menunggu sampai binding siap.

kState_RequestInProgress

Pesan EchoRequest telah dikirim, dan objek klien menunggu respons.

kState_WaitingToSend

SendRepeating() telah dipanggil dan objek klien menunggu waktu berikutnya untuk mengirimkan EchoRequest.

Atribut publik

StatusAplikasi

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.

GetState

State GetState(
  void
) const 

Ambil status objek WeaveEchoClient saat ini.

Init

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

Lakukan inisialisasi objek WeaveEchoClient.

Lakukan inisialisasi objek WeaveEchoClient sebagai persiapan untuk mengirim pesan gema ke peer.

Detail
Parameter
[in] binding
Objek Binding yang akan digunakan untuk membuat komunikasi dengan node peer.
[in] eventCallback
Pointer ke fungsi yang akan dipanggil oleh objek WeaveEchoClient untuk mengirimkan peristiwa API ke aplikasi.
[in] appState
Pointer ke objek yang ditentukan aplikasi yang akan diteruskan kembali ke aplikasi setiap kali peristiwa API terjadi.

IsSendR berulang

bool IsSendRrepeating() const 

Menampilkan true jika objek WeaveEchoClient saat ini dalam mode kirim-ulang.

PermintaanDalam Proses

bool RequestInProgress() const 

Menampilkan true jika EchoRequest telah dikirim, dan objek WeaveEchoClient menunggu respons.

Kirim

WEAVE_ERROR Send(
  void
)

Kirim pesan EchoRequest ke pembanding.

Metode ini memulai proses pengiriman pesan EchoRequest ke node rekan. Jika dan saat pesan EchoResponse yang sesuai diterima, pesan itu akan dikirimkan ke aplikasi melalui peristiwa ResponseReceived API.

Saat membentuk pesan EchoRequest, WeaveEchoClient membuat permintaan ke aplikasi, melalui peristiwa PreparePayload API, untuk menyiapkan payload pesan.

Jika objek Binding tidak berada dalam status Siap saat metode ini dipanggil, permintaan akan diajukan 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, panggilan apa pun ke Send() ketika ada pengiriman sebelumnya dalam antrean hanya akan menghasilkan satu EchoRequest yang akan dikirim.

Memanggil Send() saat WeaveEchoClient dalam mode kirim-ulang (yaitu karena panggilan sebelumnya ke SendRepeating()) memiliki efek mempercepat dan mengatur ulang siklus kirim tetapi tidak mengeluarkan WeaveEchoClient dari mode kirim-ulang.

Kirim

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

Kirim pesan EchoRequest kepada pembanding dengan payload tertentu.

Metode ini memulai proses pengiriman pesan EchoRequest ke node rekan. Isi buffer payload yang disediakan akan dikirim ke pembanding sebagai payload pesan EchoRequest. Jika dan saat pesan EchoResponse yang sesuai diterima, pesan itu akan dikirimkan ke aplikasi melalui peristiwa ResponseReceived API.

Setelah memanggil metode ini, kepemilikan buffer payload yang disediakan akan diteruskan ke objek WeaveEchoClient, yang memiliki tanggung jawab untuk membebaskannya. Hal ini berlaku terlepas dari apakah metode berhasil diselesaikan atau dengan error.

Jika objek Binding tidak berada dalam status Siap saat metode ini dipanggil, permintaan akan diajukan 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, panggilan apa pun ke Send() ketika ada pengiriman sebelumnya dalam antrean hanya akan menghasilkan satu EchoRequest yang akan dikirim.

Memanggil Send() saat WeaveEchoClient dalam mode kirim-ulang (yaitu karena panggilan sebelumnya ke SendRepeating()) memiliki efek mempercepat dan mengatur ulang siklus kirim tetapi tidak mengeluarkan WeaveEchoClient dari mode kirim-ulang.

Detail
Parameter
[in] payloadBuf
Objek PacketBuffer yang berisi data payload yang akan dikirim ke pembanding. Kepemilikan buffer ini akan diteruskan ke objek WeaveEchoClient dalam semua kasus.

Mengulangi

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

Mulailah mengirim urutan pesan EchoRequest yang berulang ke pembanding.

Metode ini memulai proses berulang pengiriman pesan EchoRequest ke peer. Karena pesan EchoResponse diterima dari peer, pesan tersebut akan dikirim ke aplikasi melalui peristiwa ResponseReceived API.

Saat SendRepeating() dipanggil, WeaveEchoClient memasuki mode kirim-ulang yang tetap ada hingga Stop() dipanggil atau terjadi error Binding. Memanggil SendRepeating() beberapa kali memiliki efek reset siklus pengiriman dan memperbarui interval.

Pengiriman awal urutan terjadi saat SendRepeating() dipanggil, atau setiap kali Binding 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 berada dalam status Siap saat tiba waktunya untuk mengirim pesan, permintaan akan dibuat ke metode Binding::RequestPrepare() untuk memulai persiapan on-demand. Pengiriman pesan berulang berikutnya akan dijeda hingga proses ini selesai. Kegagalan selama persiapan Binding sesuai permintaan akan menyebabkan WeaveEchoClient keluar dari mode pengulangan pengiriman.

SetEventCallback

void SetEventCallback(
  EventCallback eventCallback
)

Menetapkan fungsi callback peristiwa API pada objek WeaveEchoClient.

Mematikan

void Shutdown(
  void
)

Matikan objek WeaveEchoClient yang diinisialisasi sebelumnya.

Perlu diperhatikan bahwa metode ini hanya dapat dipanggil jika metode Init() telah dipanggil sebelumnya.

Hentikan

void Stop(
  void
)

Menghentikan setiap pertukaran Echo yang sedang berlangsung dan membatalkan mode pengiriman ulang.

WeaveEchoClient

 WeaveEchoClient(
  void
)

Fungsi statis publik

PengendaliPeristiwaDefault

void DefaultEventHandler(
  void *appState,
  EventType eventType,
  const InEventParam & inParam,
  OutEventParam & outParam
)

Pengendali default untuk peristiwa API WeaveEchoClient.

Aplikasi harus memanggil metode ini untuk peristiwa API yang tidak dikenali atau ditangani. Parameter yang diberikan harus sama dengan yang diteruskan oleh objek klien ke fungsi pengendali peristiwa aplikasi.

Detail
Parameter
[in] appState
Pointer ke informasi status yang ditentukan aplikasi yang terkait dengan objek klien.
[in] eventType
ID Peristiwa yang diteruskan oleh callback peristiwa
[in] inParam
Referensi parameter peristiwa input yang diteruskan oleh callback peristiwa
[in] outParam
Referensi parameter peristiwa output yang diteruskan oleh callback peristiwa