nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Weave 服務目錄的 Manager 物件。
摘要
Weave 服務管理工具是應用程式與目錄服務的主要介面。因此,如果查詢和服務端點相關的目錄項目,查詢與服務端點相關的目錄項目、在其找到的一或多個主機名稱上執行 DNS 查詢、嘗試連線、確保連線安全等,會隱藏複雜功能。也可能管理 Service Directory 資訊的快取。
建構函式和解構函式 |
|
---|---|
WeaveServiceManager(void)
這個方法會初始化 WeaveServiceManager 例項。
|
|
~WeaveServiceManager(void)
這個方法會解構 WeaveServiceManager 例項。
|
公開類型 |
|
---|---|
@303{
|
列舉 |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
應用程式在連線建立前立即回呼。 |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
應用程式回呼,用於標記傳出服務目錄查詢的時間。 |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
應用程式回呼,用於從服務目錄回應提供時間值。 |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor 根目錄資訊的存取函式。 |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
錯誤和狀態條件的處理常式。 |
公開函式 |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
設定回呼函式,以便在建立連線之前立即呼叫。
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
這個方法會取消連線要求。
|
clearCache(void)
|
void
如果狀態為終端 kServiceMgrState_Resolved 狀態 (表示已收到來自服務目錄端點的回應),這個方法會清除管理員的狀態和快取。
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
此方法要求會連結至 Weave 服務。
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
這個方法會初始化服務管理員物件。
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
這個方法會查詢服務端點的服務資訊。
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
這個方法會查詢服務端點的目錄資訊。
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
此方法會處理由相關聯的 Weave 交換內容處理程序回報的連線關閉事件。
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
這個方法會處理服務端點查詢交易的連線完成事件。
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
這個方法會處理與目錄服務的對話中的任何回應訊息。
|
onResponseTimeout(void)
|
void
這個方法會處理逾時事件,也就是未收到目錄服務回應的情況。
|
relocate(WEAVE_ERROR aError)
|
void
這個方法會重新定位服務目錄快取。
|
relocate(void)
|
void
這個方法會重新定位服務目錄快取。
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
在目錄清單的開頭,新增主機名稱和連接埠 ID 的覆寫目錄項目。
|
reset(WEAVE_ERROR aError)
|
void
這個方法會將服務管理員重設為初始狀態。
|
reset(void)
|
void
這個方法會將服務管理員重設為初始狀態。
|
unresolve(WEAVE_ERROR aError)
|
void
這個方法會使服務目錄快取無效。
|
unresolve(void)
|
void
這個方法會使服務目錄快取無效。
|
類別 |
|
---|---|
nl:: |
這個類別代表由服務管理員管理的單一交易。 |
公開類型
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
應用程式在連線建立前立即回呼。
應用程式可使用這個回呼,在建立服務連線的過程中觀察並視需要變更傳遞至 #WeaveConnection::Connect() 的引數。系統會同時呼叫此回呼,以用於連線至目標服務端點,以及在必須執行目錄查詢的情況下連線至 Service Directory 端點。
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
一種應用程式回呼,用於標示傳出服務目錄查詢的時間。
當我們即將傳送服務端點查詢要求時,就會呼叫此方法。這會用於與 OnServiceEndpointQueryEnd 比對,以補償訊息傳送時間。
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
應用程式回呼,用於從服務目錄回應提供時間值。
當我們從服務目錄查詢回應中取得時間資訊時,系統會呼叫此方法。請注意,只有在成功剖析回應並包含時間資訊時,系統才會執行此回呼
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
根目錄資訊的存取子函式。
因此,您需要從某個服務目錄開始,並從服務目錄開始,請先從包含伺服器位址的虛設常式目錄開始,取得其他所有內容。由於這類資訊的處置方式和來源可能因裝置而異,因此我們在此提供存取子回呼。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
||||
傳回 |
WEAVE_NO_ERROR 成功後,系統會取消載入程序。
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
錯誤和狀態條件的處理常式。
服務管理員的使用者可能會在嘗試利用兩種方式執行連線要求時遇到問題,可能會收到服務的狀態報告,也可能會收到內部產生的 WEAVE_ERROR。無論是哪種情況,這項資訊都會透過這個回呼傳送。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
公開函式
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
設定回呼函式,以便在連線建立前立即呼叫。
詳細資料 | |||
---|---|---|---|
參數 |
|
WeaveServiceManager
WeaveServiceManager( void )
這個方法會初始化 WeaveServiceManager 例項。
請注意,您必須呼叫 init(),才能進一步初始化這個例項。
取消
void cancel( uint64_t aServiceEp, void *aAppState )
這個方法會取消連線要求。
此方法會根據服務端點 ID 和在要求時傳入的應用程式狀態物件,以 ID 取消連線要求。如果這是最後的連線要求,這個方法也會清除所有待處理的服務目錄連線狀態。
詳細資料 | |||||
---|---|---|---|---|---|
參數 |
|
clearCache
void clearCache( void )
如果狀態為終端 kServiceMgrState_Resolved 狀態 (表示已收到來自服務目錄端點的回應),這個方法會清除管理員的狀態和快取。
連線
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
這個方法會要求連線至 Weave 服務。
這是頂層連線呼叫。它會在指定服務端點和驗證模式的情況下,建立與 Weave 服務的安全連線,或在嘗試時停止運作。
這個方法只能在成功呼叫 init() 後呼叫,且連線要求可能會由 cancel() 取消。
在本機快取填入預設配置資料或目錄服務的資料之前,可以呼叫這個方法。服務管理員只會將要求排入佇列,然後才會判定快取內容。
詳細資料 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||
傳回 |
成功時呼叫 WEAVE_NO_ERROR;否則,則會傳回個別錯誤代碼。
|
init
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
這個方法會初始化服務管理員物件。
如要使用服務管理員物件,必須先初始化服務管理員物件。成功呼叫此方法後,用戶端即可開始呼叫 connect()、lookup() 及其他方法。
詳細資料 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
參數 |
|
||||||||||||||||
傳回 |
如果函式引數無效,則為 WEAVE_ERROR_INVALID_ARGUMENT;否則為 WEAVE_NO_ERROR。
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
這個方法會查詢服務端點的目錄資訊。
如果服務目錄已解析 (也就是 connect() 作業已成功執行),這個方法就會填入提供的 HostPortList 物件。
注意:HostPortList 會繫結至 WeaveServiceManager 物件;在服務目錄快取清除或發生其他服務目錄查詢前,這個物件會保持有效。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
這個方法會查詢服務端點的目錄資訊。
如果服務目錄已解析 (也就是說,connect() 作業已成功執行),則此方法會傳回服務端點 ID 的相關目錄項目。
這個方法會公開服務目錄的內部實作項目詳細資料,實作項目應盡量使用此方法的變化版本,以產生 HostPortList。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
||||||
傳回值 |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
此方法會處理由相關聯的 Weave 交換內容處理程序回報的連線關閉事件。
詳細資料 | |||
---|---|---|---|
參數 |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
這個方法會處理服務端點查詢交易的連線完成事件。
可能有幾種原因。首先,連線可能會失敗,在這種情況下,我們會停止處理。否則,連線實際上已完成,我們要做的是開啟交換內容並傳送目錄查詢。
詳細資料 | |||
---|---|---|---|
參數 |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
這個方法會處理與目錄服務對話中的任何回應訊息。
詳細資料 | |||||||
---|---|---|---|---|---|---|---|
參數 |
|
onResponseTimeout
void onResponseTimeout( void )
此方法會處理逾時事件,此事件從目錄服務沒有收到任何回應。
重新定位
void relocate( WEAVE_ERROR aError )
這個方法會重新定位服務目錄快取。
當服務端點傳回狀態為 kStatus_Remanaged 的狀態報告時,應用程式可呼叫 unresolve() 以清除快取並取消連線要求。這個方法會在第一次呼叫 unresolve() 時簡化錯誤處理,如果問題尚未解決,則會呼叫 reset()。
這個方法版本 (為了回溯相容性而提供) 會擷取及記錄錯誤,然後呼叫 relocate(void)。
詳細資料 | |||
---|---|---|---|
參數 |
|
relocate(void)
重新定位
void relocate( void )
這個方法會重新定位服務目錄快取。
當服務端點傳回狀態報告時,狀態碼為 kStatus_Relocated,應用程式可以呼叫 unresolve() 來清除快取並取消連線要求。這個方法可在首次呼叫 unresolve() 來簡化錯誤處理,如果問題仍未解決,則呼叫 reset()。
另請參閱:relocate(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
在目錄清單開頭,新增主機名稱和通訊埠 ID 的覆寫目錄項目。
重設
void reset( WEAVE_ERROR aError )
這個方法會將服務管理員重設為初始狀態。
這個方法會重設所有服務管理員狀態,包括通訊狀態、快取狀態,以及任何待處理連線要求的狀態。
這個方法版本 (為了回溯相容性而提供) 會擷取及記錄錯誤,然後呼叫 reset(void)。
詳細資料 | |||
---|---|---|---|
參數 |
|
reset(void)
重設
void reset( void )
unresolve
void unresolve( WEAVE_ERROR aError )
這個方法會使服務目錄快取無效。
這個方法會設定 Service Directory 快取狀態,這樣在下次要求時,服務管理員就會發出服務目錄查詢。
這個方法的版本 (為了回溯相容性而提供) 會擷取及記錄錯誤,然後呼叫 unresolve(void)。
詳細資料 | |||
---|---|---|---|
參數 |
|
unresolve(void)
unresolve
void unresolve( void )