nl::Weave::프로필::ServiceDirectory::WeaveServiceManager

#include <src/lib/profiles/service-directory/ServiceDirectory.h>

Weave 서비스 디렉터리의 관리자 객체

요약

Weave 서비스 관리자는 디렉터리 서비스에 대한 애플리케이션의 기본 인터페이스입니다. 따라서 서비스 엔드포인트와 연결된 디렉터리 항목을 조회할 때 발생하는 정보 표시를 숨기고, 해당 위치에 있는 호스트 이름 중 하나 이상에서 DNS 조회를 해 보고, 연결을 시도하는 등 여러 작업을 시도합니다. 서비스 디렉터리 정보의 캐시를 관리할 수도 있습니다.

생성자 및 소멸자

WeaveServiceManager(void)
이 메서드는 WeaveServiceManager 인스턴스를 초기화합니다.
~WeaveServiceManager(void)
이 메서드는 WeaveServiceManager 인스턴스를 폐기합니다.

공개 유형

@303{
  kWeave_DefaultSendTimeout = 15000
}
enum
OnConnectBegin)(struct ServiceConnectBeginArgs &args) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBegin
void(*
연결 설정 직전에 애플리케이션 콜백이 실행됩니다.
OnServiceEndpointQueryBegin)(void) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBegin
void(*
발신 서비스 디렉터리 쿼리의 시간을 표시하는 애플리케이션 콜백입니다.
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec) nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfo
void(*
서비스 디렉터리 응답에서 시간 값을 전달하는 애플리케이션 콜백입니다.
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::StatusHandler
void(*
오류 및 상태 조건을 위한 핸들러입니다.

공개 함수

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::Weave::Profiles::ServiceDirectory::WeaveServiceManager::ConnectRequest를 실행합니다.

이 클래스는 서비스 관리자가 관리하는 단일 트랜잭션을 나타냅니다.

공개 유형

@303

 @303
속성
kWeave_DefaultSendTimeout

거래소 컨텍스트가 시간 초과되기 전에 디렉터리 쿼리에 대한 응답을 수신해야 하는 시간(밀리초)입니다.

OnConnectBegin

void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)

연결 설정 직전에 애플리케이션 콜백이 실행됩니다.

이 콜백은 서비스 연결을 설정하는 동안 애플리케이션이 #WeaveConnection::Connect()에 전달된 인수를 관찰하고 선택적으로 변경하는 데 사용할 수 있습니다. 이 콜백은 대상 서비스 엔드포인트에 대한 연결과 디렉터리 조회가 필요한 경우 서비스 디렉터리 엔드포인트에 대한 연결에 대해 호출됩니다.

OnServiceEndpointQueryBegin

void(* OnServiceEndpointQueryBegin)(void)

발신 서비스 디렉터리 쿼리의 시간을 표시하는 애플리케이션 콜백입니다.

서비스 엔드포인트 쿼리 요청을 전송하려고 할 때 호출됩니다. 메시지 서비스 시간 보상을 보완하기 위해 OnServiceEndpointQueryEnd에 매칭하는 데 사용됩니다.

OnServiceEndpointQueryEndWithTimeInfo

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

서비스 디렉터리 응답에서 시간 값을 전달하는 애플리케이션 콜백입니다.

서비스 디렉터리 쿼리 응답에서 시간 정보를 가져올 때 호출됩니다. 이 콜백은 응답이 성공적으로 파싱되고 시간 정보가 포함된 경우에만 발생합니다.

세부정보
매개변수
[in] timeQueryReceiptMsec
쿼리가 서버 측에서 수신된 POSIX 기점을 기준으로 하는 m초 수입니다.
[in] timeProcessMsec
이 쿼리를 처리하는 데 소요된 밀리초의 수입니다.

루트 디렉터리 액세스

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

루트 디렉터리 정보의 접근자 함수입니다.

다른 곳에서 시작해야 하는 서비스 주소가 있는 스텁 디렉터리로 시작하고 서비스 디렉터리부터 시작해야 합니다. 이 정보의 처리와 출처가 기기마다 다를 수 있으므로 여기에서 접근자 콜백을 제공합니다.

세부정보
매개변수
[out] aDirectory
디렉터리 정보를 쓰기 위한 버퍼 포인터
[in] aLength
지정된 버퍼의 길이(바이트)입니다.
반환
성공 시 WEAVE_NO_ERROR: 그렇지 않으면 로드 프로세스가 중단됩니다.

StatusHandler

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

오류 및 상태 조건을 위한 핸들러입니다.

서비스 관리자 사용자는 두 가지 방법 중 하나로 연결 요청을 실행하는 데 문제가 있을 수 있습니다. 서비스에서 상태 보고서를 수신하거나 내부적으로 생성된 WEAVE_ERROR가 수신될 수 있습니다. 두 경우 모두 정보는 이 콜백을 통해 제공됩니다.

세부정보
매개변수
[in] anAppState
해당하는 conect() 호출에 전달된 애플리케이션 객체에 대한 포인터입니다.
[in] anError
연결 요청을 실행하는 과정에서 오류가 발생했음을 나타내는 Weave 오류 코드입니다. 오류가 발생하지 않았거나 상태 보고서가 제공되지 않는 경우 WEAVE_NO_ERROR입니다.
[in] aStatusReport
원격 디렉터리 서비스에서 생성한 상태 보고서에 대한 포인터입니다. 상태 인수가 없고 이전 인수에 내부 오류가 전달된 경우 이 인수는 NULL입니다.

공개 함수

SetConnectBeginCallback

void SetConnectBeginCallback(
  OnConnectBegin aConnectBegin
)

연결 설정 직전에 호출되는 콜백 함수를 설정합니다.

세부정보
매개변수
[in] aConnectBegin
콜백 함수에 대한 포인터입니다. NULL 값은 콜백을 사용 중지합니다.

WeaveServiceManager 데이터

 WeaveServiceManager(
  void
)

이 메서드는 WeaveServiceManager 인스턴스를 초기화합니다.

이 인스턴스를 추가로 초기화하려면 init()를 호출해야 합니다.

취소

void cancel(
  uint64_t aServiceEp,
  void *aAppState
)

이 메서드는 연결 요청을 취소합니다.

이 메서드는 서비스 엔드포인트 ID와 요청 시 식별자로 전달된 애플리케이션 상태 객체를 고려하여 연결 요청을 취소합니다. 마지막 연결 요청인 경우 이 메서드는 대기 중인 서비스 디렉터리 연결 상태도 삭제합니다.

세부정보
매개변수
[in] aServiceEp
취소되는 요청의 서비스 엔드포인트 ID입니다.
[in] anAppState
connect() 호출에서 제공된 앱 상태 객체에 대한 포인터입니다.

지우기 캐시

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()을 통해 연결 요청을 취소할 수 있습니다.

이 메서드는 로컬 캐시에 프로비저닝된 기본 데이터나 디렉터리 서비스 이동으로 데이터를 채우기 전에 호출할 수 있습니다. 서비스 관리자는 캐시 콘텐츠를 확인하기 전에 요청을 큐에 추가합니다.

세부정보
매개변수
[in] aServiceEp
원하는 서비스의 ServiceDirectory.h에 정의된 서비스 엔드포인트 식별자입니다.
[in] aAuthMode
관심 있는 서비스에 연결할 때 사용할 인증 모드입니다.
[in] aAppState
콜백에 인수로 전달되는 애플리케이션 상태 객체에 대한 포인터입니다.
[in] aStatusHandler
연결 완료 전에 오류가 발생하는 경우 호출할 콜백입니다.
[in] aConnectionCompleteHandler
요청된 연결이 완료된 경우 호출할 콜백입니다. Weave 오류 코드와 함께 연결에 실패할 수 있습니다.
[in] aConnectTimeoutMsecs
선택사항인 TCP 연결 제한 시간(밀리초)입니다.
[in] aConnectIntf
연결을 설정할 선택적 인터페이스입니다.
반환
성공 시 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() 및 기타 메서드를 호출할 수 있습니다.

세부정보
매개변수
[in] aExchangeMgr
모든 서비스 디렉터리 프로필 교환에 사용할 교환 관리자에 대한 포인터입니다.
[in] aCache
디렉터리 정보를 캐시하는 데 사용할 수 있는 버퍼 포인터입니다.
[in] aCacheLen
캐시의 길이(바이트)입니다.
[in] aAccessor
디렉터리 조회의 시작점으로 루트 디렉터리를 로드하기 위해 호출할 ServiceDirectory.h에 정의된 콜백입니다.
[in] aDirAuthMode
디렉터리 서비스와 통신할 때 사용할 인증 모드입니다.
[in] aServiceEndpointQueryBegin
서비스 디렉터리 요청 시작 시 호출되는 OnServiceEndpointQueryBegin 유형의 함수 포인터로, 서비스 디렉터리 프로토콜에서 제공된 시간 동기화를 사용하려는 경우 애플리케이션 코드가 시간을 표시할 수 있습니다.
[in] aServiceEndpointQueryEndWithTimeInfo
응답에서 지정된 시간 필드를 사용하여 애플리케이션이 Weave 서비스와 동기화할 수 있도록 하는 서비스 디렉터리 수신 시 호출되는 OnServiceEndpointQueryEndWithTimeInfo 유형의 함수 포인터입니다. 서비스 콜백이 시간 정보가 포함된 응답을 받은 후에 호출됩니다. 캐시가 이미 채워져 있어야 콜백이 실행됩니다.
[in] aConnectBegin
연결 설정 직전에 호출되는 OnConnectBegin 유형의 함수 포인터로, 애플리케이션이 #WeaveConnection::Connect()에 전달된 인수를 관찰하고 선택적으로 변경할 수 있습니다. NULL (기본값) 값은 콜백을 사용 중지합니다.
반환
함수 인수가 잘못된 경우 WEAVE_ERROR_INVALID_ERRORS, 그렇지 않은 경우에는 WEAVE_NO_ERROR입니다.

lookup

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  HostPortList *outHostPortList
)

