nl::Weave::Profiller: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.

Özet

WeaveEchoClient sınıfı, Weave Echo protokolünün başlangıç tarafını uygular. ICMP ping protokolüne benzer şekilde, Weave Echo protokolü, Weave düğümünün varlığını ve erişilebilirliğini test etmek için kullanılabilir.

Uygulamalar, bir Bağlama nesnesi tarafından tanımlanan bir eş düğüme tek seferlik veya tekrarlanan EchoRequest mesajları göndermek için WeaveEchoClient sınıfını kullanabilir. Yankı isteklerine yanıt vermek için ilgili bir sınıf vardır (WeaveEchoServer sayfasına bakın).

İstemci Bağlama

WeaveEchoClient, yankı isteklerinin amaçlanan alıcısıyla iletişim kurmak ve iletişim kurmak için kullanılan bir Weave Bağlama nesnesi alır. Bağlama, WeaveEchoClient nesnesinin ilk kullanıma sunulmasından önce uygulama tarafından yapılandırılıp hazırlanabilir veya hazırlanmamış olarak bırakılabilir. Bu durumda WeaveEchoClient bağlamanın isteğe bağlı olarak hazırlanmasını ister (ayrıntılar için Bağlama::RequestReady() sayfasına bakın).

Hazır durumuna girdikten sonra başarısız olması durumunda Bağlama öğesinin isteğe bağlı olarak hazırlanması istenir.

Gönderme Tekrarı Modu

SendSameing()Yöntemi, WeaveEchoClientSendSending moduna geçirmek için kullanılabilir. Bu modda, istemci nesnesi yapılandırılan bir eşe, tekrarlanan bir EchoRequest mesajları dizisi gönderir. SendYinelenening modu, Stop() yöntemi çağrılarak iptal edilebilir.

Çoklu Yayın ve Yayın

Bir WeaveEchoClient nesnesi, Bağlama nesnesini uygun bir IPv6 çoklu yayın adresi veya IPv4 yerel ağ yayın adresiyle (255.255.255.2) yapılandırarak birden fazla alıcıya eş zamanlı istek göndermek için kullanılabilir. WeaveEchoClient nesnesi, bir çoklu yayın veya yayın eş adresi algıladığında, EchoRequest gönderildikten sonra otomatik olarak Çoklu Yanıt moduna girer.

Bu modda nesne, aynı exchange'e gelen tüm gelen EchoResponse mesajlarını dinlemeye ve yayınlamaya devam eder. Nesne 1) uygulama Stop() veya Send(), 2) SendSendinging modundayken, başka bir istek gönderme zamanı geldiğinde veya 3) yanıt zaman aşımına uğradığında, çoklu yanıt modunda kalır.

API Etkinlikleri

WeaveEchoClient nesnesi, belirli bir işlem istemek veya önemli etkinliklerle ilgili bildirim göndermek için uygulamaya çağrı yapar. Bu API etkinlik çağrıları, istemci nesnesinde şu anda yapılandırılmış olan geri çağırma işlevine yapılır. Aksi belirtilmedikçe, uygulamalar etkinlik geri çağırma sırasında istemcinin durumunu değiştirebilir. Genel bir istisna, object's Shutdown() yöntemidir ve bu yöntem hiçbir zaman geri çağırma sırasında çağrılamaz.

Aşağıdaki API etkinlikleri tanımlanır:

ReadyPayload

WeaveEchoClient, bir EchoRequest mesajı oluşturmak üzeredir ve uygulamanın yük sağlamasını istiyor. Bir uygulama isterse yük verilerini içeren yeni bir PacketBuffer döndürebilir. Uygulama bu etkinliği işlediğinde sıfır uzunluklu yüke sahip bir EchoRequest otomatik olarak gönderilir. Uygulama, bu geri çağırma sırasında WeaveEchoClient durumunu DEĞİŞTİRMEZ.

İstek Gönderildi

Eşe bir EchoRequest mesajı gönderildi.

Yanıt Alındı

Eşten EchoResponse mesajı alındı. Etkinlik bağımsız değişkenleri, yanıt yükü ve yanıt mesajıyla ilgili meta bilgileri içerir.

İletişim Hatası

