nl:: Weave:: 프로필::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)
서비스 디렉터리 응답에서 시간 값을 전달하는 애플리케이션 콜백입니다.
서비스 디렉터리 쿼리 응답에서 시간 정보를 가져올 때 호출됩니다. 이 콜백은 응답이 성공적으로 파싱되고 시간 정보가 포함된 경우에만 발생합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
루트 디렉터리 액세스
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와 요청 시 식별자로 전달된 애플리케이션 상태 객체를 고려하여 연결 요청을 취소합니다. 마지막 연결 요청인 경우 이 메서드는 대기 중인 서비스 디렉터리 연결 상태도 삭제합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
지우기 캐시
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_ERRORS, 그렇지 않은 경우에는 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 )
이 메서드는 디렉터리 서비스에서 응답을 받지 못한 시간 초과 이벤트를 처리합니다.
재배치
void relocate( WEAVE_ERROR aError )
이 메서드에서 서비스 디렉터리 캐시의 위치가 변경됩니다.
서비스 엔드포인트가 상태 코드가 kStatus_ReLocation인 상태 보고서를 반환하면 애플리케이션에서 unResolve()를 호출하여 캐시를 지우고 연결 요청을 취소할 수 있습니다. 이 메서드는 처음으로 unResolve()를 호출하고 아직 문제가 해결되지 않은 경우 reset()을 호출하여 오류 처리를 단순화합니다.
이전 버전과의 호환성을 위해 이 버전의 메서드는 오류를 가져와 로깅한 다음 relocate(void)를 호출합니다 .
세부정보 | |||
---|---|---|---|
매개변수 |
|
relocate(void)
재배치
void relocate( void )
이 메서드에서 서비스 디렉터리 캐시의 위치가 변경됩니다.
서비스 엔드포인트가 상태 코드가 kStatus_ReLocation인 상태 보고서를 반환하면 애플리케이션에서 unResolve()를 호출하여 캐시를 지우고 연결 요청을 취소할 수 있습니다. 이 메서드는 처음으로 unResolve()를 호출하고 아직 문제가 해결되지 않은 경우 reset()을 호출하여 오류 처리를 단순화합니다.
참고 항목:relocate(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
디렉터리 목록 시작 부분에 호스트 이름과 포트 ID의 재정의 디렉터리 항목을 추가합니다.
reset
void reset( WEAVE_ERROR aError )
이 메서드는 서비스 관리자를 초기 상태로 재설정합니다.
이 메서드는 통신 상태, 캐시 상태, 대기 중인 연결 요청의 상태를 포함하여 모든 서비스 관리자 상태를 재설정합니다.
이전 버전과의 호환성을 위해 이 버전의 메서드는 오류를 가져와 로깅하고 reset(void)를 호출합니다 .
세부정보 | |||
---|---|---|---|
매개변수 |
|
reset(void)
reset
void reset( void )
이 메서드는 서비스 관리자를 초기 상태로 재설정합니다.
이 메서드는 통신 상태, 캐시 상태, 대기 중인 연결 요청 상태를 비롯한 모든 서비스 관리자 상태를 재설정합니다.
참고 항목:reset(WEAVE_ERROR)
해결되지 않음
void unresolve( WEAVE_ERROR aError )
이 메서드는 서비스 디렉터리 캐시를 무효화합니다.
이 메서드는 서비스 디렉터리 캐시 상태를 설정하여 다음 요청 시 서비스 관리자가 서비스 디렉터리 쿼리를 실행하도록 합니다.
이전 버전과의 호환성을 위해 이 버전의 메서드는 오류를 가져와 로깅한 다음 unResolve(void)를 호출합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
unResolve(void)
해결되지 않음
void unresolve( void )
이 메서드는 서비스 디렉터리 캐시를 무효화합니다.
이 메서드는 서비스 디렉터리 캐시 상태를 설정하여 다음 요청 시 서비스 관리자가 서비스 디렉터리 쿼리를 실행하도록 합니다.
참고 항목:unResolve(WEAVE_ERROR)