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, DNS menyembunyikan detail yang melekat saat mencari entri direktori yang terkait dengan endpoint layanan, melakukan pencarian DNS pada satu atau beberapa nama host yang ditemukan di sana, mencoba menghubungkan, mengamankan koneksi, dan sebagainya. Administrator juga dapat mengelola cache informasi direktori layanan.

Konstruktor dan Destruktor

WeaveServiceManager(void)
Metode ini menginisialisasi instance WeaveServiceManager.
~WeaveServiceManager(void)
Metode ini merusak instance WeaveServiceManager.

Jenis publik

@303{
  kWeave_DefaultSendTimeout = 15000
}
enum
OnConnectBegin)(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBegin
void(*
Callback aplikasi yang dibuat tepat sebelum pembentukan koneksi.
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
Callback aplikasi untuk menandai waktu kueri direktori layanan keluar.
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfo
void(*
Callback aplikasi untuk mengirim 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::StatusHandler
void(*
Pengendali untuk error dan kondisi status.

Fungsi publik

SetConnectBeginCallback(OnConnectBegin aConnectBegin)
void
Tetapkan fungsi callback yang akan dipanggil tepat sebelum pembuatan koneksi.
cancel(uint64_t aServiceEp, void *aAppState)
void
Metode ini membatalkan permintaan koneksi.
clearCache(void)
void
Metode ini menghapus status dan cache pengelola jika status berada dalam status terminal kServiceMgrState_Resolved, yang berarti bahwa 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 menginisialisasi 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 penghubungan 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, yaitu 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 nama host dan ID port di awal daftar direktori.
reset(WEAVE_ERROR aError)
void
Metode ini akan mereset pengelola layanan ke status awal.
reset(void)
void
Metode ini akan 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::Weave::Profiles::ServiceDirectory::WeaveServiceManager::ConnectRequest

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 dibuat tepat sebelum pembentukan koneksi.

Callback ini dapat digunakan oleh aplikasi untuk mengamati dan secara opsional mengubah argumen yang diteruskan ke #WeaveConnection::Connect() selama pembuatan koneksi layanan. Callback ini akan dipanggil baik untuk koneksi ke endpoint layanan target, serta 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 saat kita akan mengirimkan permintaan kueri endpoint layanan. Ini digunakan untuk mencocokkan dengan OnServiceEndpointQueryEnd untuk mengompensasi waktu penerbangan pesan.

OnServiceEndpointQueryEndWithTimeInfo

void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)

Callback aplikasi untuk mengirim 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
[in] timeQueryReceiptMsec
Jumlah milidetik sejak epoch POSIX, saat kueri diterima di sisi server.
[in] timeProcessMsec
Jumlah milidetik yang dihabiskan untuk memproses kueri ini.

RootDirectoryAccessor

WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)

Fungsi pengakses untuk info direktori root.

Anda harus memulai dari suatu tempat dan dengan direktori layanan, Anda harus memulai dengan direktori stub yang berisi alamat server yang dapat Anda capai untuk mendapatkan hal lainnya. Karena disposisi dan asal informasi ini kemungkinan berbeda dari satu perangkat ke perangkat lainnya, kami menyediakan callback pengakses di sini.

Detail
Parameter
[out] aDirectory
Pointer ke buffer untuk menulis informasi direktori.
[in] aLength
Panjang buffer yang diberikan dalam byte.
Hasil
WEAVE_NO_ERROR jika berhasil. Jika tidak, proses pemuatan akan dibatalkan.

StatusHandler

void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)

Pengendali untuk error dan kondisi status.

Pengguna pengelola layanan dapat diberi tahu tentang masalah saat mencoba menjalankan permintaan penghubungan dengan salah satu dari dua cara. Pelacak mungkin menerima laporan status dari layanan atau mungkin menerima WEAVE_ERROR yang dibuat secara internal. Dalam kedua kasus tersebut, informasi datang melalui callback ini.

Detail
Parameter
[in] anAppState
Pointer ke objek aplikasi yang diteruskan ke panggilan conect() yang sesuai.
[in] anError
Kode error Weave yang menunjukkan error terjadi dalam proses mencoba mengeksekusi permintaan koneksi. Kolom ini harus berupa WEAVE_NO_ERROR jika tidak ada error yang muncul dan laporan status tersedia.
[in] aStatusReport
Penunjuk ke laporan status yang dihasilkan oleh layanan direktori jarak jauh. Argumen ini akan bernilai NULL jika tidak ada laporan status dan error internal diteruskan dalam argumen sebelumnya.

Fungsi publik

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

Tetapkan fungsi callback yang akan dipanggil tepat sebelum pembuatan koneksi.

Detail
Parameter
[in] aConnectBegin
Pointer ke fungsi callback. Nilai NULL akan menonaktifkan callback.

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 akan menghapus status koneksi direktori layanan yang tertunda.

Detail
Parameter
[in] aServiceEp
ID endpoint layanan dari permintaan yang dibatalkan.
[in] anAppState
Pointer ke objek status aplikasi yang diberikan ke panggilan connect().

clearCache

void clearCache(
  void
)

Metode ini menghapus status dan cache pengelola jika status berada dalam status terminal kServiceMgrState_Resolved, yang berarti bahwa 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 sambungan tingkat atas. Pada dasarnya, alat ini menghasilkan koneksi yang aman ke layanan Weave mengingat titik akhir layanan dan mode otentikasi atau gagal mencoba.

Metode ini hanya dapat dipanggil setelah panggilan ke init() berhasil, dan permintaan koneksi berpotensi dibatalkan oleh cancel().

Metode ini bisa dipanggil sebelum cache lokal diisi dengan data dari data yang disediakan default atau perjalanan ke layanan direktori. Pengelola layanan hanya akan mengantrekan permintaan tersebut sebelum konten cache dapat ditentukan.

Detail
Parameter
[in] aServiceEp
ID endpoint layanan, seperti yang ditetapkan dalam ServiceDirectory.h, untuk layanan yang diinginkan.
[in] aAuthMode
Mode autentikasi yang digunakan saat terhubung ke layanan yang diinginkan.
[in] aAppState
Pointer ke objek status aplikasi, yang diteruskan ke callback sebagai argumen.
[in] aStatusHandler
Callback yang akan dipanggil jika terjadi error yang terjadi sebelum koneksi selesai.
[in] aConnectionCompleteHandler
Callback yang akan dipanggil jika koneksi yang diminta selesai. Perhatikan bahwa koneksi mungkin gagal dengan kode error Weave.
[in] aConnectTimeoutMsecs
Waktu tunggu sambungan TCP opsional dalam milidetik.
[in] aConnectIntf
Antarmuka opsional yang akan digunakan untuk membuat koneksi.
Hasil
WEAVE_NO_ERROR saat berhasil; jika tidak, kode error masing-masing.

init

WEAVE_ERROR init(
  WeaveExchangeManager *aExchangeMgr,
  uint8_t *aCache,
  uint16_t aCacheLen,
  RootDirectoryAccessor aAccessor,
  WeaveAuthMode aDirAuthMode,
  OnServiceEndpointQueryBegin aServiceEndpointQueryBegin,
  OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo,
  OnConnectBegin aConnectBegin
)

Metode ini menginisialisasi 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
[in] aExchangeMgr
Pointer ke pengelola exchange yang akan digunakan untuk semua pertukaran profil direktori layanan.
[in] aCache
Pointer ke buffer yang dapat digunakan untuk meng-cache informasi direktori.
[in] aCacheLen
Panjang cache dalam byte.
[in] aAccessor
Callback, seperti yang ditetapkan dalam ServiceDirectory.h yang akan dipanggil untuk memuat direktori root sebagai titik awal untuk pencarian direktori.
[in] aDirAuthMode
Mode otentikasi yang digunakan saat berbicara dengan layanan direktori.
[in] aServiceEndpointQueryBegin
Pointer fungsi dari jenis OnServiceEndpointQuerybegin, yang dipanggil pada awal permintaan direktori layanan dan memungkinkan kode aplikasi untuk menandai waktu jika ingin menggunakan sinkronisasi waktu yang ditawarkan oleh protokol direktori layanan.
[in] aServiceEndpointQueryEndWithTimeInfo
Pointer fungsi dari jenis OnServiceEndpointQueryEndWithTimeInfo, yang dipanggil saat menerima direktori layanan yang memungkinkan aplikasi melakukan sinkronisasi dengan layanan Weave menggunakan kolom waktu yang diberikan dalam respons. Callback ini akan dilakukan setelah pengelola layanan menerima respons yang berisi informasi waktu. Cache seharusnya sudah berhasil diisi sebelum callback dibuat.
[in] aConnectBegin
Pointer fungsi dari jenis OnConnectBegin, yang dipanggil tepat sebelum pembentukan koneksi dan memungkinkan aplikasi mengamati serta secara opsional mengubah argumen yang diteruskan ke #WeaveConnection::Connect(). Nilai NULL (default) akan menonaktifkan callback.
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, misalnya jika ada operasi connect() yang berhasil, metode ini akan mengisi objek HostPortList yang diberikan.

Catatan: HostPortList terikat ke objek WeaveServiceManager; tetap valid hingga cache direktori layanan dihapus atau hingga pencarian direktori layanan lain terjadi.

Detail
Parameter
[in] aServiceEp
ID endpoint layanan yang akan dicari.
[out] outHostPortList
Pointer ke HostPortList yang akan diisi saat pencarian entri direktori berhasil. Tidak boleh NULL.
Nilai Pengembalian
WEAVE_NO_ERROR
jika berhasil; jika tidak, kode error masing-masing.
WEAVE_ERROR_INVALID_SERVICE_EP
jika endpoint layanan yang diberikan tidak ditemukan.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
jika direktori berisi tipe entri direktori yang tidak diketahui.

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, misalnya jika ada operasi connect() yang berhasil, metode ini akan menampilkan entri direktori dengan ID endpoint layanan.

Metode ini mengekspos detail implementasi internal direktori layanan, implementasi harus sangat mendukung penggunaan varian metode ini yang menghasilkan HostPortList.

Detail
Parameter
[in] aServiceEp
ID endpoint layanan yang akan dicari.
[out] aControlByte
Pointer ke tempat untuk menulis byte kontrol entri direktori.
[out] aDirectoryEntry
Sebuah pointer-pointer yang akan diarahkan ke entri direktori.
Nilai Pengembalian
WEAVE_NO_ERROR
jika berhasil; jika tidak, kode error masing-masing.
WEAVE_ERROR_INVALID_SERVICE_EP
jika endpoint layanan yang diberikan tidak ditemukan.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
jika direktori berisi tipe entri direktori yang tidak diketahui.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

Metode ini menangani peristiwa koneksi tertutup yang dilaporkan oleh konteks pertukaran Weave terkait.

Detail
Parameter
[in] aError
Error Weave yang menunjukkan alasan ditutupnya koneksi ini.

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

Metode ini menangani peristiwa penghubungan selesai untuk transaksi kueri endpoint layanan.

Ada beberapa kemungkinan. Pertama, koneksi bisa saja gagal yang mana kita sudah selesai. Jika tidak, koneksi sebenarnya telah selesai dan yang ingin kita lakukan adalah membuka konteks pertukaran dan mengirim kueri direktori.

Detail
Parameter
[in] aError
Error Weave jika terjadi error selama penyiapan koneksi.

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
[in] aProfileId
ID profil untuk pesan masuk ini.
[in] aMsgType
Jenis profil spesifik untuk pesan ini.
[in] aMsg
Konten pesan ini.

onResponseTimeout

void onResponseTimeout(
  void
)

Metode ini menangani peristiwa waktu tunggu, yaitu tidak ada respons yang diterima dari layanan direktori.

pindah

void relocate(
  WEAVE_ERROR aError
)

Metode ini memindahkan cache direktori layanan.

Jika endpoint layanan menampilkan laporan status dengan kode status kStatus_Relokasi, aplikasi dapat memanggil unresolve() untuk mengosongkan cache dan membatalkan permintaan koneksi. Metode ini menyederhanakan penanganan error dengan memanggil unresolve() untuk pertama kalinya, dan reset() jika masalah belum terselesaikan.

Versi metode ini - di sini untuk kompatibilitas mundur - mengambil dan mencatat error, lalu memanggil relocate(void) .

Detail
Parameter
[in] aError
error untuk dicatat.
Lihat juga:
relocate(void)

pindah

void relocate(
  void
)

Metode ini memindahkan cache direktori layanan.

Jika endpoint layanan menampilkan laporan status dengan kode status kStatus_Relokasi, aplikasi dapat memanggil unresolve() untuk mengosongkan cache dan membatalkan permintaan koneksi. Metode ini menyederhanakan penanganan error dengan memanggil unresolve() untuk pertama kalinya, dan reset() jika masalah belum terselesaikan.

Lihat juga:
relokasi(WEAVE_ERROR)

replaceOrAddCacheEntry

WEAVE_ERROR replaceOrAddCacheEntry(
  uint16_t port,
  const char *hostName,
  uint8_t hostLen,
  uint64_t serviceEndpointId
)

Tambahkan entri direktori pengganti nama host dan ID port di awal daftar direktori.

reset

void reset(
  WEAVE_ERROR aError
)

Metode ini akan mereset pengelola layanan ke status awal.

Metode ini mereset semua status pengelola layanan, termasuk status komunikasi, status cache, dan status setiap permintaan koneksi yang tertunda.

Versi metode ini - di sini untuk kompatibilitas mundur - mengambil dan mencatat error kemudian memanggil reset(void) .

Detail
Parameter
[in] aError
Error yang memicu operasi ini.
Lihat juga:
reset(void)

reset

void reset(
  void
)

Metode ini akan mereset pengelola layanan ke status awal.

Metode ini mereset semua status pengelola layanan, termasuk status komunikasi, status cache, dan status setiap 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, lalu memanggil unresolve(void) .

Detail
Parameter
[in] aError
Error yang memicu operasi ini.
Lihat juga:
unresolve(void)

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 merusak instance WeaveServiceManager.