EchoRequest oluşturulurken, gönderilirken veya yanıt beklenirken hata oluştu. Yanıt beklenirken meydana gelebilecek hatalara örnek olarak anahtar hataları veya bağlantının beklenmedik şekilde kapatılması verilebilir. Etkinlik bağımsız değişkenleri hata nedenini içerir.

Yanıt Zaman Aşımı

Verilen süre içinde EchoResponse alınmadı. Yanıt zaman aşımı, Bağlama nesnesindeki DefaultResponseTimeout özelliği tarafından kontrol edilir.

İstek İptal Edildi

Önceki mesaja yanıt alınmadan önce başka bir EchoRequest göndermek için istek yapıldığından, devam eden bir yankı exchange'i iptal edilmiştir. Bu durum, bir sonraki EchoRequest'i gönderme zamanı geldiğinde Send Yinelenening modunda ortaya çıkabilir. Bu durum, uygulama bir EchoRequest gönderildikten sonra, ancak herhangi bir yanıt alınmadan önce Send() çağrısını yaparsa da gerçekleşebilir.

Nesne Çoklu Yanıt modundaysa en az bir EchoResponse mesajı alındıysa etkinlik gizlenir.

İnşaat Ustaları ve Yıkıcılar

WeaveEchoClient(void)

Herkese açık türler

EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) Tür
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

Herkese açık özellikler

AppState
void *
Uygulamaya özel verilerin işaretçisi.

Herkese açık işlevler

GetBinding(void) const
İşaretçiyi WeaveEchoClient ile ilişkili Bağlama nesnesine döndürür.
GetEventCallback(void) const
EventCallback
Şu anda WeaveEchoClient nesnesinde yapılandırılan API etkinliği geri çağırma işlevine bir işaretçi döndürür.
GetState(void) const
WeaveEchoClient nesnesinin mevcut durumunu alın.
Init(Binding *binding, EventCallback eventCallback, void *appState)
Bir WeaveEchoClient nesnesini başlatın.
IsSendRrepeating() const
bool
WeaveEchoClient nesnesi şu anda gönderme art arda modundaysa doğru değerini döndürür.
RequestInProgress() const
bool
Bir EchoRequest gönderildiyse ve WeaveEchoClient nesnesi yanıt bekliyorsa doğru değerini döndürür.
Send(void)
Eşe bir EchoRequest mesajı gönderin.
Send(PacketBuffer *payloadBuf)
Belirli bir yüke sahip eşe EchoRequest mesajı gönderin.
SendRepeating(uint32_t sendIntervalMS)
Eşe tekrarlanan bir EchoRequest mesaj dizisi göndermeye başlayın.
SetEventCallback(EventCallback eventCallback)
void
WeaveEchoClient nesnesindeki API etkinliği geri çağırma işlevini ayarlar.
Shutdown(void)
void
Önceden başlatılmış bir WeaveEchoClient nesnesini kapatın.
Stop(void)
void
Devam eden yankı exchange'lerini durdurur ve gönderme tekrarlama modunu iptal eder.

Herkese açık statik işlevler

