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)
|
typedefvoid(*
|
EventType{
|
enum |
State{
|
enum |
Herkese açık özellikler |
|
---|---|
AppState
|
void *
Uygulamaya özel veriler için bir işaretçi.
|
Herkese açık işlevler |
|
---|---|
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ış 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:: |
WeaveEchoClient API etkinliğine parametre girin. |
nl:: |
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.
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 |
|
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 |
|
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 |
|