nl:: Weave:: Binding
#include <src/lib/core/WeaveBinding.h>
Weave iletişiminin amaçlanan hedefini ve ilişkili yapılandırma bilgilerini yakalar.
Özet
Binding nesnesi, bir Weave iletişiminin amaçlanan hedefini ("eş" olarak da bilinir) ve eşle iletişimin nasıl olması gerektiğini açıklayan bir dizi yapılandırma parametresiyle birlikte tanımlar. Bağlamalar, iki taraf arasında konuşulan uygulama protokolünden bağımsızdır. Bu nedenle iletişimin "kim" ve "nasıl" sorularına yer verilir ancak "ne" soruları cevaplanmaz.
Uygulamalar, istenen iletişim kanalı türüne özel parametreler içeren bir Bağlayıcı yapılandırmalıdır. Bağlamalar; TCP, UDP, Weave Reliable Messaging ile UDP ve Weave over BLE (WoBLE) dahil olmak üzere çeşitli ağ aktarımları 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. Bunlar arasında CASE ve PASE oturumları ile uygulama grubu anahtarları bulunur. Binding yapılandırma arayüzü, uygulamaların iletişim gereksinimlerini basit ifadelerle ifade etmesine olanak tanıyan bildirim temelli bir API stili kullanır.
Daha ayrıntılı bilgi için Binding::Configuration dokümanlarına bakın.
Hazırlık
İletişim gerçekleşmeden önce Bağlama "hazırlanmalıdır". Bağlama hazırlama işlemi, iletişimin gerçekleşmesi için gerekli durumun belirlenmesini içerir. Bu; eşin ağ adresini çözümleme, ağ bağlantısı oluşturma ve güvenlik anahtarları için pazarlık yapma gibi işlemleri içerebilir. Binding, uygulama tarafından yapılandırıldıktan sonra iletişime hazırlanmak için gerekli tüm adımları tamamlar ve işlem tamamlandığında uygulamayı geri çağırır. Bu sayede, Bağlamalar iletişim mekanizmasını 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 şekilde, bir uygulama adına çalışan protokol katmanı kodu) bir Weave değişim bağlamı ayırmak için Binding (Bağlama) isteğinde bulunur. Sonuçta oluşan değişim bağlamı, iletişim için önceden yapılandırılmış olarak gelir ve uygulamanın eşle hemen bir Weave değişimi başlatmasını sağlar. Uygulama, Bağlama kapatılana veya bir ağ hatası gibi bir olay (ör. ağ hatası) temel iletişim kanalını sonlandırana kadar Bağlama'dan değişim bağlamı istemeye devam edebilir.
Bağlayıcı Durumu Değişiklikleri
Binding, kullanım süresi boyunca uygulamaya Binding durumundaki değişiklikleri bildiren API etkinlikleri yayınlar. Örneğin, hazırlık başarılı olduğunda uygulama, Bağlayıcı'nın kullanıma hazır olduğunu bildiren bir etkinlik alır. Benzer şekilde, temel iletişim kanalı başarısız olursa, uygulamaya Binding (Bağlayıcı) durumunun artık hazır durumda olmadığını bildiren bir etkinlik gönderilir.
API etkinlikleri, uygulamaya Binding ayrıldığında sağlanan bir etkinlik geri çağırma işlevi aracılığıyla gönderilir.
Bağlama Ömrü
Bağlama, birden fazla yazılım bileşeni arasında ortak kullanıma olanak tanımak için referans sayılır. Bir Binding (Bağlama) ayrıldığında, bağlamaya tek bir referans oluşturulur. Uygulama, bu referansı gelecekte belirli bir zamanda yayınlamaktan sorumludur. Böylece Bağlayıcı, daha sonra yeniden kullanılabilir.
Bir uygulama Binding ile tamamlandığında bağlamada Close() işlevini çağırabilir. Bu işlem, uygulamanın Bağlama referansını serbest bırakır ve API etkinliklerinin bundan sonraki tüm iletimini engeller. Bir Bağlama'ya yapılan son referans serbest bırakıldığında 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 *
|
Kamu işlevleri |
|
---|---|
AddRef(void)
|
void
Bağlama nesnesi için 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ğlayıcı'yı yapılandırma işlemidir.
|
CanBePrepared(void) const
|
bool
|
Close(void)
|
void
Bağlama nesneyi kapatın ve bir referansı bırakın.
|
GetConnection() const
|
Bağlamayla ilişkili 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şe/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şe gönderilen/eşe giden 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 içine sığabilen maksimum Weave yük boyutunu alın.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
Eş düğümü ve ilişkili adresini / 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ğın mevcut durumunu alın.
|
IsAuthenticMessageFromPeer(const WeaveMessageInfo *msgInfo)
|
bool
Gelen belirli bir 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ğlayıcının hedefi olan eşle iletişim kurmak için yeni bir Exchange Bağlamı ayırın.
|
Release(void)
|
void
Bağlama nesnesi için bir referans bırakın.
|
RequestPrepare()
|
Bağlama'yı yapılandırmak ve hazırlamak için uygulamadan istekte bulunun.
|
Reset(void)
|
void
Bağlantıyı yapılandırılmamış bir 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 Binding'i kullanarak protokol katman kodu için bir etkinlik geri çağırma işlevi ayarlayın.
|
Herkese açık statik işlevler |
|
---|---|
DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
Bağlama API etkinlikleri için varsayılan işleyici.
|
Sınıflar |
|
---|---|
nl:: |
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 giriş parametreleri. |
nl:: |
Çıkış parametreleri bir Binding API etkinliğine çıkar. |
Herkese açık türler
@23
@23
Özellikler | |
---|---|
kGetPeerDescription_MaxLength
|
GetPeerDescription() tarafından döndürülen maksimum dize (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ılamaz. |
kEvent_BindingReady
|
Bağlamayla ilgili hazırlama işlemi başarılı oldu ve bağlama artık benzerle iletişim kurmak için kullanılabilir. |
kEvent_ConnectionEstablished
|
İstenen Weave bağlantısı kuruldu. |
kEvent_DefaultCheck
|
Uygulamada varsayılan olay işlemenin doğru olduğunu doğrulamak için kullanılır. |
kEvent_PASEParametersRequested
|
Uygulamadan, PASE oturumunun oluşturulması sırasında kullanılacak parametreleri sağlaması istenir. |
kEvent_PrepareFailed
|
Bağlantıda hazırlama işlemi başarısız oldu. |
kEvent_PrepareRequested
|
Uygulamadan, bağlamayı ağ yığını tarafından kullanılmak üzere yapılandırması ve hazırlaması istenir. |
kEvent_TAKEParametersRequested
|
Uygulamadan, GET oturumunun kurulumu sırasında kullanılacak parametreleri sağlaması istenir. |
Eyalet
State
Herkese açık özellikler
AppState
void * AppState
Kamu işlevleri
AddRef
void AddRef( void )
Bağlama nesnesi için 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ğlayıcı'yı yapılandırma işlemidir.
Uygulamalar, eşle iletişim kurmak üzere hazırlamadan önce Binding'i yapılandırmak için BeginConfiguration() işlevini çağırmalıdır.
Ayrıntılar | |
---|---|
İadeler |
Bağlamayı yapılandırmak için kullanılabilecek bir Binding::Configuration nesnesidir.
|
CanBePrepared
bool CanBePrepared( void ) const
Kapat
void Close( void )
Bağlama nesneyi kapatın ve bir referansı bırakın.
Bu yöntem çağrıldığında, bağlamanın Kapalı durumuna geçmesine neden olur. Devam eden tüm hazırlık işlemleri, bağlama için iptal edilir ve bağlama dahil olan tüm harici iletişim kaynakları serbest bırakılır.
Close() işlevi çağrılması, bağlamayla ilişkilendirilen referans sayısını azaltarak referans sayısı sıfıra gelirse nesneyi serbest bırakır.
GetConnection
WeaveConnection * GetConnection() const
Bağlamayla ilişkili Weave bağlantı nesnesini alın.
Ayrıntılar | |
---|---|
İadeler |
Bir WeaveConnection nesnesine işaretçi veya bağlamayla ilişkili bir bağlantı yoksa NULL.
|
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 bir WRMPConfig yapısına referans.
|
GetEncryptionType
uint8_t GetEncryptionType( void ) const
Eşe/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şlevi için işaretçi.
|
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
Eşe gönderilen/eşe giden 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 içine sığabilen maksimum Weave yük boyutunu alın.
WRM ile UDP dahil olmak üzere UDP için, döndürülen maksimum yük boyutu, sonuç olarak elde edilen Weave mesajının yapılandırılmış UDP MTU'yu aşmamasını sağlar.
Ayrıca bu yöntem, Weave yükünün sağlanan PacketBuffer üzerinde 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 adresini / 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ı aktarım (TCP, UDP veya WRMP ile UDP) kullanılırken kullanılabilir. Hazırlık işlemine 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 hazırlığı tamamlandığında (ör. DNS çözümlemesi tamamlandıktan sonra) adres bilgileri sunulur. Bağlama hazır olduğunda adres bilgileri, Bağlama sıfırlanana kadar 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 nesnesi hazırlandıktan sonra geçerlidir.
Ayrıntılar | |
---|---|
İadeler |
Eşin düğüm kimliği dokuma
|
GetProtocolLayerCallback
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
Bağın mevcut durumunu alın.
Ayrıntılar | |
---|---|
İadeler |
Bağlama durumu.
|
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
Gelen belirli bir iletinin yapılandırılmış eşten gelip gelmediğini ve kimliğinin uygun şekilde doğrulanıp doğrulanmadığını belirleyin.
Bu yöntemle, belirtilen mesajla ilgili aşağıdaki ayrıntılar onaylanır:
- İleti, bağlamanın eş düğümünden kaynaklanmıştır
- İleti, bağlama ile aynı aktarım türü üzerinden alındı. İleti bir bağlantı üzerinden alındıysa yöntem, iletinin bağlamayla ilişkilendirilen 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şiyor. Güvenlik kullanılmadan yapılandırılan bağlamalar için yöntem, gelen iletinin şifrelenip şifrelenmediğini onaylar.
Bu yöntem, eşlerin düğümden eşe ilk değişimden sonra yerel düğüme takasları kendiliğinden başlatabildiği WDM gibi protokollerde kullanılması amaçlanmıştır. Bu tür durumlarda bu yöntem, yerel düğümün gelen istenmeyen iletinin 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 onaylama, güvenlik açısından hiçbir değer sağlamaz. Yalnızca gönderen düğüm kimliği ve aktarım türlerinin eşleştiğini onaylar.)
Bağlama işlemi 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 özgün olarak eşten geliyorsa doğru değerini alır.
|
IsConnectionTransport
bool IsConnectionTransport() const
IsPreparing
bool IsPreparing( void ) const
Ayrıntılar | |
---|---|
İadeler |
Binding şu anda hazırlanıyorsa doğru değerini alır.
|
IsReady
bool IsReady( void ) const
Ayrıntılar | |
---|---|
İadeler |
Bağlama Hazır durumundaysa doğru değerini alır.
|
IsUDPTransport
bool IsUDPTransport() const
IsUnreliableUDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
NewExchangeContext
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
Bağlayıcının hedefi olan eşle iletişim kurmak için yeni bir Exchange Bağlamı ayırın.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
Lansman
void Release( void )
Bağlama nesnesi için bir referans bırakın.
Bağlama nesnesine başka referans yoksa bağlama kapatılır ve serbest bırakılır.
RequestPrepare
WEAVE_ERROR RequestPrepare()
Bağlama'yı yapılandırmak ve hazırlamak için uygulamadan istekte bulunun.
Protokol katman kodu, bu yöntemi yapılandırılmamış veya başarısız olan bir Binding'de kullanabilir. Bu sayede, uygulamanın yapılandırmasını ve bağlamayı kullanıma hazırlamasını isteyen uygulama (kEvent_PrepareRequested) için etkinlik tetiklenir.
Bu yöntem yalnızca NotYapılandırılmadı veya Başarısız durumundaki 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ğlantıyı yapılandırılmamış bir duruma sıfırlayın.
Reset() çağrıldığında, bağlama için devam etmekte olan tüm hazırlık işlemleri iptal edilir ve bağlamanın barındırdığı tüm harici iletişim kaynakları serbest bırakılır. Reset(), bağlamayı Yapılandırılmamış duruma getirir. Bu işlemden sonra bağlantı tekrar 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 Binding'i kullanarak protokol katman kodu için bir etkinlik geri çağırma işlevi ayarlayın.
Bu işlev, Binding için API etkinlikleri gerçekleştiğinde 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 )
Bağlama 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, uygulamanın etkinlik işleyici işlevine bağlama tarafından iletilenlerle aynı olmalıdır.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|