nl::Weave::Profiles::DataManagement_Legacy::Binding

#include <src/lib/profiles/data-management/Legacy/Binding.h>

Class Binding mengelola status komunikasi atas nama entity aplikasi menggunakan Weave.

Ringkasan

Ketika aplikasi ingin menggunakan Weave untuk berkomunikasi dengan entitas jarak jauh, ada berbagai opsi. Class Binding menyusun opsi ini dan mengaturnya sedemikian rupa sehingga hal-hal yang mudah menjadi mudah dan hal-hal yang lebih sulit setidaknya dapat diterapkan. Opsi yang dicakup meliputi:

  • komunikasi UDP unicast dengan {i> node<i} rekan yang diketahui.
  • Siaran UDP dengan "any" {i>node<i}.
  • komunikasi WRMP unicast dengan {i> node<i} rekan yang diketahui.
  • komunikasi TCP dengan {i>node<i} rekan yang dikenal.
  • komunikasi TCP dengan titik akhir layanan yang diketahui, menggunakan {i>instance<i} pengelola layanan untuk menyiapkan berbagai hal.
  • komunikasi TCP berdasarkan koneksi yang telah dibuat sebelumnya.

Konstruktor dan Destruktor

Binding(void)
Konstruktor default untuk objek Binding.
~Binding(void)
Destruktor untuk objek Binding.

Jenis publik

@165{
  kState_Incomplete = 0,
  kState_Completing = 1,
  kState_Complete = 2
}
enum
Kumpulan status objek Binding.

Atribut publik

mAuthMode
WeaveAuthMode
Mode autentikasi Weave yang akan digunakan.
mConnection
Pointer ke koneksi Weave yang saat ini digunakan dalam binding ini.
mEngine
Pointer ke objek ProtocolEngine yang terkait dengan Binding ini.
mPeerNodeId
uint64_t
ID node 64-bit dari target binding.
mServiceMgr
Pointer ke objek ServiceManager (opsional) yang akan digunakan dalam menyelesaikan binding ini.
mState
uint8_t
Status objek Binding saat ini.
mTransport
uint8_t
Transport yang akan digunakan dalam menyelesaikan Binding ini.

Fungsi publik

CompleteConfirm(WeaveConnection *aConnection)
void
Menangani konfirmasi permintaan binding.
CompleteConfirm(StatusReport & aReport)
void
Menangani kegagalan permintaan binding.
CompleteConfirm(void)
void
Menangani konfirmasi permintaan binding.
CompleteRequest(ProtocolEngine *aEngine)
Meminta penyelesaian binding.
Connect(WeaveConnection *aConnection)
Selesaikan binding TCP dengan menyediakan koneksi yang lengkap.
Finalize(void)
void
"Belum selesai" mengikat dan melepaskannya.
Finalize(WEAVE_ERROR aErr)
void
"Belum selesai" mengikat dan melepaskannya.
Free(void)
void
Hapus status binding.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Buat objek ExchangeContext dari Binding.
IncompleteIndication(StatusReport & aReport)
void
Menangani kegagalan binding.
Init(const uint64_t & aPeerNodeId)
Lakukan inisialisasi Binding hanya dengan ID node.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Lakukan inisialisasi objek Binding berdasarkan ID peer dan transpor.
Init(const uint64_t & aServiceEpt, WeaveServiceManager *aServiceMgr, WeaveAuthMode aAuthMode)
Lakukan inisialisasi objek Binding ke endpoint layanan.
Init(WeaveConnection *aConnection)
Lakukan inisialisasi objek Binding dengan WeaveConnection.
IsComplete(void)
bool
Periksa apakah binding sudah selesai.
IsFree(void)
bool
Cek adalah binding gratis.
UncompleteRequest(void)
void
Menyebabkan binding tidak lengkap.
UncompleteRequest(WEAVE_ERROR aErr)
void
Menyebabkan binding tidak lengkap.

Jenis publik

@165

 @165

Kumpulan status objek Binding.

Properti
kState_Complete

Status Binding lengkap dan siap digunakan.

kState_Completing

Status Binding sedang dalam proses penyelesaian.

kState_Incomplete

Status awal (dan akhir) Binding.

Atribut publik

mAuthMode

WeaveAuthMode mAuthMode

Mode autentikasi Weave yang akan digunakan.

(READ_ONLY)

Ini adalah mode autentikasi yang digunakan dalam semua komunikasi yang diatur oleh binding ini.

mConnection

WeaveConnection * mConnection

Pointer ke koneksi Weave yang saat ini digunakan dalam binding ini.

(HANYA BACA)

Pengikatan TCP dapat diinisialisasi langsung dengan koneksi atau bisa juga mengalokasikannya pada waktu penyelesaian.

mEngine

ProtocolEngine * mEngine

Pointer ke objek ProtocolEngine yang terkait dengan Binding ini.

