nl:: Menenun:: Binding
#include <src/lib/core/WeaveBinding.h>
Mengambil target yang diinginkan dari komunikasi Weave dan informasi konfigurasi terkait.
Ringkasan
Objek Binding mengidentifikasi target yang diinginkan dari komunikasi Weave (juga dikenal sebagai "peer"), bersama dengan kumpulan parameter konfigurasi yang menjelaskan bagaimana komunikasi dengan peer harus dilakukan. Binding tidak bergantung pada protokol aplikasi yang diucapkan di antara kedua belah pihak. Oleh karena itu, mereka menangkap "siapa" dan & "bagaimana" komunikasi, tetapi bukan "apa."
Aplikasi harus mengonfigurasi Binding dengan parameter yang spesifik untuk jenis saluran komunikasi yang diinginkan. Binding menyediakan dukungan untuk berbagai transport jaringan, termasuk TCP, UDP, UDP dengan Weave Trusted Messaging, dan Weave over BLE (WoBLE). Aplikasi juga dapat meminta penggunaan mekanisme keamanan tertentu 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 untuk detail selengkapnya.
Persiapan
Sebelum komunikasi dilakukan, Binding harus "disiapkan." Tindakan menyiapkan Binding melibatkan penetapan status yang diperlukan untuk komunikasi terjadi. 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, melakukan callback ke aplikasi saat proses selesai. Dengan cara ini, Binding menyembunyikan mekanisme komunikasi, sehingga memungkinkan aplikasi 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 bursa yang dihasilkan telah dikonfigurasi sebelumnya untuk komunikasi, memungkinkan aplikasi untuk segera memulai pertukaran Weave dengan pembanding. Aplikasi dapat terus meminta konteks bursa dari Binding sampai Binding ditutup, atau beberapa peristiwa, misalnya, kegagalan jaringan, akan menghentikan saluran komunikasi yang mendasarinya.
Perubahan Status Binding
Selama penggunaannya, Binding akan mengirimkan peristiwa API ke aplikasi yang menginformasikan perubahan pada 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 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.
Binding Seumur Hidup
Binding adalah referensi yang dihitung untuk mengizinkan penggunaan bersama di beberapa komponen software. Saat Binding dialokasikan, satu referensi ke binding akan dibuat. Aplikasi bertanggung jawab untuk melepaskan referensi ini pada masa mendatang sehingga Binding bebas untuk digunakan kembali selanjutnya.
Jika aplikasi selesai dengan Binding, aplikasi dapat memanggil Close() pada binding. Ini akan melepaskan referensi aplikasi ke Binding dan memblokir semua pengiriman peristiwa API lebih lanjut. Saat referensi terakhir ke Binding dilepaskan, referensi tersebut akan otomatis ditutup.
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 konfigurasi Binding.
|
CanBePrepared(void) const
|
bool
|
Close(void)
|
void
Menutup objek binding dan lepaskan referensi.
|
GetConnection() const
|
Dapatkan objek koneksi Weave yang dikaitkan dengan binding.
|
GetDefaultResponseTimeout() const
|
uint32_t
Dapatkan waktu tunggu respons bursa default yang akan digunakan saat berkomunikasi dengan pembanding.
|
GetDefaultWRMPConfig(void) const
|
const WRMPConfig &
Dapatkan konfigurasi WRMP default yang akan digunakan saat berkomunikasi dengan rekan.
|
GetEncryptionType(void) const
|
uint8_t
Mengambil jenis enkripsi pesan yang akan digunakan saat mengenkripsi pesan ke/dari pembanding.
|
GetEventCallback() const
|
EventCallback
Dapatkan fungsi yang akan dipanggil saat peristiwa API terjadi untuk Binding.
|
GetExchangeManager() const
|
|
GetKeyId(void) const
|
uint32_t
Ambil ID kunci enkripsi pesan yang akan digunakan saat mengenkripsi pesan ke/dari ke pembanding.
|
GetLogId(void) const
|
uint16_t
Dapatkan ID unik untuk binding.
|
GetMaxWeavePayloadSize(const System::PacketBuffer *msgBuf)
|
uint32_t
Dapatkan ukuran payload Weave maksimum yang bisa masuk ke dalam PacketBuffer yang disediakan.
|
GetPeerDescription(char *buf, uint32_t bufSize) const
|
void
Membuat string yang mendeskripsikan node pembanding dan informasi alamat / koneksi terkait.
|
GetPeerIPAddress(nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId) const
|
void
Ambil informasi alamat IP untuk pembanding, jika tersedia.
|
GetPeerNodeId(void) const
|
uint64_t
Ambil ID node pembanding binding.
|
GetProtocolLayerCallback(EventCallback & callback, void *& state) const
|
void
|
GetState(void) const
|
State
Ambil status binding saat ini.
|
IsAuthenticMessageFromPeer(const WeaveMessageInfo *msgInfo)
|
bool
Menentukan apakah pesan masuk tertentu berasal dari pembanding yang dikonfigurasi dan diautentikasi dengan 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 menjadi target binding.
|
Release(void)
|
void
Melepaskan referensi ke objek binding.
|
RequestPrepare()
|
Meminta aplikasi mengonfigurasi dan menyiapkan Binding.
|
Reset(void)
|
void
Reset binding kembali ke status yang belum dikonfigurasi.
|
SetDefaultResponseTimeout(uint32_t msec)
|
void
Setel waktu tunggu respons bursa default yang akan digunakan saat berkomunikasi dengan pembanding.
|
SetDefaultWRMPConfig(const WRMPConfig & wrmpConfig)
|
void
Tetapkan konfigurasi WRMP default yang akan digunakan saat berkomunikasi dengan pembanding.
|
SetEventCallback(EventCallback aEventCallback)
|
void
Menetapkan fungsi yang ditetapkan aplikasi untuk dipanggil saat peristiwa API terjadi untuk Binding.
|
SetProtocolLayerCallback(EventCallback callback, void *state)
|
void
Tetapkan 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 mengikat peristiwa API.
|
Class |
|
---|---|
nl:: |
Menyediakan antarmuka bergaya deklaratif untuk mengonfigurasi dan mempersiapkan objek Binding. |
Struct |
|
---|---|
nl:: |
Parameter input ke peristiwa API Binding. |
nl:: |
Parameter output ke peristiwa API Binding. |
Jenis publik
@23
@23
Properti | |
---|---|
kGetPeerDescription_MaxLength
|
Panjang maksimum string (termasuk karakter NUL) yang ditampilkan oleh GetPeerDescription(). |
Callback Peristiwa
void(* EventCallback)(void *apAppState, EventType aEvent, const InEventParam &aInParam, OutEventParam &aOutParam)
Jenis Peristiwa
EventType
Properti | |
---|---|
kEvent_BindingFailed
|
Binding gagal dan tidak dapat lagi digunakan untuk berkomunikasi dengan pembanding. |
kEvent_BindingReady
|
Tindakan persiapan pada binding berhasil dan binding sekarang dapat digunakan untuk berkomunikasi dengan pembanding. |
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 pembuatan 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 ini diminta untuk menyediakan parameter yang akan digunakan selama pembuatan sesi Take. |
Negara bagian
State
Atribut publik
StatusAplikasi
void * AppState
Fungsi publik
Referensi
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 |
|
Alokasi AlloSizedBuffer
WEAVE_ERROR AllocateRightSizedBuffer( PacketBuffer *& buf, const uint32_t desiredSize, const uint32_t minSize, uint32_t & outMaxPayloadSize )
BeginConfiguration
Configuration BeginConfiguration()
Menjadi proses konfigurasi Binding.
Aplikasi harus memanggil BeginConfiguration() untuk mengonfigurasi Binding sebelum mempersiapkannya untuk berkomunikasi dengan pembanding.
Detail | |
---|---|
Menampilkan |
Objek Binding::Configuration yang dapat digunakan untuk mengonfigurasi binding.
|
DapatDisiapkan
bool CanBePrepared( void ) const
Tutup
void Close( void )
Menutup objek binding dan lepaskan referensi.
Jika dipanggil, metode ini akan menyebabkan binding masuk ke status Tertutup. Semua tindakan persiapan yang sedang berlangsung untuk binding akan dibatalkan dan semua resource komunikasi eksternal yang dipegang oleh binding akan dilepaskan.
Memanggil Close() akan mengurangi jumlah referensi yang dikaitkan dengan binding, sehingga objek akan dibebaskan jika jumlah referensi menjadi nol.
Mendapatkan Connection
WeaveConnection * GetConnection() const
Dapatkan objek koneksi Weave yang dikaitkan dengan binding.
Detail | |
---|---|
Menampilkan |
Pointer ke objek WeaveConnection, atau NULL jika tidak ada koneksi yang terkait dengan binding.
|
GetDefaultResponseTimeout
uint32_t GetDefaultResponseTimeout() const
Dapatkan waktu tunggu respons bursa default yang akan digunakan saat berkomunikasi dengan pembanding.
Detail | |
---|---|
Menampilkan |
Waktu tunggu respons dalam md.
|
GetDefaultWRMPConfig
const WRMPConfig & GetDefaultWRMPConfig( void ) const
Dapatkan konfigurasi WRMP default yang akan digunakan saat berkomunikasi dengan rekan.
Detail | |
---|---|
Menampilkan |
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 pembanding.
GetEventCallback
EventCallback GetEventCallback() const
Dapatkan fungsi yang akan dipanggil saat peristiwa API terjadi untuk Binding.
Detail | |
---|---|
Menampilkan |
Pointer ke fungsi callback.
|
GetExchangeManager
WeaveExchangeManager * GetExchangeManager() const
ID GetKey
uint32_t GetKeyId( void ) const
Ambil ID kunci enkripsi pesan yang akan digunakan saat mengenkripsi pesan ke/dari ke pembanding.
ID GetLog
uint16_t GetLogId( void ) const
Dapatkan ID unik untuk binding.
GetMaxWeavePayloadSize
uint32_t GetMaxWeavePayloadSize( const System::PacketBuffer *msgBuf )
Dapatkan ukuran payload Weave maksimum yang bisa masuk ke dalam PacketBuffer yang disediakan.
Untuk UDP, termasuk UDP dengan WRM, ukuran payload maksimum yang ditampilkan akan memastikan pesan Weave yang dihasilkan tidak akan melimpahkan GMP UDP yang dikonfigurasi.
Selain itu, metode ini akan memastikan payload Weave tidak akan membebani PacketBuffer yang disediakan.
Detail | |||
---|---|---|---|
Parameter |
|
||
Menampilkan |
Ukuran payload Weave maksimum.
|
GetPeerDescription
void GetPeerDescription( char *buf, uint32_t bufSize ) const
Membuat string yang mendeskripsikan node pembanding dan informasi alamat / koneksi terkait.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
GetPeerIPAddress
void GetPeerIPAddress( nl::Inet::IPAddress & address, uint16_t & port, InterfaceId & interfaceId ) const
Ambil informasi alamat IP untuk pembanding, jika tersedia.
Ketersediaan informasi alamat IP pembanding bergantung pada status dan konfigurasi binding. Informasi alamat IP hanya tersedia saat menggunakan transport berbasis IP (TCP, UDP, atau UDP dengan WRMP). Sebelum persiapan dimulai, informasi alamat hanya tersedia jika telah ditetapkan secara eksplisit oleh aplikasi selama konfigurasi. Selama tahap persiapan, informasi alamat tersedia saat persiapan alamat selesai (misalnya setelah penyelesaian DNS selesai). Setelah Binding siap, informasi alamat akan tetap tersedia hingga Binding direset.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
GetPeerNodeId
uint64_t GetPeerNodeId( void ) const
Ambil ID node pembanding binding.
Hanya valid setelah objek binding disiapkan.
Detail | |
---|---|
Menampilkan |
ID node tenunan sejenis
|
GetProtocolLayerCallback
void GetProtocolLayerCallback( EventCallback & callback, void *& state ) const
GetState
State GetState( void ) const
Ambil status binding saat ini.
Detail | |
---|---|
Menampilkan |
Status binding.
|
IsAuthenticMessageFromPeer
bool IsAuthenticMessageFromPeer( const WeaveMessageInfo *msgInfo )
Menentukan apakah pesan masuk tertentu berasal dari pembanding yang dikonfigurasi dan diautentikasi dengan sesuai.
Metode ini mengonfirmasi detail berikut tentang pesan yang diberikan:
- Pesan berasal dari node pembanding binding
- Pesan diterima melalui jenis transportasi yang sama dengan binding. Jika pesan diterima melalui koneksi, metode ini juga mengonfirmasi bahwa pesan diterima melalui koneksi persis yang terkait dengan binding.
- Jenis dan kunci enkripsi yang digunakan untuk mengenkripsi pesan cocok dengan yang dikonfigurasi dalam 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 tempat pembanding dapat memulai pertukaran secara spontan kembali ke node lokal setelah pertukaran awal dari node ke pembanding. Dalam kasus semacam ini, metode tersebut memungkinkan node lokal mengonfirmasi bahwa pesan masuk yang tidak diinginkan telah dikirim oleh pembanding terkait. (Tentu saja, untuk Binding yang dikonfigurasi tanpa menggunakan enkripsi pesan, pernyataan ini tidak memberikan nilai dari perspektif keamanan. Ini hanya mengonfirmasi bahwa ID node pengirim dan jenis transportasi cocok.)
Perhatikan bahwa jika binding tidak dalam status Siap, metode ini akan selalu menampilkan false.
Detail | |||
---|---|---|---|
Parameter |
|
||
Menampilkan |
True jika pesan tersebut benar-benar berasal dari pembanding.
|
IsConnectionTransport
bool IsConnectionTransport() const
Sedang Disiapkan
bool IsPreparing( void ) const
Detail | |
---|---|
Menampilkan |
True jika Binding sedang disiapkan.
|
IsUDPTransport
bool IsUDPTransport() const
IsUnreliableUDPTransport
bool IsUnreliableUDPTransport() const
IsWRMTransport
bool IsWRMTransport() const
KonteksBaruExchange
WEAVE_ERROR NewExchangeContext( ExchangeContext *& appExchangeContext )
Alokasikan Konteks Exchange baru untuk berkomunikasi dengan pembanding yang menjadi target binding.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
Rilis
void Release( void )
Melepaskan referensi ke objek binding.
Jika tidak ada lagi referensi ke objek binding, binding akan ditutup dan dibebaskan.
PermintaanMinta
WEAVE_ERROR RequestPrepare()
Meminta aplikasi 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 agar mengonfigurasi dan menyiapkan binding untuk digunakan.
Metode ini hanya dapat dipanggil pada Binding di status NotConfigure atau Gagal.
Jika aplikasi tidak mendukung konfigurasi/penyiapan Binding yang diminta, metode akan gagal dengan WEAVE_ERROR_NOT_IMPLEMENTED.
Reset
void Reset( void )
Reset binding kembali ke status yang belum dikonfigurasi.
Saat Reset() dipanggil, semua tindakan persiapan yang sedang berlangsung untuk binding akan dibatalkan dan semua resource komunikasi eksternal yang dipegang oleh binding akan dilepaskan. Reset() menempatkan binding di status Tidak dikonfigurasikan, setelah itu binding tersebut dapat dikonfigurasi dan disiapkan lagi.
Reset() tidak mengubah jumlah referensi binding.
SetDefaultResponseTimeout
void SetDefaultResponseTimeout( uint32_t msec )
Setel waktu tunggu respons bursa default yang akan digunakan saat berkomunikasi dengan pembanding.
Detail | |||
---|---|---|---|
Parameter |
|
SetDefaultWRMPConfig
void SetDefaultWRMPConfig( const WRMPConfig & wrmpConfig )
Tetapkan konfigurasi WRMP default yang akan digunakan saat berkomunikasi dengan pembanding.
Detail | |||
---|---|---|---|
Parameter |
|
SetEventCallback
void SetEventCallback( EventCallback aEventCallback )
Menetapkan fungsi yang ditetapkan aplikasi untuk dipanggil saat peristiwa API terjadi untuk Binding.
Detail | |||
---|---|---|---|
Parameter |
|
SetProtocolLayerCallback
void SetProtocolLayerCallback( EventCallback callback, void *state )
Tetapkan 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
PengendaliPeristiwaDefault
void DefaultEventHandler( void *apAppState, EventType aEvent, const InEventParam & aInParam, OutEventParam & aOutParam )
Pengendali default untuk mengikat peristiwa API.
Aplikasi harus memanggil metode ini untuk peristiwa API yang tidak dikenali atau ditangani. Parameter yang diberikan harus sama dengan yang diteruskan oleh binding ke fungsi pengendali peristiwa milik aplikasi.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|