nl::Weave::Profiles::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 에포크 이후의 밀리초 수입니다.
[in] timeProcessMsec
이 쿼리를 처리하는 데 소요된 밀리초 수입니다.

RootDirectoryAccessor

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() 호출에 지정된 앱 상태 객체를 가리키는 포인터입니다.

clearCache

void clearCache(
  void
)

이 메서드는 상태가 터미널 kServiceMgrState_Resolved 상태인 경우 관리자의 상태와 캐시를 지웁니다. 즉, 서비스 디렉터리 엔드포인트의 응답이 수신되었음을 의미합니다.

connect

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
OnServiceEndpointQueryEndWithTimeInfo 유형의 함수 포인터로, 응답에 제공된 시간 필드를 사용하여 애플리케이션이 Weave 서비스와 동기화할 수 있도록 하는 서비스 디렉터리를 수신할 때 호출됩니다. 이 콜백은 서비스 관리자가 시간 정보가 포함된 응답을 받은 후에 이루어집니다. 콜백이 실행되기 전에 캐시가 이미 성공적으로 채워져 있어야 합니다.
[in] aConnectBegin
OnConnectBegin 유형의 함수 포인터로, 연결 설정 직전에 호출되며, 애플리케이션이 #WeaveConnection::Connect()에 전달된 인수를 관찰하고 선택적으로 변경할 수 있습니다. 값이 NULL (기본값)이면 콜백을 사용 중지합니다.
반환
함수 인수가 유효하지 않은 경우 WEAVE_ERROR_INVALID_ARGUMENT, 유효하지 않은 경우 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_Relocations인 상태 보고서를 반환하면 애플리케이션은 unresolve()를 호출하여 캐시를 지우고 연결 요청을 취소할 수 있습니다. 이 메서드는 처음으로 unresolve()를 호출하고 문제가 아직 해결되지 않은 경우 reset()을 호출하여 오류 처리를 간소화합니다.

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

세부정보
매개변수
[in] aError
로깅합니다.
참고 항목:
relocate(void)

재배치하다

void relocate(
  void
)

이 메서드는 서비스 디렉터리 캐시를 재배치합니다.

서비스 엔드포인트가 상태 코드가 kStatus_Relocations인 상태 보고서를 반환하면 애플리케이션은 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)을 호출합니다 .

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

재설정

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 인스턴스를 소멸시킵니다.