nl:: Weave:: Binding
#include <src/lib/core/WeaveBinding.h>
Menangkap target yang diinginkan dari komunikasi Weave dan informasi konfigurasi terkait.
Ringkasan
Objek Binding mengidentifikasi target komunikasi Weave yang dimaksud (juga dikenal sebagai "peer"), beserta kumpulan parameter konfigurasi yang menjelaskan cara melakukan komunikasi dengan peer. Pengikatan tidak bergantung pada protokol aplikasi yang diucapkan antara kedua pihak. Dengan demikian, mereka menangkap "siapa" dan "bagaimana" dari suatu komunikasi, tetapi bukan "apa."
Aplikasi harus mengonfigurasi Binding dengan parameter khusus untuk jenis saluran komunikasi yang diinginkan. Binding menyediakan dukungan untuk berbagai transport jaringan, termasuk TCP, UDP, UDP dengan Weave Reliable Messaging, dan Weave over BLE (WoBLE). Aplikasi juga dapat meminta penggunaan mekanisme keamanan spesifik untuk melindungi pesan yang dikirim antarpihak. Ini termasuk sesi CASE dan PASE, serta kunci grup aplikasi. Antarmuka untuk mengonfigurasi Binding menggunakan gaya API deklaratif yang memungkinkan aplikasi menyatakan persyaratannya untuk komunikasi secara sederhana.
Lihat dokumentasi untuk Binding::Configuration guna mengetahui detail selengkapnya.
Persiapan
Sebelum komunikasi dilakukan, Binding harus "disiapkan". Tindakan menyiapkan Binding melibatkan penetapan status yang diperlukan agar komunikasi dapat terjadi. Hal ini dapat mencakup hal-hal seperti: menyelesaikan alamat jaringan pembanding, membuat koneksi jaringan, dan menegosiasikan kunci keamanan. Setelah dikonfigurasi oleh aplikasi, Binding akan menangani semua langkah yang diperlukan untuk mempersiapkan komunikasi, dan melakukan callback ke aplikasi saat proses selesai. Dengan cara ini, Binding menyembunyikan mekanisme komunikasi, sehingga aplikasi dapat berkonsentrasi pada interaksi tingkat tinggi.
Komunikasi
Setelah disiapkan, Binding akan siap digunakan. Dalam status ini, aplikasi (atau lebih umum, kode lapisan protokol yang bekerja atas nama aplikasi) meminta Binding untuk mengalokasikan konteks pertukaran Weave. Konteks pertukaran yang dihasilkan telah dikonfigurasi sebelumnya untuk komunikasi, sehingga aplikasi dapat segera memulai pertukaran Weave dengan peer. Aplikasi dapat terus meminta konteks pertukaran dari Binding hingga saat Binding ditutup, atau beberapa peristiwa, misalnya kegagalan jaringan, menghentikan saluran komunikasi yang mendasarinya.
Perubahan Status Binding
Selama penggunaannya, Binding akan mengirimkan peristiwa API ke aplikasi yang memberitahukan perubahan status Binding. Misalnya, saat persiapan berhasil, aplikasi akan menerima peristiwa yang menginformasikan bahwa Binding siap digunakan. Demikian pula, jika saluran komunikasi yang mendasarinya gagal, peristiwa akan dikirim ke aplikasi yang memberitahukan bahwa Binding tidak lagi dalam status siap.
Peristiwa API dikirim ke aplikasi melalui fungsi callback peristiwa yang disediakan saat Binding dialokasikan.
Masa Berlaku Binding
Binding adalah referensi yang dihitung untuk memungkinkan penggunaan bersama di beberapa komponen software. Saat Binding dialokasikan, referensi tunggal ke binding akan dibuat. Aplikasi bertanggung jawab untuk merilis referensi ini pada masa mendatang sehingga Binding bebas untuk digunakan kembali pada masa mendatang.
Setelah selesai dengan Binding, aplikasi dapat memanggil Close() di binding. Tindakan ini akan merilis referensi aplikasi ke Binding dan memblokir semua pengiriman peristiwa API lebih lanjut. Saat referensi terakhir ke Binding dirilis, referensi tersebut akan ditutup secara otomatis.
Jenis publik |
|
---|---|
@23{
|
enum |
EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
|
typedefvoid(*
|
EventType{
|
enum |
State
|
enum |
Atribut publik |
|
---|---|
AppState
|
void *
|
Fungsi publik |
|
---|---|
AddRef(void)
|
void
Mencadangkan referensi ke objek binding.
|
AdjustResponseTimeout(ExchangeContext *apExchangeContext) const
|
Konfigurasi ulang Konteks Exchange yang ada untuk menyesuaikan waktu tunggu respons.
|
AllocateRightSizedBuffer(PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize)
|
|
BeginConfiguration()
|
Menjadi proses mengonfigurasi Binding.
|
CanBePrepared(void) const
|
bool
|
Close(void)
|
void
Tutup objek binding dan lepaskan referensi.
|
GetConnection() const
|
Mendapatkan objek koneksi Weave yang terkait dengan binding.
|
GetDefaultResponseTimeout() const
|
uint32_t
Mendapatkan waktu tunggu respons pertukaran default untuk digunakan saat berkomunikasi dengan peer.
|
GetDefaultWRMPConfig(void) const
|
const WRMPConfig &
Mendapatkan konfigurasi WRMP default yang akan digunakan saat berkomunikasi dengan peer.
|
GetEncryptionType(void) const
|
uint8_t
Mengambil jenis enkripsi pesan yang akan digunakan saat mengenkripsi pesan ke/dari peer.
|
GetEventCallback() const
|
EventCallback
Mendapatkan fungsi yang akan dipanggil saat peristiwa API terjadi untuk Binding.
|
GetExchangeManager() const
|
|
GetKeyId(void) const
|
uint32_t
Mengambil ID kunci enkripsi pesan yang akan digunakan saat mengenkripsi pesan ke/dari ke peer.
|
GetLogId(void) const
|
uint16_t
Dapatkan ID unik untuk binding.
|
GetMaxWeavePayloadSize(const System::PacketBuffer *msgBuf)
|
uint32_t
Mendapatkan ukuran payload Weave maksimum yang dapat dimuat di dalam PacketBuffer yang disediakan.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
Membuat string yang mendeskripsikan node peer dan informasi alamat / koneksi terkait.
|
GetPeerIPAddress(nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const
|
void
Mengambil informasi alamat IP untuk peer, jika tersedia.
|
GetPeerNodeId(void) const
|
uint64_t
Ambil ID node peer binding.
|
GetProtocolLayerCallback(EventCallback & callback, void *& state) const
|
void
|
GetState(void) const
|
State
Mengambil status binding saat ini.
|
IsAuthenticMessageFromPeer(const WeaveMessageInfo *msgInfo)
|
bool
Menentukan apakah pesan masuk tertentu berasal dari peer yang dikonfigurasi dan diautentikasi secara sesuai.
|
IsConnectionTransport() const
|
bool
|
IsPreparing(void) const
|
bool
|
IsReady(void) const
|
bool
|
IsUDPTransport() const
|
bool
|
IsUnreliableUDPTransport() const
|
bool
|
IsWRMTransport() const
|
bool
|
NewExchangeContext(ExchangeContext *& appExchangeContext)
|
Alokasikan Konteks Exchange baru untuk berkomunikasi dengan pembanding yang merupakan target binding.
|
Release(void)
|
void
Merilis referensi ke objek binding.
|
RequestPrepare()
|
Minta aplikasi untuk mengonfigurasi dan menyiapkan Binding.
|
Reset(void)
|
void
Mereset binding kembali ke status yang tidak dikonfigurasi.
|
SetDefaultResponseTimeout(uint32_t msec)
|
void
Menyetel waktu tunggu respons pertukaran default untuk digunakan saat berkomunikasi dengan pembanding.
|
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
|
void
Menyetel konfigurasi WRMP default yang akan digunakan saat berkomunikasi dengan pembanding.
|
SetEventCallback(EventCallback aEventCallback)
|
void
Tetapkan fungsi yang ditentukan aplikasi untuk dipanggil saat peristiwa API terjadi untuk Binding.
|
SetProtocolLayerCallback(EventCallback callback, void *state)
|
void
Menetapkan fungsi callback peristiwa untuk kode lapisan protokol menggunakan Binding atas nama aplikasi.
|
Fungsi statis publik |
|
---|---|
DefaultEventHandler(void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam)
|
void
Pengendali default untuk peristiwa API binding.
|
Class |
|
---|---|
nl:: |
Menyediakan antarmuka gaya deklaratif untuk mengonfigurasi dan menyiapkan objek Binding. |
Struct |
|
---|---|
nl:: |
Masukkan parameter ke peristiwa Binding API. |
nl:: |
Menghasilkan parameter ke peristiwa Binding API. |
Jenis publik
@23
@23
Properti | |
---|---|
kGetPeerDescription_MaxLength
|
Panjang maksimum string (termasuk karakter NUL) yang ditampilkan oleh GetPeerDescription(). |
EventCallback
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
EventType
EventType
Properti | |
---|---|
kEvent_BindingFailed
|
Pengikatan gagal dan tidak dapat lagi digunakan untuk berkomunikasi dengan peer. |
kEvent_BindingReady
|
Tindakan persiapan pada binding berhasil dan binding kini dapat digunakan untuk berkomunikasi dengan peer. |
kEvent_ConnectionEstablished
|
Koneksi Weave yang diminta telah dibuat. |
kEvent_DefaultCheck
|
Digunakan untuk memverifikasi penanganan peristiwa default yang benar dalam aplikasi. |
kEvent_PASEParametersRequested
|
Aplikasi diminta untuk menyediakan parameter yang akan digunakan selama pembentukan sesi PASE. |
kEvent_PrepareFailed
|
Tindakan persiapan pada binding gagal. |
kEvent_PrepareRequested
|
Aplikasi diminta untuk mengonfigurasi dan menyiapkan binding untuk digunakan oleh stack jaringan. |
kEvent_TAKEParametersRequested
|
Aplikasi diminta untuk menyediakan parameter yang akan digunakan selama penyiapan sesi take. |
Negara Bagian
State
Atribut publik
AppState
void * AppState
Fungsi publik
AddRef
void AddRef( void )
Mencadangkan referensi ke objek binding.
AdjustResponseTimeout
WEAVE_ERROR AdjustResponseTimeout( ExchangeContext *apExchangeContext ) const
Konfigurasi ulang Konteks Exchange yang ada untuk menyesuaikan waktu tunggu respons.
Detail | |||
---|---|---|---|
Parameter |
|
AllocateRightSizedBuffer
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
BeginConfiguration
Configuration BeginConfiguration()
Menjadi proses mengonfigurasi Binding.
Aplikasi harus memanggil BeginConfiguration() untuk mengonfigurasi Binding sebelum menyiapkannya untuk berkomunikasi dengan peer.
Detail | |
---|---|
Hasil |
Objek Binding::Configuration yang dapat digunakan untuk mengonfigurasi binding.
|
CanBePrepared
bool CanBePrepared( void ) const
Tutup
void Close( void )
Tutup objek binding dan lepaskan referensi.
Saat dipanggil, metode ini menyebabkan binding memasuki status Tertutup. Setiap tindakan persiapan yang sedang berlangsung untuk binding dibatalkan, dan semua resource komunikasi eksternal yang ditahan oleh binding dirilis.
Memanggil Close() akan mengurangi jumlah referensi yang terkait dengan binding, sehingga membebaskan objek jika jumlah referensi menjadi nol.
GetConnection
WeaveConnection * GetConnection() const
Mendapatkan objek koneksi Weave yang terkait dengan binding.
Detail | |
---|---|
Hasil |
Pointer ke objek WeaveConnection, atau NULL jika tidak ada koneksi yang terkait dengan binding.
|
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
Mendapatkan waktu tunggu respons pertukaran default untuk digunakan saat berkomunikasi dengan peer.
Detail | |
---|---|
Hasil |
Waktu tunggu respons dalam md.
|
GetDefaultWRMPConfig
const WRMPConfig & GetDefaultWRMPConfig( void ) const
Mendapatkan konfigurasi WRMP default yang akan digunakan saat berkomunikasi dengan peer.
Detail | |
---|---|
Hasil |
Referensi ke struktur WRMPConfig yang berisi nilai konfigurasi default.
|
GetEncryptionType
uint8_t GetEncryptionType( void ) const
Mengambil jenis enkripsi pesan yang akan digunakan saat mengenkripsi pesan ke/dari peer.
GetEventCallback
EventCallback GetEventCallback() const
Mendapatkan fungsi yang akan dipanggil saat peristiwa API terjadi untuk Binding.
Detail | |
---|---|
Hasil |
Pointer ke fungsi callback.
|
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
GetKeyId
uint32_t GetKeyId( void ) const
Mengambil ID kunci enkripsi pesan yang akan digunakan saat mengenkripsi pesan ke/dari ke peer.
GetLogId
uint16_t GetLogId( void ) const
Dapatkan ID unik untuk binding.
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const System::PacketBuffer *msgBuf )
Mendapatkan ukuran payload Weave maksimum yang dapat dimuat di dalam PacketBuffer yang disediakan.
Untuk UDP, termasuk UDP dengan WRM, ukuran payload maksimum yang ditampilkan akan memastikan pesan Weave yang dihasilkan tidak akan melebihi MTU UDP yang dikonfigurasi.
Selain itu, metode ini akan memastikan payload Weave tidak akan melebihi PacketBuffer yang disediakan.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
Ukuran payload Weave maksimum.
|
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
Membuat string yang mendeskripsikan node peer dan informasi alamat / koneksi terkait.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
GetPeerIPAddress
void GetPeerIPAddress( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId ) const
Mengambil informasi alamat IP untuk peer, jika tersedia.
Ketersediaan informasi alamat IP peer bergantung pada status dan konfigurasi binding. Informasi alamat IP hanya tersedia saat menggunakan transpor berbasis IP (TCP, UDP, atau UDP dengan WRMP). Sebelum memulai persiapan, informasi alamat hanya tersedia jika telah disetel secara jelas oleh aplikasi selama konfigurasi. Selama fase persiapan, informasi alamat tersedia saat persiapan alamat selesai (misalnya, setelah resolusi DNS selesai). Setelah Binding siap, informasi alamat tetap tersedia hingga Binding direset.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
Ambil ID node peer binding.
Hanya berlaku setelah objek binding disiapkan.
Detail | |
---|---|
Hasil |
ID node tenun pembanding
|
GetProtocolLayerCallback
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
Mengambil status binding saat ini.
Detail | |
---|---|
Hasil |
Status binding.
|
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
Menentukan apakah pesan masuk tertentu berasal dari peer yang dikonfigurasi dan diautentikasi secara sesuai.
Metode ini mengonfirmasi detail berikut tentang pesan yang diberikan:
- Pesan berasal dari node peer pengikatan
- Pesan diterima melalui jenis transport yang sama seperti binding. Jika pesan diterima melalui koneksi, metode ini juga mengonfirmasi bahwa pesan diterima melalui koneksi yang tepat yang terkait dengan binding.
- Kunci dan jenis enkripsi yang digunakan untuk mengenkripsi pesan cocok dengan yang dikonfigurasi di binding. Untuk binding yang dikonfigurasi tanpa penggunaan keamanan, metode ini mengonfirmasi bahwa pesan masuk TIDAK dienkripsi.
Metode ini dimaksudkan untuk digunakan dalam protokol seperti WDM di mana peer dapat secara spontan memulai pertukaran kembali ke node lokal setelah pertukaran awal dari node ke peer. Dalam kasus seperti itu, metode tersebut memungkinkan node lokal untuk mengonfirmasi bahwa pesan masuk yang tidak diminta telah dikirim oleh peer terkait. (Tentu saja, untuk Binding yang dikonfigurasi tanpa penggunaan enkripsi pesan, pernyataan ini tidak memberikan nilai apa pun dari perspektif keamanan. Tindakan ini hanya mengonfirmasi bahwa ID node pengirim dan jenis transpor cocok.)
Perhatikan bahwa jika binding tidak dalam status Siap, metode ini akan selalu menampilkan nilai salah.
Detail | |||
---|---|---|---|
Parameter |
|
||
Hasil |
True jika pesan secara autentik dari pembanding.
|
IsConnectionTransport
bool IsConnectionTransport() const
IsUDPTransport
bool IsUDPTransport() const
IsUnreliableUDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
NewExchangeContext
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
Alokasikan Konteks Exchange baru untuk berkomunikasi dengan pembanding yang merupakan target binding.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai Pengembalian |
|
Rilis
void Release( void )
Merilis referensi ke objek binding.
Jika tidak ada lagi referensi ke objek binding, binding akan ditutup dan dibebaskan.
RequestPrepare
WEAVE_ERROR RequestPrepare()
Minta aplikasi untuk mengonfigurasi dan menyiapkan Binding.
Kode lapisan protokol dapat menggunakan metode ini pada Binding yang belum dikonfigurasi, atau gagal, untuk memicu peristiwa ke aplikasi (kEvent_PrepareRequested) yang meminta untuk mengonfigurasi dan menyiapkan binding untuk digunakan.
Metode ini hanya dapat dipanggil pada Binding dalam status NotConfigured atau Failed.
Jika aplikasi tidak mendukung konfigurasi/persiapan Binding sesuai permintaan, metode ini akan gagal dengan WEAVE_ERROR_NOT_IMPLEMENTED.
Reset
void Reset( void )
Mereset binding kembali ke status yang tidak dikonfigurasi.
Saat Reset() dipanggil, semua tindakan persiapan yang sedang berlangsung untuk binding akan dibatalkan dan semua resource komunikasi eksternal yang ditahan oleh binding akan dirilis. Reset() menempatkan binding dalam status Tidak dikonfigurasi, setelah itu binding dapat dikonfigurasi dan disiapkan lagi.
Reset() tidak mengubah jumlah referensi binding.
SetDefaultResponseTimeout
void SetDefaultResponseTimeout( uint32_t msec )
Menyetel waktu tunggu respons pertukaran default untuk digunakan saat berkomunikasi dengan pembanding.
Detail | |||
---|---|---|---|
Parameter |
|
SetDefaultWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
Menyetel konfigurasi WRMP default yang akan digunakan saat berkomunikasi dengan pembanding.
Detail | |||
---|---|---|---|
Parameter |
|
SetEventCallback
void SetEventCallback( EventCallback aEventCallback )
Tetapkan fungsi yang ditentukan aplikasi untuk dipanggil saat peristiwa API terjadi untuk Binding.
Detail | |||
---|---|---|---|
Parameter |
|
SetProtocolLayerCallback
void SetProtocolLayerCallback( EventCallback callback, void *state )
Menetapkan fungsi callback peristiwa untuk kode lapisan protokol menggunakan Binding atas nama aplikasi.
Fungsi ini akan dipanggil selain fungsi callback yang ditentukan aplikasi saat peristiwa API terjadi untuk Binding.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
Fungsi statis publik
DefaultEventHandler
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Pengendali default untuk peristiwa API binding.
Aplikasi diharuskan memanggil metode ini untuk setiap peristiwa API yang tidak dikenali atau ditangani. Parameter yang diberikan harus sama dengan parameter yang diteruskan oleh binding ke fungsi pengendali peristiwa aplikasi.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|