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ü de Weave düğümlerinin canlılığını ve erişilebilirliğini test etmek için kullanılabilir.

Uygulamalar, Binding nesnesi tarafından tanımlanan bir eş düğüme tek seferlik veya tekrarlanan EchoRequest mesajlarını göndermek için WeaveEchoClient sınıfını kullanabilir. Yankı isteklerine yanıt vermek için karşılık gelen bir sınıf mevcuttur (bkz. WeaveEchoServer).

İstemci Bağlama

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

Hazır durumuna girdikten sonra başarısız olursa Binding için isteğe bağlı hazırlık yapılması da istenir.

Tekrarlama Modu

WeaveEchoClient, Send Repeating moduna geçmek 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 Yayın

Binding nesnesini uygun bir IPv6 çoklu yayın adresi veya IPv4 yerel ağ yayın adresiyle (255.255.255.255) yapılandırarak EchoRequest'i birden fazla alıcıya aynı anda göndermek için WeaveEchoClient nesnesi 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() işlevini çağırana, 2) Sendtekraring modunda başka bir istek gönderme zamanı gelene veya 3) yanıt alınıncaya ve alma zaman aşımının süresi dolana kadar Çoklu Yanıt modunda kalır.

API Etkinlikleri

İşlem sırasında WeaveEchoClient nesnesi, belirli işlemleri istemek veya önemli etkinliklerin bildirimlerini 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. Uygulamalar, belirtilenler dışında bir etkinlik geri çağırma işlemi sırasında istemcinin durumunu değiştirebilir. Genel istisna, nesnenin Shutdown() yöntemidir. Bu yöntem, bir geri çağırma sırasında hiçbir zaman çağrılamaz.

Aşağıdaki API etkinlikleri tanımlanmıştır:

PreparePayload

WeaveEchoClient, EchoRequest mesajı oluşturmak üzeredir ve 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 gerçekleştirmezse sıfır uzunlukta yüke sahip bir EchoRequest otomatik olarak gönderilir. Uygulama, bu geri arama sırasında WeaveEchoClient durumunu DEĞİŞTİRMEMELİDİR.

RequestSent

Eşe EchoRequest iletisi gönderildi.

ResponseReceived

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

CommunicationError

EchoRequest oluşturulurken veya gönderilirken ya da yanıt beklenirken hata oluştu. Yanıt beklenirken oluşabilecek hatalara örnek olarak önemli hatalar veya bağlantının beklenmedik şekilde kapatılması verilebilir. Etkinlikteki bağımsız değişkenler hata nedenini içerir.

ResponseTimeout

Ayrılan sürede bir Yankı yanıtı alınmadı. Yanıt zaman aşımı Binding nesnesindekiDefaultResponseTimeout özelliği tarafından kontrol edilir.

RequestAborted

Önceki iletiye yanıt alınmadan önce başka bir EchoRequest gönderme isteğinde bulunulduğundan devam etmekte olan bir Yankı değişimi iptal edildi. Bu sorun, bir sonraki EchoRequest'in gönderilmesi için zaman geldiğinde Send Repeating modunda ortaya çıkabilir. Uygulama, bir EchoRequest gönderildikten sonra herhangi bir yanıt alınmadan önce Send() işlevini çağırdığında da bu durum görülebilir.

Nesne Çoklu Yanıt modundayken, en az bir EchoResponse mesajı alınırsa 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 verilere işaret eden bir işaretçi.

Kamu işlevleri

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ış API etkinliği geri çağırma işlevine bir işaretçi döndürür.
GetState(void) const
WeaveEchoClient nesnesinin geçerli 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 tekrarlama modundaysa true değerini döndürür.
RequestInProgress() const
bool
Bir EchoRequest gönderilmişse ve WeaveEchoClient nesnesi bir yanıt bekliyorsa true değerini döndürür.
Send(void)
Eşe EchoRequest mesajı gönder.
Send(PacketBuffer *payloadBuf)
Eşe belirli bir yük ile birlikte EchoRequest mesajı gönder.
SendRepeating(uint32_t sendIntervalMS)
Eşe EchoRequest mesajlarından oluşan tekrarlanan bir dizi göndermeye başlayın.
SetEventCallback(EventCallback eventCallback)
void
WeaveEchoClient nesnesinde API etkinliği geri çağırma işlevini ayarlar.
Shutdown(void)
void
Önceden başlatılmış WeaveEchoClient nesnesini kapatın.
Stop(void)
void
Devam eden Yankı değişimlerini durdurur ve 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.

Yapılar

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

WeaveEchoClient API etkinliğine giriş parametreleri.

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

Çıkış parametrelerini WeaveEchoClient API etkinliğine çıkarın.

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 olay işlemenin doğru olduğunu doğrulamak için kullanılır.

kEvent_PreparePayload

