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.

Özet

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

Uygulamalar, Binding nesnesiyle 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 mevcuttur (bkz. WeaveEchoServer).

Müşteri Bağlamaları

WeaveEchoClient, yankı isteklerinin hedeflenen alıcısıyla iletişim kurmak ve tanımlamak için kullanılan bir Weave Binding nesnesini alır. Binding, WeaveEchoClient nesnesinin ilk kullanıma hazırlanmasından önce uygulama tarafından yapılandırılıp hazırlanabilir veya hazırlanmadan bırakılabilir. Bu durumda, WeaveEchoClient, bağlamanın isteğe bağlı hazırlanmasını ister (ayrıntılar için Binding::RequestPrepare() bölümüne bakın).

Binding'in isteğe bağlı hazırlanması, hazır durumuna geçildikten sonra başarısız olursa da istenir.

Tekrarlama Modu

WeaveEchoClient'ı SendTekrarlama moduna almak için SendRepeating() yöntemi kullanılabilir. Bu modda istemci nesnesi, yapılandırılmış bir aralıklarla eşe tekrarlanan bir EchoRequest mesaj dizisi gönderir. SendTekrarlama modu, Stop() yöntemi çağrılarak iptal edilebilir.

Çoklu Yayın ve Anons

WeaveEchoClient nesnesi, Binding nesnesini uygun bir IPv6 çoklu yayın adresine veya IPv4 yerel ağ yayın adresine (255.255.255) yapılandırarak EchoRequest'leri aynı anda birden çok alıcıya göndermek için kullanılabilir. WeaveEchoClient nesnesi, bir çoklu yayın veya yayın eş adresi algıladığında, EchoRequest gönderildiğinde otomatik olarak Çoklu Yanıt moduna girer.

Bu modda, nesne aynı exchange'e gelen tüm EchoResponse mesajlarını dinlemeye ve teslim etmeye devam eder. Nesne: 1) uygulama Stop() veya Send() çağrısı yapana, 2) SendTekrarlama modunda yeni bir istek gönderene kadar veya 3) hiçbir yanıt alınmadığı ve alma zaman aşımı süresi dolana kadar Çoklu Yanıt modunda kalır.

API Etkinlikleri

Çalışması sırasında WeaveEchoClient nesnesi, belirli işlemleri istemek veya önemli olaylarla ilgili bildirimler göndermek için uygulamayı çağırır. Bu API etkinliği çağrıları, istemci nesnesinde yapılandırılmış olan geri çağırma işlevine yapılır. Uygulama, belirtilenler dışında bir etkinlik geri çağırması sırasında istemcinin durumunu değiştirebilir. Genel bir istisna, nesnenin Shutdown() yöntemidir ve geri çağırma sırasında hiçbir zaman çağrılamaz.

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

PreparePayload

WeaveEchoClient, bir EchoRequest mesajı oluşturmak üzere olup uygulamadan bir yük sağlamasını ister. Uygulama isterse yük verilerini içeren yeni bir PacketBuffer döndürebilir. Uygulama bu etkinliği işlemezse otomatik olarak sıfır uzunlukta yüke sahip bir EchoRequest gönderilir. Uygulama, bu geri çağırma sırasında WeaveEchoClient'ın durumunu DEĞİŞTİRMEZ.

RequestSent

Eşe bir EchoRequest mesajı gönderildi.

ResponseReceived

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

CommunicationError

EchoRequest oluşturulurken, gönderilirken veya yanıt beklenirken hata oluştu. Yanıt beklerken oluşabilecek hatalara örnek olarak önemli hatalar veya bağlantının beklenmedik şekilde kapatılması verilebilir. Etkinliğin bağımsız değişkenleri, hatanın nedenini içerir.

ResponseTimeout

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

RequestAborted

Önceki iletiye yanıt alınmadan önce başka bir EchoRequest gönderilmesi için istek yapıldığı için devam etmekte olan Yankı değişimi iptal edildi. Bu, bir sonraki EchoRequest'in gönderilmesi için zaman geldiğinde SendTekrarlama modunda ortaya çıkabilir. Bu durum ayrıca, uygulama bir EchoRequest gönderildikten sonra ancak herhangi bir yanıt alınmadan önce Send() işlevini çağırdığında da gerçekleşebilir.