Binding umumnya selesai dalam kaitannya dengan mesin protokol tertentu, yang sebagian besar digunakan sebagai cara mengakses MessageLayer. Di sinilah kita melacaknya.

mPeerNodeId

uint64_t mPeerNodeId

ID node 64-bit dari target binding.

(HANYA BACA)

Setiap Binding memiliki entity target, yang dinamai di sini. Selain ID node Weave, endpoint ini mungkin juga diberi nama endpoint layanan.

mServiceMgr

nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager * mServiceMgr

Pointer ke objek ServiceManager (opsional) yang akan digunakan dalam menyelesaikan binding ini.

(HANYA BACA)

Saat mengikat ke layanan Weave, ID endpoint layanan 64-bit dapat diberikan pada waktu inisialisasi sebagai pengganti ID node Weave. Dalam hal ini, objek ServiceManager juga diperlukan untuk menyelesaikan binding. Binding TCP atau WRMP normal tidak memerlukan objek ServiceManager.

mState

uint8_t mState

Status objek Binding saat ini.

Hanya satu "selesai" bisa berjalan pada satu waktu dan, dalam hal apa pun, jika Anda meminta untuk menyelesaikan binding yang telah selesai, fungsi tersebut hanya akan segera memanggil fungsi konfirmasi. Variabel status di bawah melacak status saat ini dan bertindak sebagai penguncian.

mTransport

uint8_t mTransport

Transport yang akan digunakan dalam menyelesaikan Binding ini.

(HANYA BACA)

Nilai yang mungkin untuk mTransport ditentukan di DMConstants.h.

Fungsi publik

Binding

 Binding(
  void
)

Konstruktor default untuk objek Binding.

Menghapus semua status internal.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Menangani konfirmasi permintaan binding.

Detail
Parameter
[in] aConnection
Pointer ke WeaveConnection aktif ke target binding.

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Menangani kegagalan permintaan binding.

Detail
Parameter
[in] aReport
Referensi ke objek StatusReport yang menjelaskan kegagalan.

CompleteConfirm

void CompleteConfirm(
  void
)

Menangani konfirmasi permintaan binding.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Meminta penyelesaian binding.

Penyelesaian binding, setidaknya untuk binding yang memerlukan TCP, dilakukan sehubungan dengan objek ProtocolEngine tertentu, yang memberikan akses ke instance ExchangeManager.

Detail
Parameter
[in] aEngine
Pointer ke objek ProtocolEngine yang digunakan untuk menyelesaikan penyelesaian.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_INCORRECT_STATE
jika pengikatan sudah selesai.
WEAVE_ERROR_NO_MEMORY
Jika koneksi diperlukan dan tidak ada yang tersedia
Hasil
Jika tidak, WEAVE_ERROR apa pun yang ditampilkan saat mencoba terhubung.

Connect

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Selesaikan binding TCP dengan menyediakan koneksi yang lengkap.

Pengikatan TCP yang baru diinisialisasi tidak dapat digunakan hingga selesai. Biasanya ini dilakukan sesuai permintaan ketika aplikasi mencoba menggunakan pengikatan untuk mengirim pesan tetapi juga dapat diselesaikan secara eksplisit dengan menyediakan koneksi Weave.

Detail
Parameter
[in] aConnection
Pointer ke WeaveConnection yang digunakan untuk menyelesaikan binding.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_INCORRECT_STATE
Jika binding sudah memiliki koneksi.
WEAVE_ERROR_INVALID_ARGUMENT
Jika koneksinya NULL.

Finalisasi

void Finalize(
  void
)

"Belum selesai" mengikat dan melepaskannya.

Binding mungkin memiliki status yang memerlukan pembersihan, misalnya penutupan koneksi, yang ditangani oleh metode Uncomplete() selain status yang dibersihkan ke status awal oleh metode Free(). Metode ini, sebagian besar demi kenyamanan, memanggil keduanya.

Lihat juga:
Menyelesaikan(WEAVE_ERROR)

Finalisasi

void Finalize(
  WEAVE_ERROR aErr
)

"Belum selesai" mengikat dan melepaskannya.

Binding mungkin memiliki status yang memerlukan pembersihan, misalnya penutupan koneksi, yang ditangani oleh metode Uncomplete() selain status yang dibersihkan ke status awal oleh metode Free(). Metode ini, sebagian besar demi kenyamanan, memanggil keduanya.

Detail
Parameter
[in] aErr
Kode error ini menunjukkan penyebab permintaan ini. Jika bukan WEAVE_NO_ERROR, koneksi TCP dapat dibatalkan.
Lihat juga:
Menyelesaikan(batal)

Gratis

void Free(
  void
)

Hapus status binding.

Menampilkan semua status binding ke status aslinya tanpa syarat.

GetExchangeCtx

ExchangeContext * GetExchangeCtx(
  WeaveExchangeManager *aExchangeMgr,
  void *aAppState
)

Buat objek ExchangeContext dari Binding.

