nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
Weave 서비스 디렉토리의 관리자 객체입니다.
요약
Weave 서비스 관리자는 애플리케이션이 디렉터리 서비스에 액세스하는 기본 인터페이스입니다. 따라서 서비스 엔드포인트와 연결된 디렉터리 항목을 조회하고, 여기에서 찾은 하나 이상의 호스트 이름에 대해 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(*
서비스 디렉터리 응답에서 시간 값을 전송하는 애플리케이션 콜백입니다. |
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()에 전달된 인수를 관찰하고 선택적으로 변경하는 데 사용할 수 있습니다. 이 콜백은 대상 서비스 엔드포인트에 연결할 때와 디렉터리 조회를 수행해야 하는 경우 서비스 디렉터리 엔드포인트에 대한 연결 모두에 대해 호출됩니다.
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 및 애플리케이션 상태 객체를 고려하여 연결 요청을 취소합니다. 마지막 연결 요청인 경우 이 메서드는 대기 중인 서비스 디렉터리 연결 상태도 삭제합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
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() 작업이 성공한 경우) 이 메서드는 서비스 엔드포인트 식별자를 사용하여 디렉터리 항목을 반환합니다.
이 메서드는 서비스 디렉터리의 내부 구현 세부정보를 노출합니다. 구현 시 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 )
이 메서드는 디렉터리 서비스에서 응답이 수신되지 않는 제한 시간 이벤트를 처리합니다.
relocate
void relocate( WEAVE_ERROR aError )
이 메서드는 서비스 디렉터리 캐시를 재배치합니다.
서비스 엔드포인트가 상태 코드 kStatus_Relocated와 함께 상태 보고서를 반환하면 애플리케이션은 unresolve()를 호출하여 캐시를 지우고 연결 요청을 취소할 수 있습니다. 이 메서드는 처음에는 unresolve()를 호출하고 문제가 아직 해결되지 않은 경우 reset()을 호출하여 오류 처리를 간소화합니다.
이 버전의 메서드는 이전 버전과의 호환성을 위해 오류를 수신하고 기록한 다음 relocate(void)를 호출합니다 .
세부정보 | |||
---|---|---|---|
매개변수 |
|
relocate(void)
relocate
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 )
이 메서드는 서비스 관리자를 초기 상태로 재설정합니다.
이 메서드는 커뮤니케이션 상태, 캐시 상태, 대기 중인 연결 요청의 상태를 비롯한 모든 서비스 관리자 상태를 재설정합니다.
참고:reset(WEAVE_ERROR)
unresolve
void unresolve( WEAVE_ERROR aError )
이 메서드는 서비스 디렉터리 캐시를 무효화합니다.
이 메서드는 다음 요청 시 서비스 관리자가 서비스 디렉터리 쿼리를 실행하도록 서비스 디렉터리 캐시 상태를 설정합니다.
이 버전의 메서드는 이전 버전과의 호환성을 위해 오류를 수신하고 기록한 다음 unresolve(void)를 호출합니다 .
세부정보 | |||
---|---|---|---|
매개변수 |
|
unresolve(void)
unresolve
void unresolve( void )
이 메서드는 서비스 디렉터리 캐시를 무효화합니다.
이 메서드는 다음 요청 시 서비스 관리자가 서비스 디렉터리 쿼리를 실행하도록 서비스 디렉터리 캐시 상태를 설정합니다.
참고:unresolve(WEAVE_ERROR)