이 메서드는 서비스 엔드포인트의 디렉터리 정보를 조회합니다.

서비스 디렉터리가 확인되면, 즉 connect() 작업이 성공한 경우 이 메서드는 제공된 HostPortList 객체를 채웁니다.

참고: HostPortListWeaveServiceManager 객체에 결합되며 서비스 디렉터리 캐시가 삭제되거나 다른 서비스 디렉터리 조회가 발생할 때까지 유효합니다.

세부정보
매개변수
[in] aServiceEp
조회할 서비스 엔드포인트의 식별자입니다.
[out] outHostPortList
디렉터리 항목을 성공적으로 조회할 때 채워지는 HostPortList에 대한 포인터입니다. NULL이면 안 됩니다.
반환 값
WEAVE_NO_ERROR
성공하거나 그렇지 않으면 각 오류 코드입니다.
WEAVE_ERROR_INVALID_SERVICE_EP
지정된 서비스 엔드포인트를 찾을 수 없는 경우.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
디렉터리에 알 수 없는 디렉터리 항목 유형이 포함되어 있는 경우.

lookup

WEAVE_ERROR lookup(
  uint64_t aServiceEp,
  uint8_t *aControlByte,
  uint8_t **aDirectoryEntry
)

이 메서드는 서비스 엔드포인트의 디렉터리 정보를 조회합니다.