DefaultEventHandler(void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
void
WeaveEchoClient API etkinlikleri için varsayılan işleyici.

Struct

nl::Weave::Profiller:Echo_Next::WeaveEchoClient::InEventParam

Parametreleri WeaveEchoClient API etkinliğine girin.

nl::Weave::Profiller:Echo_Next::WeaveEchoClient::OutEventParam

Parametreleri WeaveEchoClient API etkinliğine çıkış yapın.

Herkese açık türler

Etkinlik Geri Çağırması

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

Etkinlik Türü

 EventType
Özellikler
kEvent_CommunicationError

EchoRequest gönderilirken veya yanıt beklenirken iletişim hatası oluştu.

kEvent_DefaultCheck

Uygulamada doğru varsayılan etkinlik işleme işlemini doğrulamak için kullanılır.

kEvent_PreparePayload

Başvurudan, Yankı isteği için yükü hazırlaması istenir.

kEvent_RequestAborted

Başka bir exchange'in başlatılması için bir istek yapıldığından, devam eden bir yankı exchange'i iptal edilmiştir.

kEvent_RequestSent

Eşe bir EchoRequest mesajı gönderildi.

kEvent_ResponseReceived

Eşten EchoResponse mesajı alındı.

kEvent_ResponseTimeout

Verilen süre içinde EchoResponse alınmadı.

Durum

 State
Özellikler
kState_Idle

İstemci nesnesi boşta.

kState_NotInitialized

İstemci nesnesi başlatılmadı.

kState_PreparingBinding

İstemci nesnesi, bağlamanın hazır olmasını bekliyor.

kState_RequestInProgress

Bir EchoRequest mesajı gönderildi ve istemci nesnesi yanıt bekliyor.

kState_WaitingToSend

Send Yinelenening() çağrıldı ve istemci nesnesi bir sonraki sefer EchoRequest göndermek için bekliyor.

Herkese açık özellikler

Uygulama Durumu

void * AppState

Uygulamaya özel verilerin işaretçisi.

Herkese açık işlevler

GetLinking

Binding * GetBinding(
  void
) const 

İşaretçiyi WeaveEchoClient ile ilişkili Bağlama nesnesine döndürür.

GetEventCallBack

EventCallback GetEventCallback(
  void
) const 

Şu anda WeaveEchoClient nesnesinde yapılandırılan API etkinliği geri çağırma işlevine bir işaretçi döndürür.

GetState

State GetState(
  void
) const 

WeaveEchoClient nesnesinin mevcut durumunu alın.

Başlangıç

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

Bir WeaveEchoClient nesnesini başlatın.

Bir eşe yankı mesajı göndermeye hazır olmak için WeaveEchoClient nesnesini başlatın.

Ayrıntılar
Parametreler
[in] binding
Eş düğümle iletişim kurmak için kullanılacak bir Bağlama nesnesi.
[in] eventCallback
Uygulamaya API etkinliklerini yayınlamak için WeaveEchoClient nesnesi tarafından çağrılacak bir işlevin işaretçisi.
[in] appState
API etkinliği gerçekleştiğinde uygulamaya geri aktarılacak bir uygulama tanımlı nesne işaretçisi.

Ye

bool IsSendRrepeating() const 

WeaveEchoClient nesnesi şu anda gönderme art arda modundaysa doğru değerini döndürür.

İstek Devam Ediyor

bool RequestInProgress() const 

Bir EchoRequest gönderildiyse ve WeaveEchoClient nesnesi yanıt bekliyorsa doğru değerini döndürür.

Gönder

WEAVE_ERROR Send(
  void
)

Eşe bir EchoRequest mesajı gönderin.

Bu yöntem, eş düğüme bir EchoRequest mesajı gönderme işlemini başlatır. Karşılık gelen bir EchoResponse mesajı alındığında, mesaj ResponseReceived API etkinliği üzerinden uygulamaya gönderilir.

WeaveEchoClient, EchoRequest mesajını oluştururken mesajın yükünü hazırlamak için ReadyPayload API etkinliği üzerinden uygulamaya istek gönderir.

Bu yöntem çağrıldığında Bağlama nesnesi Hazır durumunda değilse, isteğe bağlı hazırlık başlatmak için Bağlama::RequestReady() yöntemine bir istek gönderilir. Ardından, gönderme işlemi bu işlem tamamlanana kadar sıraya alınır. Bu sıranın maksimum derinliği birdir. Bu nedenle, sırasında daha önce gönderilen bir Send() çağrısı, yalnızca tek bir EchoRequest gönderilir.

WeaveEchoClient, tekrarlama modundayken Send() çağrısı yapmak (gönderme döngüsünü daha önce başlatmış olması nedeniyle) WeaveEchoClient gönderme işlemini tekrarlama modundan çıkarmaz, ancak WeaveEchoClient'ı gönderme modundan çıkarmaz.

Gönder

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

Belirli bir yüke sahip eşe EchoRequest mesajı gönderin.

Bu yöntem, eş düğüme bir EchoRequest mesajı gönderme işlemini başlatır. Sağlanan yük arabelleğinin içeriği, eşe, EchoRequest mesajının yükü olarak gönderilir. Karşılık gelen bir EchoResponse mesajı alındığında, mesaj ResponseReceived API etkinliği üzerinden uygulamaya gönderilir.

Bu yöntemi çağırdıktan sonra, sağlanan yük arabelleğinin sahipliği WeaveEchoClient nesnesine aktarılır ve bu nesne, serbest bırakma sorumluluğuna sahiptir. Bu, yöntemin başarıyla veya bir hatayla tamamlanmalarından bağımsız olarak geçerlidir.

Bu yöntem çağrıldığında Bağlama nesnesi Hazır durumunda değilse, isteğe bağlı hazırlık başlatmak için Bağlama::RequestReady() yöntemine bir istek gönderilir. Ardından, gönderme işlemi bu işlem tamamlanana kadar sıraya alınır. Bu sıranın maksimum derinliği birdir. Bu nedenle, sırasında daha önce gönderilen bir Send() çağrısı, yalnızca tek bir EchoRequest gönderilir.

WeaveEchoClient, tekrarlama modundayken Send() çağrısı yapmak (gönderme döngüsünü daha önce başlatmış olması nedeniyle) WeaveEchoClient gönderme işlemini tekrarlama modundan çıkarmaz, ancak WeaveEchoClient'ı gönderme modundan çıkarmaz.

Ayrıntılar
Parametreler
[in] payloadBuf
Eşe gönderilecek yük verilerini içeren bir PacketBuffer nesnesi. Bu bumper'ın sahipliği her durumda WeaveEchoClient nesnesine aktarılır.

Tekrarlanıyor

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

Eşe tekrarlanan bir EchoRequest mesaj dizisi göndermeye başlayın.

Bu yöntem, eşlere EchoRequest mesajları göndermenin tekrarlanan bir sürecini başlatır. EchoResponse mesajları, iş ortağından ResponseReceived API etkinliği üzerinden uygulamaya teslim edilir.

SendYinelenening() çağrıldığında WeaveEchoClient, Stop() işlevi çağrılana veya bir Bağlama hatası oluşana kadar gönderme işleminin yinelendiği bir moda girer. SendSameing() çağrısının birden çok kez yapılması, gönderme döngüsünü sıfırlayıp aralığı güncelleme etkisine sahiptir.

Bir dizinin ilk gönderimi, Send Yinelenening() çağrıldığında veya SendSameing() çağrıldıktan sonra Bağlama hazır olduğunda gerçekleşir (aşağıya bakın). Daha sonra gönderilen iletiler, belirtilen aralıkta gerçekleşir.

Her yanıt gerçekleştiğinde WeaveEchoClient, loadPayload API etkinliği üzerinden mesajın yükünü hazırlamak için uygulamaya istek gönderir.

İleti gönderme zamanı geldiğinde Bağlama nesnesi Hazır durumunda değilse, isteğe bağlı hazırlık başlatmak için Bağlama::RequestReady() yöntemine bir istek gönderilir. Tekrarlanan mesaj gönderimleri bu işlem tamamlanana kadar duraklatılır. İsteğe bağlı Bağlama hazırlığı sırasında oluşan bir hata, WeaveEchoClient gönderme yineleme modundan çıkmaya neden olur.

Etkinlik Etkinliği Geri Çağırması

void SetEventCallback(
  EventCallback eventCallback
)

WeaveEchoClient nesnesindeki API etkinliği geri çağırma işlevini ayarlar.

Kapat

void Shutdown(
  void
)

Önceden başlatılmış bir WeaveEchoClient nesnesini kapatın.

Bu yöntemin yalnızca Init() yöntemi daha önce çağrılmışsa çağrılabileceğini unutmayın.

Durdur

void Stop(
  void
)

Devam eden yankı exchange'lerini durdurur ve gönderme tekrarlama modunu iptal eder.

WeaveEchoClient

 WeaveEchoClient(
  void
)

Herkese açık statik işlevler

VarsayılanEtkinlikHandler

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

WeaveEchoClient API etkinlikleri için varsayılan işleyici.

Uygulamaların, tanımadıkları veya işlemedikleri API etkinlikleri için bu yöntemi çağırmaları gerekir. Sağlanan parametreler, istemci nesnesinin uygulamanın etkinlik işleyici işlevine ilettiği parametrelerle aynı olmalıdır.

Ayrıntılar
Parametreler
[in] appState
İstemci nesnesi ile ilişkili uygulama tanımlı durum bilgilerinin işaretçisi.
[in] eventType
Etkinlik geri çağırması ile iletilen etkinlik kimliği
[in] inParam
Etkinlik geri çağırması ile iletilen giriş etkinliği parametreleri referansı
[in] outParam
Etkinlik geri çağırması tarafından iletilen çıkış etkinliği parametreleri referansı