Nesne Çoklu Yanıt modundayken en az bir EchoResponse mesajı alındıysa etkinlik atlanır.

Oluşturucular ve Yıkıcılar

WeaveEchoClient(void)

Herkese açık türler

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

Herkese açık özellikler

AppState
void *
Uygulamaya özel veriler için bir işaretçi.

Herkese açık işlevler

GetBinding(void) const
WeaveEchoClient ile ilişkili Binding nesnesine bir işaretçi döndürür.
GetEventCallback(void) const
EventCallback
Şu anda WeaveEchoClient nesnesinde yapılandırılmış olan API etkinlik 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 tekrar gönderme modundaysa true değerini döndürür.
RequestInProgress() const
bool
EchoRequest gönderildiyse ve WeaveEchoClient nesnesi yanıt bekliyorsa true değerini döndürür.
Send(void)
Eşe bir EchoRequest mesajı gönderin.
Send(PacketBuffer *payloadBuf)
Eşe belirli bir yük içeren bir EchoRequest mesajı gönderin.
SendRepeating(uint32_t sendIntervalMS)
Eşe yinelenen bir EchoRequest mesaj dizisi göndermeyi başlatın.
SetEventCallback(EventCallback eventCallback)
void
WeaveEchoClient nesnesinde 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ı değişimini durdurur ve tekrar gönderme 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.

Yapılar

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

WeaveEchoClient API etkinliğine parametre girin.

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

WeaveEchoClient API etkinliğine çıkış parametreleri ekleyin.

Herkese açık türler

EventCallback

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

EventType

 EventType
Özellikler
kEvent_CommunicationError

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

kEvent_DefaultCheck

Uygulamada varsayılan etkinlik işlemenin doğru olduğunu doğrulamak için kullanılır.

kEvent_PreparePayload

Uygulamanın, yükü Yankı isteği için hazırlaması istenir.

kEvent_RequestAborted

Başka bir exchange başlatmak için istekte bulunulduğundan, devam etmekte olan bir Yankı değişimi iptal edildi.

kEvent_RequestSent

Eşe bir EchoRequest mesajı gönderildi.

kEvent_ResponseReceived

Eşten bir EchoResponse mesajı alındı.

kEvent_ResponseTimeout

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

Eyalet

 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

SendRepeating() çağrıldı ve istemci nesnesi bir sonraki EchoRequest göndermeyi bekliyor.

Herkese açık özellikler

AppState

void * AppState

Uygulamaya özel veriler için bir işaretçi.

Herkese açık işlevler

GetBinding

Binding * GetBinding(
  void
) const 

WeaveEchoClient ile ilişkili Binding nesnesine bir işaretçi döndürür.

GetEventCallback

EventCallback GetEventCallback(
  void
) const 

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

GetState

State GetState(
  void
) const 

WeaveEchoClient nesnesinin mevcut durumunu alın.

Init

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

Bir WeaveEchoClient nesnesini başlatın.

Bir eşe yankı mesajları göndermeye hazırlanırken bir WeaveEchoClient nesnesini başlatın.

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

IsSendRrepeating

bool IsSendRrepeating() const 

WeaveEchoClient nesnesi şu anda tekrar gönderme modundaysa true değerini döndürür.

RequestInProgress

bool RequestInProgress() const 

EchoRequest gönderildiyse ve WeaveEchoClient nesnesi yanıt bekliyorsa true 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, bu mesaj ResponseReceived API etkinliği aracılığıyla uygulamaya iletilir.

EchoRequest mesajını oluştururken WeaveEchoClient, mesajın yükünü hazırlamak için PreparePayload API etkinliği aracılığıyla uygulamaya bir istek gönderir.

Bu yöntem çağrıldığında Binding nesnesi Hazır durumda değilse isteğe bağlı hazırlığı başlatmak için Binding::RequestPrepare() yöntemine bir istek yapılır. 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ırada daha önceki bir gönderme varken Send() için yapılan herhangi bir çağrı, yalnızca tek bir EchoRequest gönderilmesiyle sonuçlanır.

