nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Weave サービス ディレクトリのマネージャー オブジェクト。
概要
Weave サービス マネージャーは、ディレクトリ サービスへのアプリケーションのメイン インターフェースです。そのため、サービス・エンドポイントに関連するディレクトリ・エントリの検索、そこで見つかった 1 つ以上のホスト名の DNS ルックアップ、接続の試行、接続の保護などに固有の複雑さがなくなります。また、サービス ディレクトリ情報のキャッシュを管理することもあります。
コンストラクタとデストラクタ |
|
---|---|
WeaveServiceManager(void)
このメソッドは、WeaveServiceManager インスタンスを初期化します。
|
|
~WeaveServiceManager(void)
このメソッドは、WeaveServiceManager インスタンスを破棄します。
|
公開タイプ |
|
---|---|
@303{
|
enum |
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(*
Service Directory のレスポンスから時刻の値を配信するアプリのコールバック。 |
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 状態(Service Directory エンドポイントからのレスポンスが受信されたこと)の場合、マネージャーの状態とキャッシュをクリアします。
|
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:: |
このクラスは、サービス マネージャーによって管理される単一のトランザクションを表します。 |
公開タイプ
@303
@303
プロパティ | |
---|---|
kWeave_DefaultSendTimeout
|
エクスチェンジ コンテキストがタイムアウトするまでに、ディレクトリ クエリに対する応答を受け取る必要があるミリ秒数。 |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
接続が確立される直前に行われるアプリのコールバック。
このコールバックは、サービス接続を確立する際に #WeaveConnection::Connect() に渡された引数を監視し、必要に応じて変更するために使用できます。このコールバックは、ターゲット サービス エンドポイントへの接続と、ディレクトリ検索を実行する必要がある場合の Service Directory エンドポイントへの接続の両方で呼び出されます。
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
サービス ディレクトリ クエリの送信時刻をマークするためのアプリのコールバック。
これは、サービス エンドポイントのクエリ リクエストを送信しようとしたときに呼び出されます。これは、OnServiceEndpointQueryEnd と照合して、メッセージのフライト時間を補正するために使用されます。
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
Service Directory のレスポンスから時刻の値を配信するアプリのコールバック。
これは、サービス ディレクトリのクエリ レスポンスから時間情報を取得したときに呼び出されます。なお、このコールバックは、レスポンスが正常に解析され、時間情報が含まれている場合にのみ発生します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
ルート ディレクトリ情報のアクセサ関数。
どこかから始める必要があり、サービス ディレクトリから始める必要があります。まず、スタブ ディレクトリから始めます。このスタブ ディレクトリには、他のすべてに移動するサーバーのアドレスが含まれています。この情報の処理や来歴はデバイスによって異なる可能性があるため、アクセサーのコールバックをここで提供します。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
WEAVE_NO_ERROR。それ以外の場合は、読み込みプロセスが中止されます。
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
エラー条件とステータス条件のハンドラ。
サービス・マネージャのユーザーは、2 つの方法のいずれかで接続要求を実行しようとしたときに問題が発生した場合に通知されます。サービスからステータス レポートを受け取る場合や、内部で生成された WEAVE_ERROR を受け取る場合があります。いずれの場合も、情報はこのコールバックを通じて送信されます。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
パブリック関数
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
接続が確立される直前に呼び出されるコールバック関数を設定します。
詳細 | |||
---|---|---|---|
パラメータ |
|
WeaveServiceManager
WeaveServiceManager( void )
このメソッドは、WeaveServiceManager インスタンスを初期化します。
このインスタンスをさらに初期化するには、init() を呼び出す必要があります。
キャンセル
void cancel( uint64_t aServiceEp, void *aAppState )
このメソッドは、接続リクエストをキャンセルします。
このメソッドは、サービス エンドポイント ID と、リクエスト時に識別子として渡されたアプリケーション状態オブジェクトを指定して、接続リクエストをキャンセルします。それが最後の接続リクエストの場合、このメソッドは保留中の Service Directory 接続状態もすべてクリアします。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
clearCache
void clearCache( void )
このメソッドは、状態がターミナルの kServiceMgrState_Resolved 状態(Service Directory エンドポイントからのレスポンスが受信されたこと)の場合、マネージャーの状態とキャッシュをクリアします。
接続
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 オブジェクトにバインドされます。Service Directory のキャッシュがクリアされるまで、または Service Directory の別の検索が発生するまで、そのキャッシュは有効です。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
lookup
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
このメソッドは、サービス エンドポイントのディレクトリ情報を検索します。
サービス ディレクトリが解決されている場合、つまり connect() オペレーションが成功した場合、このメソッドはサービス エンドポイント識別子を指定してディレクトリ エントリを返します。
このメソッドは、サービス ディレクトリの内部実装の詳細を公開しているため、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_Relocated を含むステータス レポートを返すと、アプリケーションは 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 )
このメソッドは、サービス マネージャーを初期状態にリセットします。
このメソッドは、通信状態、キャッシュ状態、保留中の接続リクエストの状態など、Service Manager のすべての状態をリセットします。
このバージョンのメソッド(ここでは下位互換性を確保するため)は、エラーを受け取ってログに記録してから、reset(void) を呼び出します。
詳細 | |||
---|---|---|---|
パラメータ |
|
reset(void)
リセット
void reset( void )
このメソッドは、サービス マネージャーを初期状態にリセットします。
このメソッドは、通信状態、キャッシュ状態、保留中の接続リクエストの状態など、Service Manager のすべての状態をリセットします。
関連情報:リセット(WEAVE_ERROR)
未解決
void unresolve( WEAVE_ERROR aError )
このメソッドは、サービス ディレクトリのキャッシュを無効にします。
このメソッドはサービス ディレクトリのキャッシュ状態を設定し、次のリクエストでサービス マネージャーがサービス ディレクトリのクエリを発行します。
このバージョンのメソッド(ここでは下位互換性を確保するため)は、エラーを受け取ってログに記録してから、unresolve(void) を呼び出します。
詳細 | |||
---|---|---|---|
パラメータ |
|
unresolve(void)
未解決
void unresolve( void )
このメソッドは、サービス ディレクトリのキャッシュを無効にします。
このメソッドはサービス ディレクトリのキャッシュ状態を設定し、次のリクエストでサービス マネージャーがサービス ディレクトリのクエリを発行します。
関連情報:unresolve(WEAVE_ERROR)