서비스 디렉터리가 확인되면, 즉 connect() 작업이 성공한 경우 이 메서드는 서비스 엔드포인트 식별자를 사용하여 디렉터리 항목을 반환합니다.

이 메서드는 서비스 디렉터리의 내부 구현 세부정보를 노출하므로 구현은 HostPortList를 생성하는 이 메서드의 변형을 사용하는 것이 좋습니다.

세부정보
매개변수
[in] aServiceEp
조회할 서비스 엔드포인트의 식별자입니다.
[out] aControlByte
디렉터리 항목 제어 바이트를 작성할 위치에 대한 포인터입니다.
[out] aDirectoryEntry
디렉터리 대상으로 전달할 포인터 포인터입니다.
반환 값
WEAVE_NO_ERROR
성공하거나 그렇지 않으면 각 오류 코드입니다.
WEAVE_ERROR_INVALID_SERVICE_EP
지정된 서비스 엔드포인트를 찾을 수 없는 경우.
WEAVE_ERROR_INVALID_DIRECTORY_ENTRY_TYPE
디렉터리에 알 수 없는 디렉터리 항목 유형이 포함되어 있는 경우.

onConnectionClosed

void onConnectionClosed(
  WEAVE_ERROR aError
)

이 메서드는 연결된 Weave 컨텍스트에서 보고된 연결 종료 이벤트를 처리합니다.

