nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Objek pengelola untuk direktori layanan Weave.
Ringkasan
Pengelola layanan Weave adalah antarmuka utama untuk aplikasi ke layanan direktori. Dengan demikian, alat ini menyembunyikan detail yang melekat dalam mencari entri direktori yang terkait dengan endpoint layanan, melakukan pencarian DNS pada satu atau beberapa nama host yang ditemukan di sana, mencoba untuk terhubung, mengamankan koneksi, dan seterusnya. Layanan ini juga dapat mengelola cache informasi direktori layanan.
Konstruktor dan Destruktor |
|
---|---|
WeaveServiceManager(void)
Metode ini menginisialisasi instance WeaveServiceManager.
|
|
~WeaveServiceManager(void)
Metode ini menghancurkan instance WeaveServiceManager.
|
Jenis publik |
|
---|---|
@303{
|
enum |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
Callback aplikasi yang dilakukan tepat sebelum pembuatan koneksi. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
Callback aplikasi untuk menandai waktu kueri direktori layanan keluar. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
Callback aplikasi untuk mengirimkan nilai waktu dari respons direktori layanan. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor Fungsi pengakses untuk info direktori root. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
Pengendali untuk kondisi error dan status. |
Fungsi publik |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
Menetapkan fungsi callback untuk dipanggil tepat sebelum koneksi dibuat.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
Metode ini membatalkan permintaan koneksi.
|
clearCache(void)
|
void
Metode ini menghapus status dan cache pengelola jika statusnya dalam status terminal kServiceMgrState_Resolved, yang berarti respons dari endpoint Direktori Layanan telah diterima.
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
Permintaan metode ini terhubung ke layanan Weave.
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
Metode ini akan melakukan inisialisasi objek pengelola layanan.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
Metode ini mencari informasi direktori untuk endpoint layanan.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
Metode ini mencari informasi direktori untuk endpoint layanan.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
Metode ini menangani peristiwa koneksi tertutup yang dilaporkan oleh konteks pertukaran Weave terkait.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
Metode ini menangani peristiwa terhubung yang telah selesai untuk transaksi kueri endpoint layanan.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
Metode ini menangani pesan respons apa pun dalam percakapan dengan layanan direktori.
|
onResponseTimeout(void)
|
void
Metode ini menangani peristiwa waktu tunggu, di mana tidak ada respons yang diterima dari layanan direktori.
|
relocate(WEAVE_ERROR aError)
|
void
Metode ini memindahkan cache direktori layanan.
|
relocate(void)
|
void
Metode ini memindahkan cache direktori layanan.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
Tambahkan entri direktori pengganti dari nama host dan ID port di awal daftar direktori.
|
reset(WEAVE_ERROR aError)
|
void
Metode ini mereset pengelola layanan ke status awal.
|
reset(void)
|
void
Metode ini mereset pengelola layanan ke status awal.
|
unresolve(WEAVE_ERROR aError)
|
void
Metode ini membatalkan cache direktori layanan.
|
unresolve(void)
|
void
Metode ini membatalkan cache direktori layanan.
|
Class |
|
---|---|
nl:: |
Class ini mewakili satu transaksi yang dikelola oleh pengelola layanan. |
Jenis publik
@303
@303
Properti | |
---|---|
kWeave_DefaultSendTimeout
|
Jumlah milidetik respons harus diterima untuk kueri direktori sebelum waktu konteks pertukaran habis. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
Callback aplikasi yang dilakukan tepat sebelum pembuatan koneksi.
Callback ini dapat digunakan oleh aplikasi untuk mengamati dan secara opsional mengubah argumen yang diteruskan ke #WeaveConnection::Connect() selama proses pembuatan koneksi layanan. Callback ini akan dipanggil baik untuk koneksi ke endpoint layanan target maupun koneksi ke endpoint Direktori Layanan jika pencarian direktori harus dilakukan.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
Callback aplikasi untuk menandai waktu kueri direktori layanan keluar.
Ini dipanggil ketika kita akan mengirimkan permintaan kueri endpoint layanan. ID ini digunakan untuk mencocokkan dengan OnServiceEndpointQueryEnd untuk mengompensasi waktu penayangan pesan.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Callback aplikasi untuk mengirimkan nilai waktu dari respons direktori layanan.
Ini dipanggil saat kita mendapatkan informasi waktu dari respons kueri direktori layanan. Perhatikan bahwa callback ini hanya akan terjadi jika respons berhasil diuraikan dan informasi waktu disertakan
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
Fungsi pengakses untuk info direktori root.
Anda harus mulai dari suatu tempat dan dengan direktori layanan, Anda harus memulai dengan direktori stub yang berisi alamat server yang dapat Anda tekan untuk menangani hal lainnya. Karena disposisi dan asal informasi ini mungkin berbeda dari satu perangkat ke perangkat lainnya, kami memberikan callback pengakses di sini.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Hasil |
WEAVE_NO_ERROR jika berhasil, jika tidak, proses pemuatan akan dibatalkan.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
Pengendali untuk kondisi error dan status.
Pengguna manajer layanan mungkin diberi tahu tentang masalah saat mencoba mengeksekusi permintaan koneksi dengan salah satu dari dua cara. Perangkat mungkin menerima laporan status dari layanan atau menerima WEAVE_ERROR yang dibuat secara internal. Dalam kedua kasus tersebut, informasi datang melalui callback ini.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
Fungsi publik
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
Menetapkan fungsi callback untuk dipanggil tepat sebelum koneksi dibuat.
Detail | |||
---|---|---|---|
Parameter |
|
WeaveServiceManager
WeaveServiceManager( void )
Metode ini menginisialisasi instance WeaveServiceManager.
Perhatikan bahwa init() harus dipanggil untuk menginisialisasi instance ini lebih lanjut.
batal
void cancel( uint64_t aServiceEp, void *aAppState )
Metode ini membatalkan permintaan koneksi.
Metode ini membatalkan permintaan koneksi dengan mempertimbangkan ID endpoint layanan dan objek status aplikasi yang diteruskan pada waktu permintaan sebagai ID. Jika ini adalah permintaan koneksi terakhir, metode ini juga menghapus status koneksi direktori layanan yang tertunda.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
clearCache
void clearCache( void )
Metode ini menghapus status dan cache pengelola jika statusnya dalam status terminal kServiceMgrState_Resolved, yang berarti respons dari endpoint Direktori Layanan telah diterima.
hubungkan
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
Permintaan metode ini terhubung ke layanan Weave.
Ini adalah panggilan koneksi tingkat atas. Pada dasarnya alat ini menghasilkan koneksi aman ke layanan Weave dengan menggunakan endpoint layanan dan mode otentikasi.
Metode ini hanya dapat dipanggil setelah panggilan ke init() berhasil, dan permintaan koneksi berpotensi dibatalkan oleh cancel().
Metode ini dapat dipanggil sebelum cache lokal diisi dengan data dari data yang disediakan secara default atau perjalanan ke layanan direktori. Pengelola layanan hanya akan mengantrekan permintaan sebelum konten cache dapat ditentukan.
Detail | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||
Hasil |
WEAVE_NO_ERROR saat berhasil; jika tidak, masing-masing kode error.
|
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
Metode ini akan melakukan inisialisasi objek pengelola layanan.
Agar dapat digunakan, objek pengelola layanan harus diinisialisasi. Setelah panggilan ke metode ini berhasil, klien dapat mulai memanggil connect(), lookup(), dan metode lainnya.
Detail | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||||||||||
Hasil |
WEAVE_ERROR_INVALID_ARGUMENT jika argumen fungsi tidak valid; jika tidak, WEAVE_NO_ERROR.
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
Metode ini mencari informasi direktori untuk endpoint layanan.
Jika direktori layanan telah diselesaikan, artinya jika operasi connect() berhasil, metode ini akan mengisi objek HostPortList yang disediakan.
Catatan: HostPortList terikat dengan objek WeaveServiceManager; layanan tetap valid hingga cache direktori layanan dikosongkan atau hingga pencarian direktori layanan lainnya dilakukan.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
Metode ini mencari informasi direktori untuk endpoint layanan.
Jika direktori layanan telah diselesaikan, artinya jika ada operasi connect() yang berhasil, metode ini akan menampilkan entri direktori yang diberi ID endpoint layanan.
Metode ini mengekspos detail implementasi internal direktori layanan. Implementasi harus sangat mengutamakan penggunaan varian metode ini yang menghasilkan HostPortList.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
Metode ini menangani peristiwa koneksi tertutup yang dilaporkan oleh konteks pertukaran Weave terkait.
Detail | |||
---|---|---|---|
Parameter |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
Metode ini menangani peristiwa terhubung yang telah selesai untuk transaksi kueri endpoint layanan.
Ada beberapa kemungkinan. Pertama, koneksi bisa saja gagal dan kita telah selesai. Jika tidak, koneksi sebenarnya sudah lengkap dan yang ingin kita lakukan adalah membuka konteks pertukaran dan mengirim kueri direktori.
Detail | |||
---|---|---|---|
Parameter |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
Metode ini menangani pesan respons apa pun dalam percakapan dengan layanan direktori.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
onResponseTimeout
void onResponseTimeout( void )
Metode ini menangani peristiwa waktu tunggu, di mana tidak ada respons yang diterima dari layanan direktori.
pindahkan
void relocate( WEAVE_ERROR aError )
Metode ini memindahkan cache direktori layanan.
Saat endpoint layanan menampilkan laporan status dengan kode status kStatus_Relokasi, aplikasi dapat memanggil unresolve() untuk menghapus cache dan membatalkan permintaan koneksi. Metode ini menyederhanakan penanganan error dengan memanggil unresolve() di awal, dan reset() jika masalahnya belum terselesaikan.
Versi metode ini - di sini untuk kompatibilitas mundur - mengambil dan mencatat error ke dalam log, lalu memanggil relocate(void) .
Detail | |||
---|---|---|---|
Parameter |
|
relocate(void)
pindahkan
void relocate( void )
Metode ini memindahkan cache direktori layanan.
Saat endpoint layanan menampilkan laporan status dengan kode status kStatus_Relokasi, aplikasi dapat memanggil unresolve() untuk menghapus cache dan membatalkan permintaan koneksi. Metode ini menyederhanakan penanganan error dengan memanggil unresolve() di awal, dan reset() jika masalahnya belum terselesaikan.
Lihat juga:pindahkan(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
Tambahkan entri direktori pengganti dari nama host dan ID port di awal daftar direktori.
reset
void reset( WEAVE_ERROR aError )
Metode ini mereset pengelola layanan ke status awal.
Metode ini mereset semua status pengelola layanan, termasuk status komunikasi, status cache, dan status permintaan koneksi yang tertunda.
Versi metode ini - di sini untuk kompatibilitas mundur - mengambil dan mencatat error ke dalam log, lalu memanggil reset(void) .
Detail | |||
---|---|---|---|
Parameter |
|
reset(kosong)
reset
void reset( void )
Metode ini mereset pengelola layanan ke status awal.
Metode ini mereset semua status pengelola layanan, termasuk status komunikasi, status cache, dan status permintaan koneksi yang tertunda.
Lihat juga:reset(WEAVE_ERROR)
batalkan penyelesaian
void unresolve( WEAVE_ERROR aError )
Metode ini membatalkan cache direktori layanan.
Metode ini menetapkan status cache direktori layanan sehingga pada permintaan berikutnya pengelola layanan akan mengeluarkan kueri direktori layanan.
Versi metode ini - di sini untuk kompatibilitas mundur - mengambil dan mencatat error ke dalam log, lalu memanggil unresolve(void) .
Detail | |||
---|---|---|---|
Parameter |
|
tidak terselesaikan(batal)
batalkan penyelesaian
void unresolve( void )
Metode ini membatalkan cache direktori layanan.
Metode ini menetapkan status cache direktori layanan sehingga pada permintaan berikutnya pengelola layanan akan mengeluarkan kueri direktori layanan.
Lihat juga:unresolve(WEAVE_ERROR)
~WeaveServiceManager
~WeaveServiceManager( void )
Metode ini menghancurkan instance WeaveServiceManager.