nl:: Weave:: Binding
#include <src/lib/core/WeaveBinding.h>
Bir Weave iletişiminin amaçlanan hedefini ve ilişkili yapılandırma bilgilerini yakalar.
Özet
Binding nesnesi, bir Weave iletişiminin hedeflenen hedefini ("emsal" olarak da bilinir) ve eşle iletişimin nasıl gerçekleşmesi gerektiğini açıklayan bir dizi yapılandırma parametresi tanımlar. Bağlamalar, iki taraf arasında konuşulan uygulama protokolünden bağımsızdır. Böylece, "kim" yanıtını yakalarlar. ve "nasıl" “Ne” sorusunun cevabını alamayabilirsiniz.
Uygulamalar, istenen iletişim kanalı türüne özel parametrelerle bir Bağlama yapılandırmalıdır. Bağlamalar; TCP, UDP, UDP ile Weave Güvenilir Mesajlaşma ve Weave over BLE (WoBLE) dahil olmak üzere çeşitli ağ taşımaları için destek sağlar. Uygulamalar, taraflar arasında gönderilen iletileri korumak için belirli güvenlik mekanizmalarının kullanılmasını da isteyebilir. Bunlara CASE ve PASE oturumları ve uygulama grubu anahtarları dahildir. Bağlama'yı yapılandırma arayüzü, uygulamaların iletişim gereksinimlerini basit terimlerle ifade etmesine olanak tanıyan bildirim temelli bir API stili kullanır.
Daha fazla bilgi için Binding::Configuration ile ilgili dokümanlara bakın.
Hazırlık
İletişim gerçekleşmeden önce bağlama "hazırlıklı" olmalıdır. Bağlama hazırlama işlemi, iletişimin gerçekleşmesi için gerekli durumun oluşturulmasını içerir. Bu, eşin ağ adresini çözme, ağ bağlantısı kurma ve güvenlik anahtarları için pazarlık yapma gibi şeyleri içerebilir. Uygulama tarafından yapılandırıldıktan sonra Binding, iletişime hazırlanmak için gerekli tüm adımları gerçekleştirir ve işlem tamamlandığında uygulamayı geri arar. Bu şekilde Bağlamalar iletişim mekaniğini gizleyerek uygulamaların üst düzey etkileşimlere odaklanmasını sağlar.
İletişim
Bağlama hazırlandıktan sonra kullanıma hazır hale gelir. Bu durumda, uygulamalar (veya daha yaygın olarak, bir uygulama adına çalışan protokol katmanı kodu), bir Weave exchange bağlamı tahsis etmek için Binding'den istekte bulunur. Sonuçta oluşan exchange bağlamı, iletişim için önceden yapılandırılmış olur. Bu sayede uygulama, eş ile anında Weave değişimi başlatabilir. Uygulama, Bağlama kapatılana kadar veya bir ağ hatası (ör. ağ hatası) sonrasında temel iletişim kanalını sonlandırana kadar Bağlama'dan bağlam bilgisi istemeye devam edebilir.
Bağlama Durumu Değişiklikleri
Binding, kullanımı süresince uygulamaya Binding durumundaki değişiklikler hakkında bilgi veren API etkinlikleri gönderir. Örneğin, hazırlık başarılı olduğunda uygulama, Binding'in kullanıma hazır olduğunu bildiren bir etkinlik alır. Benzer şekilde, temel iletişim kanalı başarısız olursa uygulamaya Binding'in artık hazır durumda olmadığını bildiren bir etkinlik iletilir.
API etkinlikleri, Bağlama ayrıldığında sağlanan bir etkinlik geri çağırma işlevi aracılığıyla uygulamaya iletilir.
Bağlama Ömrü
Bağlama, birden çok yazılım bileşeni arasında ortak kullanıma olanak tanımak için referans sayılır. Bir Bağlama ayrıldığında, bağlama için tek bir referans oluşturulur. Uygulama, Binding'in daha sonra tekrar kullanılabilmesi için bu referansı gelecekte bir noktada serbest bırakmaktan sorumludur.
Bir uygulama Binding ile bittiğinde, bağlama üzerinde Close() işlevini çağırabilir. Bu işlem, uygulamanın Bağlama referansını serbest bırakır ve sonraki tüm API etkinliklerinin yayınlanmasını engeller. Bir Binding'e yapılan son referans iptal edildiğinde otomatik olarak kapatılır.
Herkese açık türler |
|
---|---|
@23{
|
enum |
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
|
EventType{
|
enum |
State
|
enum |
Herkese açık özellikler |
|
---|---|
AppState
|
void *
|
Herkese açık işlevler |
|
---|---|
AddRef(void)
|
void
Bağlama nesneye bir referans ayırın.
|
AdjustResponseTimeout(ExchangeContext *apExchangeContext) const
|
Yanıt zaman aşımını ayarlamak için mevcut bir Exchange Bağlamını yeniden yapılandırın.
|
AllocateRightSizedBuffer(PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize)
|
|
BeginConfiguration()
|
Bağlama'yı yapılandırma işlemi olma.
|
CanBePrepared(void) const
|
bool
|
Close(void)
|
void
Bağlama nesnesini kapatın ve bir referans bırakın.
|
GetConnection() const
|
Bağlamayla ilişkilendirilen Weave bağlantı nesnesini alın.
|
GetDefaultResponseTimeout() const
|
uint32_t
Eşle iletişim kurarken kullanılacak varsayılan exchange yanıt zaman aşımını alın.
|
GetDefaultWRMPConfig(void) const
|
const WRMPConfig &
Eşle iletişim kurarken kullanılacak varsayılan WRMP yapılandırmasını alın.
|
GetEncryptionType(void) const
|
uint8_t
Eşten gelen/eşten gelen iletiler şifrelenirken kullanılacak ileti şifreleme türünü alın.
|
GetEventCallback() const
|
EventCallback
Binding için bir API etkinliği gerçekleştiğinde çağrılacak işlevi alın.
|
GetExchangeManager() const
|
|
GetKeyId(void) const
|
uint32_t
Eş ile giden/eşten gelen iletiler şifrelenirken kullanılacak ileti şifreleme anahtarının kimliğini alın.
|
GetLogId(void) const
|
uint16_t
Bağlama için benzersiz bir kimlik alın.
|
GetMaxWeavePayloadSize(const System::PacketBuffer *msgBuf)
|
uint32_t
Sağlanan PacketBuffer'ın içine sığabilecek maksimum Weave yükü boyutunu alın.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
Eş düğümü ve ilişkili adres / bağlantı bilgilerini açıklayan bir dize oluşturur.
|
GetPeerIPAddress(nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const
|
void
Varsa eşin IP adresi bilgilerini alın.
|
GetPeerNodeId(void) const
|
uint64_t
Bağlama eşinin düğüm kimliğini alın.
|
GetProtocolLayerCallback(EventCallback & callback, void *& state) const
|
void
|
GetState(void) const
|
State
Bağlamanın mevcut durumunu alın.
|
IsAuthenticMessageFromPeer(const WeaveMessageInfo *msgInfo)
|
bool
Belirli bir gelen iletinin, yapılandırılmış eşten gelip gelmediğini ve kimliğinin uygun şekilde doğrulanıp doğrulanmadığını belirleyin.
|
IsConnectionTransport() const
|
bool
|
IsPreparing(void) const
|
bool
|
IsReady(void) const
|
bool
|
IsUDPTransport() const
|
bool
|
IsUnreliableUDPTransport() const
|
bool
|
IsWRMTransport() const
|
bool
|
NewExchangeContext(ExchangeContext *& appExchangeContext)
|
Bağlamanın hedefi olan eşle iletişim kurmak için yeni bir Exchange Bağlamı ayırın.
|
Release(void)
|
void
Bağlama nesneye bir referans bırakın.
|
RequestPrepare()
|
Uygulamadan Binding'i yapılandırmasını ve hazırlamasını isteyin.
|
Reset(void)
|
void
Bağlamayı yapılandırılmamış duruma sıfırlayın.
|
SetDefaultResponseTimeout(uint32_t msec)
|
void
Eşle iletişim kurarken kullanılacak varsayılan exchange yanıt zaman aşımını ayarlayın.
|
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
|
void
Eşle iletişim kurarken kullanılacak varsayılan WRMP yapılandırmasını ayarlayın.
|
SetEventCallback(EventCallback aEventCallback)
|
void
Bağlama için bir API etkinliği gerçekleştiğinde çağrılacak uygulama tanımlı işlevi ayarlayın.
|
SetProtocolLayerCallback(EventCallback callback, void *state)
|
void
Bir uygulama adına Bağlama'yı kullanarak protokol katmanı kodu için bir etkinlik geri çağırma işlevi belirleyin.
|
Herkese açık statik işlevler |
|
---|---|
DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
API etkinlikleri bağlama için varsayılan işleyici.
|
Sınıflar |
|
---|---|
nl:: |
Bir Binding nesnesini yapılandırmak ve hazırlamak için bildirim temelli bir arayüz sağlar. |
Yapılar |
|
---|---|
nl:: |
Bir Binding API etkinliğine parametre girin. |
nl:: |
Çıkış parametrelerini bir Binding API etkinliğine yükleyin. |
Herkese açık türler
@23
@23
Özellikler | |
---|---|
kGetPeerDescription_MaxLength
|
GetPeerDescription() tarafından döndürülen maksimum dize uzunluğu (NUL karakteri dahil). |
EventCallback
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
EventType
EventType
Özellikler | |
---|---|
kEvent_BindingFailed
|
Bağlama başarısız oldu ve artık eşle iletişim kurmak için kullanılamıyor. |
kEvent_BindingReady
|
Bağlamayla ilgili hazırlama işlemi başarılı oldu ve bağlama artık eşle iletişim kurmak için kullanılabilir. |
kEvent_ConnectionEstablished
|
İstenen Weave bağlantısı kuruldu. |
kEvent_DefaultCheck
|
Uygulamada varsayılan etkinlik işlemenin doğru olduğunu doğrulamak için kullanılır. |
kEvent_PASEParametersRequested
|
Uygulamanın, PASE oturumunun kurulumu sırasında kullanılacak parametreleri sağlaması istenir. |
kEvent_PrepareFailed
|
Bağlamadaki hazırlama işlemi başarısız oldu. |
kEvent_PrepareRequested
|
Uygulamanın, bağlamayı ağ yığını tarafından kullanılmak üzere yapılandırması ve hazırlaması istenir. |
kEvent_TAKEParametersRequested
|
Uygulamadan, TAKE oturumunun kurulumu sırasında kullanılacak parametreleri sağlaması istenir. |
Eyalet
State
Herkese açık özellikler
AppState
void * AppState
Herkese açık işlevler
AddRef
void AddRef( void )
Bağlama nesneye bir referans ayırın.
AdjustResponseTimeout
WEAVE_ERROR AdjustResponseTimeout( ExchangeContext *apExchangeContext ) const
Yanıt zaman aşımını ayarlamak için mevcut bir Exchange Bağlamını yeniden yapılandırın.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
AllocateRightSizedBuffer
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
BeginConfiguration
Configuration BeginConfiguration()
Bağlama'yı yapılandırma işlemi olma.
Uygulamaların, eşle iletişim kurmak üzere hazırlamadan önce Binding'i yapılandırmak için BeginConfiguration() çağrısı yapması gerekir.
Ayrıntılar | |
---|---|
İadeler |
Bağlamayı yapılandırmak için kullanılabilecek bir Binding::Configuration nesnesi.
|
CanBePrepared
bool CanBePrepared( void ) const
Kapat
void Close( void )
Bağlama nesnesini kapatın ve bir referans bırakın.
Bu yöntem çağrıldığında, bağlamanın Kapalı duruma gelmesine neden olur. Bağlama işlemi için devam eden tüm hazırlık işlemleri iptal edilir ve bağlamanın sahip olduğu tüm harici iletişim kaynakları serbest bırakılır.
Close() çağrısının yapılması, bağlamayla ilişkilendirilen referans sayısını azaltır ve referans sayısı sıfıra gelirse nesne serbest bırakılır.
GetConnection
WeaveConnection * GetConnection() const
Bağlamayla ilişkilendirilen Weave bağlantı nesnesini alın.
Ayrıntılar | |
---|---|
İadeler |
WeaveConnection nesnesine işaret eden veya bağlamayla ilişkili bir bağlantı yoksa NULL nesnesi.
|
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
Eşle iletişim kurarken kullanılacak varsayılan exchange yanıt zaman aşımını alın.
Ayrıntılar | |
---|---|
İadeler |
Yanıt zaman aşımı (ms.)
|
GetDefaultWRMPConfig
const WRMPConfig & GetDefaultWRMPConfig( void ) const
Eşle iletişim kurarken kullanılacak varsayılan WRMP yapılandırmasını alın.
Ayrıntılar | |
---|---|
İadeler |
Varsayılan yapılandırma değerlerini içeren WRMPConfig yapısına referans.
|
GetEncryptionType
uint8_t GetEncryptionType( void ) const
Eşten gelen/eşten gelen iletiler şifrelenirken kullanılacak ileti şifreleme türünü alın.
GetEventCallback
EventCallback GetEventCallback() const
Binding için bir API etkinliği gerçekleştiğinde çağrılacak işlevi alın.
Ayrıntılar | |
---|---|
İadeler |
Geri çağırma işlevine işaret eden bir işaretçi.
|
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
Eş ile giden/eşten gelen iletiler şifrelenirken kullanılacak ileti şifreleme anahtarının kimliğini alın.
GetLogId
uint16_t GetLogId( void ) const
Bağlama için benzersiz bir kimlik alın.
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const System::PacketBuffer *msgBuf )
Sağlanan PacketBuffer'ın içine sığabilecek maksimum Weave yükü boyutunu alın.
WRM ile UDP dahil UDP için, döndürülen maksimum yük boyutu, sonuçta ortaya çıkan Weave mesajının, yapılandırılan UDP MTU'dan taşmamasını sağlar.
Buna ek olarak, bu yöntem Weave yükünün sağlanan PaketetBuffer'dan taşmamasını sağlar.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İadeler |
Maksimum Weave yük boyutu.
|
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
Eş düğümü ve ilişkili adres / bağlantı bilgilerini açıklayan bir dize oluşturur.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
GetPeerIPAddress
void GetPeerIPAddress( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId ) const
Varsa eşin IP adresi bilgilerini alın.
Eşin IP adresi bilgilerinin kullanılabilirliği, bağlamanın durumuna ve yapılandırmasına bağlıdır. IP adresi bilgileri yalnızca IP tabanlı bir aktarım (WRMP ile TCP, UDP veya UDP) kullanılırken kullanılabilir. Hazırlığa başlamadan önce, adres bilgileri yalnızca yapılandırma sırasında uygulama tarafından açık bir şekilde ayarlanmışsa kullanılabilir. Hazırlık aşamasında adres bilgileri, adres hazırlığı tamamlandığında (ör. DNS çözümlemesi tamamlandıktan sonra) kullanılabilir. Bağlama hazır olduğunda, Bağlama sıfırlanıncaya kadar adres bilgileri kullanılabilir durumda kalır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
Bağlama eşinin düğüm kimliğini alın.
Yalnızca bağlama nesne hazırlandıktan sonra geçerlidir.
Ayrıntılar | |
---|---|
İadeler |
Eşin örgü düğüm kimliği
|
GetProtocolLayerCallback
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
Bağlamanın mevcut durumunu alın.
Ayrıntılar | |
---|---|
İadeler |
Bağlama durumu.
|
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
Belirli bir gelen iletinin, yapılandırılmış eşten gelip gelmediğini ve kimliğinin uygun şekilde doğrulanıp doğrulanmadığını belirleyin.
Bu yöntem, belirtilen iletiyle ilgili aşağıdaki ayrıntıları onaylar:
- İleti, bağlamanın eş düğümünden oluşturuldu
- İleti, bağlamayla aynı aktarım türü üzerinden alındı. İleti bir bağlantı üzerinden alınmışsa bu yöntem, iletinin bağlamayla ilişkili tam bağlantı üzerinden alındığını da onaylar.
- İletiyi şifrelemek için kullanılan şifreleme anahtarı ve türü, bağlantıda yapılandırılanlarla eşleşir. Yöntem, güvenlik kullanılmadan yapılandırılan bağlamalarda gelen iletinin Şifrelenmemiş olduğunu onaylar.
Bu yöntem, eşlerin düğümden eşle ilk değiş tokuşun ardından yerel düğüme olan değişimi kendiliğinden başlatabildiği WDM gibi protokollerde kullanılmak üzere tasarlanmıştır. Bu tür durumlarda yöntem, yerel düğümün gelen istenmeyen mesajın ilişkili eş tarafından gönderildiğini onaylamasına olanak tanır. (Elbette ileti şifreleme kullanılmadan yapılandırılan bağlamalar için bu onay işlemi, güvenlik açısından herhangi bir değer sağlamaz. Yalnızca gönderen düğümü kimliği ile aktarım türlerinin eşleştiğini onaylar.)
Bağlama, "Hazır" durumunda değilse bu yöntemin her zaman "false" (yanlış) değerini döndüreceğini unutmayın.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İadeler |
İleti gerçek olarak benzerden geliyorsa doğru değerini alır.
|
IsConnectionTransport
bool IsConnectionTransport() const
IsPreparing
bool IsPreparing( void ) const
Ayrıntılar | |
---|---|
İadeler |
Bağlama şu anda hazırlanıyorsa doğru değerini döndürür.
|
IsReady
bool IsReady( void ) const
Ayrıntılar | |
---|---|
İadeler |
Binding, Hazır durumundaysa doğru değerini döndürür.
|
IsUDPTransport
bool IsUDPTransport() const
IsUnreliableUDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
NewExchangeContext
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
Bağlamanın hedefi olan eşle iletişim kurmak için yeni bir Exchange Bağlamı ayırın.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Değerleri Döndür |
|
Serbest bırak
void Release( void )
Bağlama nesneye bir referans bırakın.
Bağlama nesnesine başka referans yoksa bağlama kapatılıp serbest bırakılır.
RequestPrepare
WEAVE_ERROR RequestPrepare()
Uygulamadan Binding'i yapılandırmasını ve hazırlamasını isteyin.
Protokol katmanı kodu, yapılandırılmamış veya başarısız olan bir Binding'de bu yöntemi kullanarak uygulamaya yönelik bir etkinliği (kEvent_PrepareRequested) tetikleyerek bağlamayı yapılandırıp kullanıma hazırlamasını istiyor.
Bu yöntem yalnızca Yapılandırılmadı veya Başarısız durumdaki Bağlamalar'da çağrılabilir.
Uygulama, bağlamaların isteğe bağlı yapılandırmasını/hazırlanmasını desteklemiyorsa yöntem WEAVE_ERROR_NOT_IMPLEMENTED ile başarısız olur.
Sıfırla
void Reset( void )
Bağlamayı yapılandırılmamış duruma sıfırlayın.
Reset() çağrıldığında, bağlama için devam etmekte olan tüm hazırlama işlemleri iptal edilir ve bağlamanın sahip olduğu tüm harici iletişim kaynakları serbest bırakılır. Sıfırlama(), bağlamayı Yapılandırılmamış duruma getirir. Bu sürenin ardından, bağlama yeniden yapılandırılıp hazırlanabilir.
Reset(), bağlamanın referans sayısını değiştirmez.
SetDefaultResponseTimeout
void SetDefaultResponseTimeout( uint32_t msec )
Eşle iletişim kurarken kullanılacak varsayılan exchange yanıt zaman aşımını ayarlayın.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
SetDefaultWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
Eşle iletişim kurarken kullanılacak varsayılan WRMP yapılandırmasını ayarlayın.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
SetEventCallback
void SetEventCallback( EventCallback aEventCallback )
Bağlama için bir API etkinliği gerçekleştiğinde çağrılacak uygulama tanımlı işlevi ayarlayın.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
SetProtocolLayerCallback
void SetProtocolLayerCallback( EventCallback callback, void *state )
Bir uygulama adına Bağlama'yı kullanarak protokol katmanı kodu için bir etkinlik geri çağırma işlevi belirleyin.
Bağlama için API etkinlikleri gerçekleştiğinde bu işlev, uygulama tanımlı geri çağırma işlevine ek olarak çağrılır.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
Herkese açık statik işlevler
DefaultEventHandler
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
API etkinlikleri bağlama 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, uygulamanın etkinlik işleyici işlevine bağlama tarafından iletilen parametrelerle aynı olmalıdır.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|