세부정보
매개변수
[in] aError
이 연결이 종료된 이유를 나타내는 Weave 오류입니다.

onConnectionComplete

void onConnectionComplete(
  WEAVE_ERROR aError
)

이 메서드는 서비스 엔드포인트 쿼리 트랜잭션의 연결 완료 이벤트를 처리합니다.

다음과 같은 몇 가지 가능성이 있습니다. 우선 연결 실패의 원인이 될 수 있습니다. 그렇지 않으면 연결이 실제로 완료된 것이므로 교환 컨텍스트를 열고 디렉터리 쿼리를 전송합니다.

세부정보
매개변수
[in] aError
연결 설정 중에 오류가 있는 경우 Weave 오류입니다.

onResponseReceived

void onResponseReceived(
  uint32_t aProfileId,
  uint8_t aMsgType,
  PacketBuffer *aMsg
)

이 메서드는 디렉터리 서비스와의 대화에서 모든 응답 메시지를 처리합니다.

세부정보
매개변수
[in] aProfileId
이 수신 메시지의 프로필 ID입니다.
[in] aMsgType
이 메시지의 프로필별 유형입니다.
[in] aMsg
이 메일의 콘텐츠

onResponseTimeout

void onResponseTimeout(
  void
)

이 메서드는 디렉터리 서비스에서 응답을 받지 못한 시간 초과 이벤트를 처리합니다.

재배치

void relocate(
  WEAVE_ERROR aError
)

이 메서드에서 서비스 디렉터리 캐시의 위치가 변경됩니다.

서비스 엔드포인트가 상태 코드가 kStatus_ReLocation인 상태 보고서를 반환하면 애플리케이션에서 unResolve()를 호출하여 캐시를 지우고 연결 요청을 취소할 수 있습니다. 이 메서드는 처음으로 unResolve()를 호출하고 아직 문제가 해결되지 않은 경우 reset()을 호출하여 오류 처리를 단순화합니다.

이전 버전과의 호환성을 위해 이 버전의 메서드는 오류를 가져와 로깅한 다음 relocate(void)를 호출합니다 .

세부정보
매개변수
[in] aError
로그할 수 있습니다.
참고 항목:
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)를 호출합니다 .

세부정보
매개변수
[in] aError
이 작업을 트리거한 오류입니다.
참고 항목:
reset(void)

reset

void reset(
  void
)

이 메서드는 서비스 관리자를 초기 상태로 재설정합니다.

이 메서드는 통신 상태, 캐시 상태, 대기 중인 연결 요청 상태를 비롯한 모든 서비스 관리자 상태를 재설정합니다.

참고 항목:
reset(WEAVE_ERROR)

해결되지 않음

void unresolve(
  WEAVE_ERROR aError
)

이 메서드는 서비스 디렉터리 캐시를 무효화합니다.

이 메서드는 서비스 디렉터리 캐시 상태를 설정하여 다음 요청 시 서비스 관리자가 서비스 디렉터리 쿼리를 실행하도록 합니다.

이전 버전과의 호환성을 위해 이 버전의 메서드는 오류를 가져와 로깅한 다음 unResolve(void)를 호출합니다.

세부정보
매개변수
[in] aError
이 작업을 트리거한 오류입니다.
참고 항목:
unResolve(void)

해결되지 않음

void unresolve(
  void
)

이 메서드는 서비스 디렉터리 캐시를 무효화합니다.

이 메서드는 서비스 디렉터리 캐시 상태를 설정하여 다음 요청 시 서비스 관리자가 서비스 디렉터리 쿼리를 실행하도록 합니다.

참고 항목:
unResolve(WEAVE_ERROR)

약 WeaveServiceManager

 ~WeaveServiceManager(
  void
)

이 메서드는 WeaveServiceManager 인스턴스를 폐기합니다.