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

Saat aplikasi ingin menggunakan Weave untuk berkomunikasi dengan entitas jarak jauh, ada berbagai pilihan. Class Binding menyertakan opsi ini dan mengaturnya sedemikian rupa sehingga hal yang mudah menjadi mudah, sedangkan hal yang lebih sulit setidaknya dapat dipahami. Opsi yang dibahas meliputi:

  • komunikasi UDP unicast dengan {i>node<i} peer yang diketahui.
  • Siaran UDP dengan node "mana pun".
  • komunikasi WRMP unicast dengan {i>node<i} rekan yang diketahui.
  • Komunikasi TCP dengan node peer yang diketahui.
  • Komunikasi TCP dengan titik akhir layanan yang diketahui menggunakan instance pengelola layanan untuk menyiapkan segala sesuatu.
  • 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 pengikatan.
CompleteConfirm(StatusReport & aReport)
void
Menangani kegagalan permintaan pengikatan.
CompleteConfirm(void)
void
Menangani konfirmasi permintaan pengikatan.
CompleteRequest(ProtocolEngine *aEngine)
Meminta penyelesaian binding.
Connect(WeaveConnection *aConnection)
Menyelesaikan binding TCP dengan menyediakan koneksi yang lengkap.
Finalize(void)
void
"Batalkan penyelesaian" binding dan kosongkan.
Finalize(WEAVE_ERROR aErr)
void
"Batalkan penyelesaian" binding dan kosongkan.
Free(void)
void
Menghapus status binding.
GetExchangeCtx(WeaveExchangeManager *aExchangeMgr, void *aAppState)
Membuat objek ExchangeContext dari Binding.
IncompleteIndication(StatusReport & aReport)
void
Menangani kegagalan binding.
Init(const uint64_t & aPeerNodeId)
Melakukan inisialisasi Binding hanya dengan ID node.
Init(const uint64_t & aPeerNodeId, uint8_t aTransport)
Melakukan inisialisasi objek Binding berdasarkan transpor dan ID peer.
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 yang lengkap dan siap digunakan.

kState_Completing

Status Binding yang sedang dalam proses penyelesaian.

kState_Incomplete

Status awal (dan terakhir) Binding.

Atribut publik

mAuthMode

WeaveAuthMode mAuthMode

Mode autentikasi Weave yang akan digunakan.

(HANYA_BACA)

Ini adalah mode otentikasi yang digunakan dalam semua komunikasi yang diatur oleh pengikatan ini.

mConnection

WeaveConnection * mConnection

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

(HANYA BACA)

Binding TCP dapat diinisialisasi dengan koneksi sejak awal atau dapat mengalokasikannya pada waktu penyelesaian.

mEngine

ProtocolEngine * mEngine

Pointer ke objek ProtocolEngine yang terkait dengan Binding ini.

Pengikatan umumnya diselesaikan sehubungan dengan mesin protokol tertentu, yang sebagian besar digunakan sebagai cara mengakses MessageLayer. Di sinilah kami 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, ini dapat menamai endpoint layanan.

mServiceMgr

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

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

(HANYA BACA)

Saat melakukan binding ke layanan Weave, ID endpoint layanan 64-bit mungkin 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 operasi "lengkap" yang dapat berjalan pada satu waktu dan, dalam hal apa pun, jika Anda meminta untuk menyelesaikan binding yang telah selesai, operasi cukup memanggil fungsi konfirmasi dengan segera. 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 memungkinkan untuk mTransport ditentukan dalam DMConstants.h.

Fungsi publik

Binding

 Binding(
  void
)

Konstruktor default untuk objek Binding.

Menghapus semua status internal.

CompleteConfirm

void CompleteConfirm(
  WeaveConnection *aConnection
)

Menangani konfirmasi permintaan pengikatan.

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

CompleteConfirm

void CompleteConfirm(
  StatusReport & aReport
)

Menangani kegagalan permintaan pengikatan.

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

CompleteConfirm

void CompleteConfirm(
  void
)

Menangani konfirmasi permintaan pengikatan.

CompleteRequest

WEAVE_ERROR CompleteRequest(
  ProtocolEngine *aEngine
)

Meminta penyelesaian binding.

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

Detail
Parameter
[in] aEngine
Pointer ke objek ProtocolEngine atas nama yang penyelesaiannya dilakukan.
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
WEAVE_ERROR_INCORRECT_STATE
jika pengikatan sudah selesai.
WEAVE_ERROR_NO_MEMORY
Jika koneksi diperlukan dan tidak ada koneksi yang tersedia
Hasil
Atau, WEAVE_ERROR apa pun yang ditampilkan saat mencoba terhubung.

Konektivitas

WEAVE_ERROR Connect(
  WeaveConnection *aConnection
)

Menyelesaikan binding TCP dengan menyediakan koneksi yang lengkap.

Binding TCP yang baru diinisialisasi tidak dapat digunakan sebelum prosesnya selesai. Biasanya ini dilakukan sesuai permintaan ketika aplikasi mencoba menggunakan binding 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 Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
WEAVE_ERROR_INCORRECT_STATE
Apakah binding sudah memiliki koneksi.
WEAVE_ERROR_INVALID_ARGUMENT
Jika koneksinya NULL.