Uygulamadan, yükü Echo isteği için hazırlaması istenir.

kEvent_RequestAborted

Devam eden bir Yankı değişimi, başka bir exchange başlatma isteği gönderildiğinden iptal edildi.

kEvent_RequestSent

Eşe EchoRequest iletisi gönderildi.

kEvent_ResponseReceived

Eşten bir EchoResponse iletisi alındı.

kEvent_ResponseTimeout

Ayrılan sürede bir Yankı yanıtı 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 iletisi gönderildi ve istemci nesnesi bir yanıt bekliyor.

kState_WaitingToSend

SendRepeating() işlevi çağrıldı ve istemci nesnesi, bir sonraki EchoRequest gönderme zamanını bekliyor.

Herkese açık özellikler

AppState

void * AppState

Uygulamaya özel verilere işaret eden bir işaretçi.

Kamu işlevleri

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ış API etkinliği geri çağırma işlevine bir işaretçi döndürür.

GetState

State GetState(
  void
) const 

WeaveEchoClient nesnesinin geçerli durumunu alın.

Başlat

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

Bir WeaveEchoClient nesnesini başlatın.

Bir eşe yankı iletileri göndermeye hazırlık kapsamında bir WeaveEchoClient nesnesini başlatın.

Ayrıntılar
Parametreler
[in] binding
Eş düğümle iletişim kurmak için kullanılacak Binding nesnesi.
[in] eventCallback
API etkinliklerini uygulamaya teslim etmek için WeaveEchoClient nesnesi tarafından çağrılacak bir işleve giden işaretçi.
[in] appState
Bir API etkinliği meydana geldiğinde uygulamaya geri iletilecek, uygulama tanımlı bir nesneye yönelik işaretçi.

IsSendRrepeating

bool IsSendRrepeating() const 

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

RequestInProgress

bool RequestInProgress() const 

Bir EchoRequest gönderilmişse ve WeaveEchoClient nesnesi bir yanıt bekliyorsa true değerini döndürür.

Gönder

WEAVE_ERROR Send(
  void
)

Eşe EchoRequest mesajı gönder.

Bu yöntem, eş düğüme 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 üzerinden uygulamaya teslim edilir.

WeaveEchoClient, EchoRequest mesajını oluştururken mesaj 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 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ırada daha önce yapılmış bir gönderme varken Send() çağrısı yapıldığında yalnızca tek bir EchoRequest gönderilmesine neden olur.

WeaveEchoClient gönderme tekrarlama modundayken Send() çağrısının yapılması (ör. SendRepeating() işlevine yapılan önceki bir çağrı nedeniyle) gönderme döngüsünü hızlandırıp sıfırlar ancak WeaveEchoClient'ı gönderme tekrarlama modundan çıkarmaz.

Gönder

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

Eşe belirli bir yük ile birlikte EchoRequest mesajı gönder.

Bu yöntem, eş düğüme 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 üzerinden uygulamaya teslim edilir.

Bu yöntem çağrıldıktan sonra, sağlanan yük arabelleğinin sahipliği WeaveEchoClient nesnesine aktarılır ve bu nesne, onu serbest bırakma sorumluluğuna sahiptir. Bu, yöntemin başarılı veya bir 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 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ırada daha önce yapılmış bir gönderme varken Send() çağrısı yapıldığında yalnızca tek bir EchoRequest gönderilmesine neden olur.

WeaveEchoClient gönderme tekrarlama modundayken Send() çağrısının yapılması (ör. SendRepeating() işlevine yapılan önceki bir çağrı nedeniyle) gönderme döngüsünü hızlandırıp sıfırlar 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 geçer.

SendRepeating

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

Eşe EchoRequest mesajlarından oluşan tekrarlanan bir dizi göndermeye başlayın.

Bu yöntem, eşe EchoRequest mesajlarını göndermeye yönelik tekrarlanan bir işlem başlatır. EchoResponse mesajları eşten alındığında, bu mesajlar ResponseReceived API etkinliği üzerinden uygulamaya iletilir.

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ırlamanın ve aralığın güncellenmesine neden olur.

Bir dizinin ilk gönderme işlemi, SendRepeating() işlevi çağrıldığında veya SendRepeating() işlevi çağrıldıktan sonra Binding hazır olduğunda gerçekleşir (aşağıya bakın). Sonraki gönderme işlemleri, belirtilen aralıkta 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.

İleti 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 istek gönderilir. Bu işlem tamamlanana kadar, tekrarlanan mesaj gönderme işlemleri 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ış WeaveEchoClient nesnesini kapatın.

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

Durdur

void Stop(
  void
)

Devam eden Yankı değişimlerini durdurur ve tekrarlama 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ğırması gerekir. Sağlanan parametreler, istemci nesnesi tarafından uygulamanın etkinlik işleyici işlevine iletilenlerle aynı olmalıdır.

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