WeaveEchoClient gönderme tekrarı modundayken (ör. daha önceki bir SendRepeating() çağrısından dolayı) Send() çağrısı yapmak, gönderme döngüsünü hızlandırıp sıfırlayacaktır ancak WeaveEchoClient'ı gönderme tekrarlama modundan çıkarmaz.

Gönder

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

Eşe belirli bir yük içeren bir 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, EchoRequest mesajının yükü olarak eşe gönderilir. Karşılık gelen bir EchoResponse mesajı alındığında, bu mesaj ResponseReceived API etkinliği aracılığıyla uygulamaya iletilir.

Bu yöntem çağrıldığında, sağlanan yük tamponunun sahipliği, öğeyi serbest bırakma sorumluluğuna sahip olan WeaveEchoClient nesnesine aktarılır. Bu durum, yöntemin başarıyla veya hatayla tamamlanmasından bağımsız olarak geçerlidir.

Bu yöntem çağrıldığında Binding nesnesi Hazır durumda değilse isteğe bağlı hazırlığı başlatmak için Binding::RequestPrepare() yöntemine bir istek yapılır. 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ırada daha önceki bir gönderme varken Send() için yapılan herhangi bir çağrı, yalnızca tek bir EchoRequest gönderilmesiyle sonuçlanır.

WeaveEchoClient gönderme tekrarı modundayken (ör. daha önceki bir SendRepeating() çağrısından dolayı) Send() çağrısı yapmak, gönderme döngüsünü hızlandırıp sıfırlayacaktır ancak WeaveEchoClient'ı gönderme tekrarlama modundan çıkarmaz.

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

SendRepeating

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

Eşe, tekrarlanan bir EchoRequest mesaj dizisi göndermeyi başlatın.

Bu yöntem eşe EchoRequest mesajları göndermek için tekrar eden bir süreç başlatır. EchoResponse mesajları eşten alındığında ResponseReceived API etkinliği aracılığıyla uygulamaya teslim edilir.

SendRepeating() çağrıldığında WeaveEchoClient gönderme tekrarlama moduna girer. Bu modda Stop() çağrılana veya bir Binding hatası oluşana kadar kalır. SendRepeating() işlevini birden çok kez çağırmak, gönderme döngüsünü sıfırlama ve aralığı güncelleme gibi bir etki yaratır.

Bir dizinin ilk gönderimi, SendRepeating() çağrıldığında veya SendRepeating() çağrıldıktan sonra Binding hazır olduğunda gerçekleşir (aşağıya bakın). Sonraki gönderme işlemleri, belirtilen zaman aralığında gerçekleşir.

Her gönderme gerçekleştiğinde WeaveEchoClient, mesajın yükünü hazırlamak için PreparePayload API etkinliği aracılığıyla uygulamaya bir istek gönderir.

Mesaj gönderme zamanı geldiğinde Binding nesnesi Hazır durumda değilse isteğe bağlı hazırlığı başlatmak için Binding::RequestPrepare() yöntemine bir istek yapılır. Tekrarlanan diğer mesaj gönderme işlemleri, bu işlem tamamlanana kadar duraklatılır. İsteğe bağlı Binding hazırlığı sırasında oluşan bir hata, WeaveEchoClient'ın gönderme tekrarlama modundan çıkmasına neden olur.

SetEventCallback

void SetEventCallback(
  EventCallback eventCallback
)

WeaveEchoClient nesnesinde 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ı değişimini durdurur ve tekrar gönderme modunu iptal eder.

WeaveEchoClient

 WeaveEchoClient(
  void
)

Herkese açık statik işlevler

DefaultEventHandler

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 nesnesi tarafından uygulamanın etkinlik işleyici işlevine geçirilen parametrelerle aynı olmalıdır.

Ayrıntılar
Parametreler
[in] appState
İstemci nesnesiyle ilişkili, uygulama tanımlı durum bilgilerine işaret eden bir işarettir.
[in] eventType
Etkinlik geri çağırması tarafından iletilen etkinlik kimliği
[in] inParam
Etkinlik geri çağırması tarafından iletilen giriş etkinliği parametrelerinin referansı
[in] outParam
Etkinlik geri çağırması tarafından iletilen çıkış etkinliği parametrelerinin referansı