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ürvoid(*
|
EventType{
|
enum |
State{
|
enum |
Herkese açık özellikler |
|
---|---|
AppState
|
void *
Uygulamaya özel verilerin işaretçisi.
|
Herkese açık işlevler |
|
---|---|
GetBinding(void) const
|
Binding *
İş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:: |
Parametreleri WeaveEchoClient API etkinliğine girin. |
nl:: |
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.
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 |
|
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 |
|
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 |
|