Finalisasi

void Finalize(
  void
)

"Batalkan penyelesaian" binding dan kosongkan.

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

Lihat juga:
Selesaikan(WEAVE_ERROR)

Finalisasi

void Finalize(
  WEAVE_ERROR aErr
)

"Batalkan penyelesaian" binding dan kosongkan.

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

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

Gratis

void Free(
  void
)

Menghapus status binding.

Menampilkan semua status binding ke status aslinya tanpa syarat.

GetExchangeCtx

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

Membuat objek ExchangeContext dari Binding.

Detail
Parameter
[in] aExchangeMgr
Pointer ke manajer exchange yang menjadi tujuan permintaan konteks.
[in] aAppState
Pointer kosong ke objek status aplikasi yang akan disimpan dalam konteks pertukaran untuk digunakan di lain waktu.
Hasil
pointer ke objek ExchangeContext, atau NULL jika gagal.

IncompleteIndication

void IncompleteIndication(
  StatusReport & aReport
)

Menangani kegagalan binding.

Metode ini dipanggil dan, kemudian, memanggil pengendali 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 masalah yang terjadi.
Lihat juga:
CompleteConfirm(StatusReport &aReport).

Inisiasi

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId
)

Melakukan inisialisasi Binding hanya dengan ID node.

Hal ini menghasilkan binding dengan transport default yang dikonfigurasi.

Detail
Parameter
[in] aPeerNodeId
Referensi ke ID 64-bit target binding.
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika binding kurang ditentukan.

Inisiasi

WEAVE_ERROR Init(
  const uint64_t & aPeerNodeId,
  uint8_t aTransport
)

Melakukan inisialisasi objek Binding berdasarkan transpor dan ID peer.

Detail
Parameter
[in] aPeerNodeId
Referensi ke ID node 64-bit dari target binding.
[in] aTransport
Spesifikasi transport, dari WeaveTransportOption.
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika binding kurang ditentukan.

Inisiasi

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

Lakukan inisialisasi objek Binding ke endpoint layanan.

Ini adalah cara Anda mengikat ke endpoint tertentu di layanan Nest. Binding jenis ini memerlukan proses penyelesaian multi-tahap, yang mungkin termasuk mengisi atau mengupdate cache direktori layanan lokal. Sebagian besar proses ini disembunyikan dari aplikasi, tetapi ini berarti bahwa error yang muncul kemudian dalam proses dapat dikirimkan, biasanya melalui callback "confirm" yang relevan, setelah - terkadang lama setelah - permintaan asli untuk menggunakan (dan menyelesaikan) binding.

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 terhubung ke tingkat layanan tersebut.
[in] aAuthMode
Mode autentikasi yang akan digunakan untuk menghubungkan.
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika binding kurang ditentukan.

Inisiasi

WEAVE_ERROR Init(
  WeaveConnection *aConnection
)

Lakukan inisialisasi objek Binding dengan WeaveConnection.

Detail
Parameter
[in] aConnection
Pointer ke WeaveConnection untuk digunakan sebagai dasar binding.
Nilai Pengembalian
WEAVE_NO_ERROR
Setelah berhasil.
WEAVE_ERROR_INVALID_ARGUMENT
Jika binding kurang ditentukan.

IsComplete

bool IsComplete(
  void
)

Periksa apakah binding sudah selesai.

Detail
Hasil
benar jika lengkap, salah jika sebaliknya.
Lihat juga:
CompleteRequest(ProtocolEngine *aEngine)

IsFree

bool IsFree(
  void
)

Cek adalah binding gratis.

"Gratis" dalam konteks ini berarti "memiliki ID node pembanding yang ditentukan". IsFree() harus dianggap memiliki makna "telah mengaktifkan Free() dan tidak digunakan sejak saat itu".

Detail
Hasil
true jika binding adalah bebas, false jika sebaliknya.

UncompleteRequest

void UncompleteRequest(
  void
)

Menyebabkan binding tidak lengkap.

Pada dasarnya, binding harus dalam status "tidak lengkap" setelah metode ini dipanggil, tetapi, lebih halus, setiap status relevan yang tidak dimuat dalam binding itu sendiri, misalnya koneksi TCP, juga harus dibersihkan. Aplikasi dapat mempertimbangkan pemanggilan UncompleteRequest() sebagai bagian dari pembersihan jika terjadi error.

Lihat juga:
UncompleteRequest(WEAVE_ERROR )

UncompleteRequest

void UncompleteRequest(
  WEAVE_ERROR aErr
)

Menyebabkan binding tidak lengkap.

Pada dasarnya, binding harus dalam status "tidak lengkap" setelah metode ini dipanggil, tetapi, lebih halus, setiap status relevan yang tidak dimuat dalam binding itu sendiri, misalnya koneksi TCP, juga harus dibersihkan. Aplikasi dapat mempertimbangkan pemanggilan UncompleteRequest() sebagai bagian dari pembersihan jika terjadi error.

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

~Binding

virtual  ~Binding(
  void
)

Destruktor untuk objek Binding.

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