Detail
Parameter
[in] aExchangeMgr
Pointer ke pengelola bursa tempat meminta konteks.
[in] aAppState
Pointer void ke objek status aplikasi yang akan disimpan dalam konteks pertukaran untuk digunakan nanti.
Hasil
pointer ke objek ExchangeContext, atau NULL jika gagal.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Menangani kegagalan binding.

Metode ini dipanggil dan, pada gilirannya, memanggil handler lapisan yang lebih tinggi saat binding gagal SETELAH selesai, yaitu setelah CompleteConfirm() dipanggil dengan status yang menunjukkan keberhasilan.

Detail
Parameter
[in] aReport
Referensi ke StatusReport yang menjelaskan error yang terjadi.
Lihat juga:
CompleteConfirm(StatusReport &amp;aReport).

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Lakukan inisialisasi Binding hanya dengan ID node.

Ini menghasilkan binding dengan transpor default yang dikonfigurasi.

Detail
Parameter
[in] aPeerNodeId
Referensi ke ID 64-bit dari target binding.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika binding kurang dari yang ditentukan.

Init

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Lakukan inisialisasi objek Binding berdasarkan ID peer dan transpor.

Detail
Parameter
[in] aPeerNodeId
Referensi ke ID node 64-bit dari target binding.
[in] aTransport
Spesifikasi transpor, dari WeaveTransportOption.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika binding kurang dari yang ditentukan.

Init

WEAVE_ERROR Init(
  const uint64_t & aServiceEpt,
  WeaveServiceManager *aServiceMgr,
  WeaveAuthMode aAuthMode
)

Lakukan inisialisasi objek Binding ke endpoint layanan.

Berikut ini cara Anda mengikat ke endpoint tertentu di layanan Nest. Pengikatan semacam ini memerlukan proses penyelesaian multi-tahap, yang mungkin termasuk mengisi atau memperbarui cache direktori layanan lokal. Pada umumnya, proses ini disembunyikan dari aplikasi, tetapi ini berarti bahwa error yang timbul nanti dalam proses ini mungkin dikirimkan, biasanya melalui "konfirmasi" yang relevan callback, setelah - terkadang lama setelah - permintaan asli untuk menggunakan (dan menyelesaikan) pengikatan.

Detail
Parameter
[in] aServiceEpt
Referensi ke ID 64-bit untuk endpoint Weave Service yang diinginkan.
[in] aServiceMgr
Pointer ke instance pengelola layanan untuk digunakan dalam mencari tingkat layanan dan menghubungkannya.
[in] aAuthMode
Mode autentikasi yang akan digunakan untuk menghubungkan.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika binding kurang dari yang ditentukan.

Init

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Lakukan inisialisasi objek Binding dengan WeaveConnection.

Detail
Parameter
[in] aConnection
Pointer ke WeaveConnection yang akan digunakan sebagai dasar binding.
Nilai yang Ditampilkan
WEAVE_NO_ERROR
Berhasil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika binding kurang dari yang ditentukan.

IsComplete

bool IsComplete(
  void
)

Periksa apakah binding sudah selesai.

Detail
Hasil
true jika lengkap, false jika tidak.
Lihat juga:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Cek adalah binding gratis.

"Gratis" dalam konteks ini berarti, "memiliki node peer yang ditentukan "ID". IsFree() should be thought of as meaning &quot;has had Free() dipanggil dan tidak digunakan sejak itu".

Detail
Hasil
true jika binding gratis, false jika tidak.

UncompleteRequest

void UncompleteRequest(
  void
)

Menyebabkan binding tidak lengkap.

Pada dasarnya, pengikatan harus dalam bentuk "tidak lengkap" setelah metode ini dipanggil tetapi, lebih halus, status relevan apa pun yang tidak terkandung dalam pengikatan itu sendiri, mis. koneksi TCP, harusnya dibersihkan juga. Aplikasi dapat mempertimbangkan untuk memanggil UncompleteRequest() sebagai bagian dari pembersihan saat terjadi error.

Lihat juga:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Menyebabkan binding tidak lengkap.

Pada dasarnya, pengikatan harus dalam bentuk "tidak lengkap" setelah metode ini dipanggil tetapi, lebih halus, status relevan apa pun yang tidak terkandung dalam pengikatan itu sendiri, mis. koneksi TCP, harusnya dibersihkan juga. Aplikasi dapat mempertimbangkan untuk memanggil UncompleteRequest() sebagai bagian dari pembersihan saat terjadi error.

Detail
Parameter
[in] aErr
Jika bukan WEAVE_NO_ERROR, koneksi yang ada, jika ada, akan dibatalkan dan bukan ditutup dengan baik.
Lihat juga:
UncompleteRequest(void)

~Binding

virtual  ~Binding(
  void
)

Destruktor untuk objek Binding.

Mengosongkan semua status internal DAN, jika perlu, menutup koneksi terbuka.