nl:: Weave:: Bağlama
#include <src/lib/core/WeaveBinding.h>
Weave iletişiminin hedeflenen hedefini ve ilişkili yapılandırma bilgilerini yakalar.
Özet
Bağlama nesnesi, eş ile iletişimin nasıl gerçekleşeceğini açıklayan bir yapılandırma parametreleri grubuyla birlikte Weave iletişiminin amaçlanan hedefini (""eş" olarak da bilinir) tanımlar. Bağlamalar, iki taraf arasında söylenen uygulama protokolünden bağımsızdır. Bu şekilde, iletişimin nasıl ve nasıl yakalandığını yakalar ancak "ne"yi yakalamazlar.
Uygulamalar, istenen iletişim kanalı türüne özel parametrelerle bir Bağlama yapılandırmalıdır. Bağlamalar; TCP, UDP, Weave Güvenilir Mesajlaşma ile UDP ve BLE üzerinden Wweve (WoBLE) dahil olmak üzere çeşitli ağ aktarımları için destek sağlar. Uygulamalar ayrıca, taraflar arasında gönderilen mesajları korumak için belirli güvenlik mekanizmalarının kullanılmasını da isteyebilir. Bunlar, CASE ve PASE oturumlarını ve uygulama grubu anahtarlarını içerir. Bağlama yapılandırma arayüzü, uygulamaların iletişimle ilgili şartlarını basit terimlerle belirtmesine olanak tanıyan bildirimli bir API stili kullanır.
Daha fazla bilgi için Bağlama::Yapılandırma dokümanlarına bakın.
Hazırlık
İletişim başlamadan önce Bağlama "hazırlanmalıdır". Bağlama hazırlama işlemi, iletişimin gerçekleşmesi için gereken durumun belirlenmesini içerir. Bunlar, eşin ağ adresini çözümleme, ağ bağlantısı kurma ve güvenlik anahtarları için pazarlık yapma gibi bilgileri içerebilir. Uygulama tarafından yapılandırıldıktan sonra Bağlama işlemi, işlem tamamlandığında uygulamaya geri çağrılmak üzere iletişim için hazırlanmak üzere gerekli tüm adımları gerçekleştirir. Böylece bağlamalar, iletişimin mekaniklerini gizleyerek uygulamaların üst düzey etkileşimlere odaklanmasına olanak tanır.
İ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) Weave exchange bağlamını ayırmak için Bağlama isteğinde bulunur. Sonuçta ortaya çıkan exchange bağlamı, iletişim için önceden yapılandırılmıştır. Böylece uygulama, eşle hemen Weave exchange'i başlatabilir. Uygulama, Bağlama kapatılana veya ağ hatası gibi bir etkinlik meydana gelene kadar temel bağlama kanalını feshedene kadar Bağlama'dan exchange bağlamı istemeye devam edebilir.
Bağlama Durum Değişiklikleri
Bağlama işlemi, uygulama sırasında uygulama sırasında Bağlama durumundaki değişiklikler hakkında bilgi veren API etkinliklerini yayınlar. Örneğin, hazırlık başarılı olduğunda uygulama, Bağlama'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 Bağlama özelliğinin artık hazır durumda olmadığını bildiren bir etkinlik yayınlanır.
API etkinlikleri, Bağlama ayrıldığında sağlanan bir etkinlik geri çağırma işlevi aracılığıyla uygulamaya gönderilir.
Bağlama Ömür Boyu
Bağlama, birden çok yazılım bileşeninde paylaşılan kullanıma izin vermek için sayılır. Bir Bağlama ayrıldığında bağlama için tek bir referans oluşturulur. Uygulama, gelecekte bu referansın serbest bırakılmasından sorumludur. Böylece Bağlama, sonraki kullanım için ücretsiz olur.
Uygulama bir Bağlama ile tamamlandığında bağlamada Close() çağrısı yapabilir. Bu, uygulamanın Bağlama referansını serbest bırakır ve API etkinliklerinin daha fazla yayınlanmasını engeller. Bir Bağlama için son referans yayınlandığında otomatik olarak kapatılır.
Herkese açık türler |
|
---|---|
@23{
|
enum |
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
Türvoid(*
|
EventType{
|
enum |
State
|
enum |
Herkese açık özellikler |
|
---|---|
AppState
|
void *
|
Herkese açık işlevler |
|
---|---|
AddRef(void)
|
void
Bağlama nesnesine 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 işlemini yapılandırma işlemi olmak.
|
CanBePrepared(void) const
|
bool
|
Close(void)
|
void
Bağlama nesnesini 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ş ile iletişim kurarken kullanılacak varsayılan exchange yanıtı zaman aşımını öğrenin.
|
GetDefaultWRMPConfig(void) const
|
const WRMPConfig &
Eş ile iletişim kurarken kullanılacak varsayılan WRMP yapılandırmasını alın.
|
GetEncryptionType(void) const
|
uint8_t
İletileri benzerler arasında/eşler arasında şifrelerken kullanılacak ileti şifreleme türünü alın.
|
GetEventCallback() const
|
EventCallback
Bağlama için bir API etkinliği gerçekleştiğinde çağrılacak işlevi alın.
|
GetExchangeManager() const
|
|
GetKeyId(void) const
|
uint32_t
İletileri eşler arasında/eşler arasında şifrelerken 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 Paket Paketinin içine sığabilen maksimum Weave yük boyutunu alın.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
Eş düğümünü 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ış benzerden olup olmadığını ve kimliğinin 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 nesnesine bir referans bırakın.
|
RequestPrepare()
|
Uygulamadan Bağlamayı yapılandırmasını ve hazırlamasını isteyin.
|
Reset(void)
|
void
Bağlamayı yapılandırılmamış duruma geri getirin.
|
SetDefaultResponseTimeout(uint32_t msec)
|
void
Eş ile iletişim kurulurken kullanılacak varsayılan exchange yanıtı zaman aşımını belirleyin.
|
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
|
void
Eş ile 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 özelliğini 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
API etkinliklerini bağlamak için varsayılan işleyici.
|
Sınıflar |
|
---|---|
nl:: |
Bir Bağlama nesnesini yapılandırmak ve hazırlamak için bildirim tarzında bir arayüz sağlar. |
Struct |
|
---|---|
nl:: |
Parametreleri bir Bağlama API etkinliğine girin. |
nl:: |
Parametreleri bir Bağlama API etkinliğine çıkış yapın. |
Herkese açık türler
@23
@23
Özellikler | |
---|---|
kGetPeerDescription_MaxLength
|
GetPeerDescription() tarafından döndürülen maksimum dize uzunluğu (NUL karakteri dahil). |
Etkinlik Geri Çağırması
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Etkinlik Türü
EventType
Özellikler | |
---|---|
kEvent_BindingFailed
|
Bağlama işlemi başarısız oldu ve artık eşle iletişim kurmak için kullanılamaz. |
kEvent_BindingReady
|
Bağlamaya hazırlama işlemi başarıyla tamamlandı. Bağlama işlemi, eşler arası iletişim kurmak için kullanılabilir. |
kEvent_ConnectionEstablished
|
İstenen Weave bağlantısı kuruldu. |
kEvent_DefaultCheck
|
Uygulamada doğru varsayılan etkinlik işleme işlemini doğrulamak için kullanılır. |
kEvent_PASEParametersRequested
|
Başvuruda, PASE oturumunun kuruluşunda kullanılacak parametrelerin sağlanması istenir. |
kEvent_PrepareFailed
|
Bağlamaya hazırlama işlemi başarısız oldu. |
kEvent_PrepareRequested
|
Uygulamadan, ağ yığını tarafından kullanılmak üzere bağlamanın yapılandırılması ve hazırlanması istenir. |
kEvent_TAKEParametersRequested
|
Başvuruda, take oturumu başlatılırken kullanılacak parametrelerin sağlanması istenir. |
Durum
State
Herkese açık özellikler
Uygulama Durumu
void * AppState
Herkese açık işlevler
Referans
void AddRef( void )
Bağlama nesnesine 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 |
|
ToplamaBoyut Boyutu Arabellek
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
Başlatıcı Yapılandırması
Configuration BeginConfiguration()
Bağlama işlemini yapılandırma işlemi olmak.
Uygulamalar, eş ile iletişim kurmaya hazırlanmadan önce Bağlama ayarını yapmak için FirstConfiguration() yöntemini çağırmalıdır.
Ayrıntılar | |
---|---|
İadeler |
Bağlamayı yapılandırmak için kullanılabilecek Bağlama::Yapılandırma nesnesi.
|
Hazırlanabilir
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 girmesine neden olur. Bağlama için devam eden 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.
Close() çağrısı yapıldığında bağlamayla ilişkili referans sayısı azalır ve referans sayısı sıfıra dönerse nesne serbest bırakılır.
AlmaBağlantısı
WeaveConnection * GetConnection() const
Bağlamayla ilişkili Weave bağlantı nesnesini alın.
Ayrıntılar | |
---|---|
İadeler |
Bir WeaveConnection nesnesinin işaretçisi veya bağlama ile ilgili bir bağlantı yoksa NULL.
|
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
Eş ile iletişim kurarken kullanılacak varsayılan exchange yanıtı zaman aşımını öğrenin.
Ayrıntılar | |
---|---|
İadeler |
Ms cinsinden yanıt zaman aşımı.
|
Varsayılan VarsayılanRRMPConfig
const WRMPConfig & GetDefaultWRMPConfig( void ) const
Eş ile 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 başvuru.
|
GetEncryptionType
uint8_t GetEncryptionType( void ) const
İletileri benzerler arasında/eşler arasında şifrelerken kullanılacak ileti şifreleme türünü alın.
GetEventCallBack
EventCallback GetEventCallback() const
Bağlama 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şlevinin işaretçisi.
|
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
İletileri eşler arasında/eşler arasında şifrelerken 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 Paket Paketinin içine sığabilen maksimum Weave yük boyutunu alın.
WRM ile UDP de dahil olmak üzere UDP için döndürülen maksimum yük boyutu, sonuçta ortaya çıkan Weave mesajının yapılandırılmış UDP MTU'dan taşmamasını sağlar.
Ayrıca, bu yöntem Weave yükünün sağlanan PaketetBuffer'ı 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ünü ve ilişkili adres / bağlantı bilgilerini açıklayan bir dize oluşturur.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
GetPeerIPAdresi
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 (TCP, UDP veya WRMP ile UDP) kullanılırken kullanılabilir. Hazırlanmaya başlamadan önce adres bilgileri yalnızca yapılandırma sırasında uygulama tarafından açıkça belirlenmişse kullanılabilir. Hazırlık aşamasında adres bilgileri, adres hazırlama işlemi tamamlandığında (ör. DNS çözümlemesi tamamlandıktan sonra) kullanılabilir. Bağlama hazır olduğunda Bağlama sıfırlanana 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 nesnesi hazırlandıktan sonra geçerli olur.
Ayrıntılar | |
---|---|
İadeler |
Eşin dokuma düğüm kimliği
|
GetProtocolLayerGeri Çağırma
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.
|
IsAuthenticMessageFrom Eşi
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
Belirli bir gelen iletinin yapılandırılmış benzerden olup olmadığını ve kimliğinin doğrulanıp doğrulanmadığını belirleyin.
Bu yöntemle, söz konusu iletiyle ilgili aşağıdaki ayrıntılar doğrulanır:
- İleti, bağlamanın eş düğümünden geliyor
- İleti, bağlamayla aynı aktarım türü üzerinden alındı. İleti bir bağlantı üzerinden alındıysa 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ğlamada yapılandırılan şifreleme anahtarıyla eşleşir. Bu yöntem, güvenlik kullanılmadan yapılandırılan bağlamalar için gelen iletinin şifre OLMADIĞINI onaylar.
Bu yöntem, eşler tarafından düğümden eşe ilk aktarımdan sonra spontane olarak yerel düğüme exchange başlatılabileceği WDM gibi protokollerde kullanılmak üzere tasarlanmıştır. Bu tür durumlarda yöntem, yerel düğümün, gelen benzer 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 doğrulama güvenlik açısından değer vermez. Bu yalnızca gönderen düğüm kimliğinin ve aktarım türlerinin eşleştiğini onaylar.)
Bağlama özelliği Hazır durumunda değilse bu yöntemin her zaman yanlış değerini döndüreceğini unutmayın.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
||
İadeler |
İleti, benzerler tarafından özgün olarak gönderilmişse doğru.
|
IsConnection Nakil
bool IsConnectionTransport() const
Hazırlanıyor
bool IsPreparing( void ) const
Ayrıntılar | |
---|---|
İadeler |
Bağlama şu anda hazırlanıyorsa true değerini alır.
|
UDPTransport
bool IsUDPTransport() const
Güvenilir Olmayan UDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTaşıma
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 |
|
||||||||
Döndürülen Değerler |
|
Serbest bırak
void Release( void )
Bağlama nesnesine bir referans bırakın.
Bağlama nesnesine daha fazla referans yoksa bağlama kapatılıp serbest bırakılır.
İstek Hazırlama
WEAVE_ERROR RequestPrepare()
Uygulamadan Bağlamayı yapılandırmasını ve hazırlamasını isteyin.
Protokol katman kodu, yapılandırılmamış veya başarısız olan bir Bağlama üzerinde bu yöntemi kullanabilir.
Bu yöntem yalnızca NotConfigured veya NotFailed (Bağlam Dışı) durumundaki Bağlamalarda çağrılabilir.
Uygulama, istek üzerine yapılandırmayı/bağlamaları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 geri getirin.
Sıfırla() çağrıldığında, bağlama için devam eden 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. Sıfırla(), bağlamayı Yapılandırılmamış durumuna yerleştirir ve yapılandırmadan sonra tekrar yapılandırılabilir.
Sıfırla(), bağlamanın referans sayısını değiştirmez.
Varsayılan Varsayılan Zaman Aşımı
void SetDefaultResponseTimeout( uint32_t msec )
Eş ile iletişim kurulurken kullanılacak varsayılan exchange yanıtı zaman aşımını belirleyin.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
Varsayılan Varsayılan RRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
Eş ile iletişim kurarken kullanılacak varsayılan WRMP yapılandırmasını ayarlayın.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
Etkinlik Etkinliği Geri Çağırması
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 |
|
SetProtocolLayerGeri Çağırma
void SetProtocolLayerCallback( EventCallback callback, void *state )
Bir uygulama adına Bağlama özelliğini kullanarak protokol katmanı kodu için bir etkinlik geri çağırma işlevi ayarlayın.
Bu işlev, Bağlama 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
VarsayılanEtkinlikHandler
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
API etkinliklerini bağlamak 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 ile iletilen parametrelerle aynı olmalıdır.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|