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)
|
typedefvoid(*
|
EventType{
|
enum |
State{
|
enum |
Herkese açık özellikler |
|
---|---|
AppState
|
void *
Uygulamaya özel verilere işaret eden bir işaretçi.
|
Kamu işlevleri |
|
---|---|
GetBinding(void) const
|
Binding *
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:: |
WeaveEchoClient API etkinliğine giriş parametreleri. |
nl:: |
Çı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.
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 |
|
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 |
|
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 |
|