nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine

#include <src/lib/profiles/data-management/Current/TraitData.h>

스키마 엔진은 특정 특성과 관련된 스키마 정보를 가져와 WDM 기계가 사용할 수 있는 형식으로 파싱하고 변환하는 기능을 제공합니다.

요약

여기에는 PathHandles에서 WDM 경로로의 변환 (또는 그 반대), 스키마 자체를 해석/쿼리하는 메서드, 핸들에 따라 TLV에서 데이터를 읽고 쓰는 데 도움이 되는 메서드 등이 포함됩니다.

스키마 자체는 특정 트레잇에 대한 WDM 경로/데이터의 일반적인 파싱/컴포지션이 가능하도록 충분히 설명된 테이블 형식으로 저장됩니다. 이 테이블은 'code-gen'의 최종 출력이 됩니다. (생성된 코드가 없기 때문에 용어 자체가 오해의 소지가 있습니다. :P)

공개 정적 속성

kHandleTableOffset = 2
const uint32_t

공개 속성

mSchema
const Schema

공개 함수

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
두 개의 속성 핸들이 있을 때 두 핸들의 상위 요소 역할을 하는 가장 낮은 핸들을 계산합니다.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
지정된 핸들의 스키마 트리에서 깊이를 계산합니다.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
특정 상위 요소와 연결된 첫 번째 하위 핸들을 반환합니다.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
제공된 데이터 스키마 버전이 제공되면 이후 버전과 호환되는 가장 높은 스키마 버전이 반환됩니다.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
제공된 데이터 스키마 버전이 주어지면 호환되는 최소 스키마 버전을 반환합니다.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
특정 경로 핸들을 설명하는 PropertyInfo 구조에 대한 포인터를 반환합니다.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
기존 하위 요소에 핸들이 지정되면 특정 상위 요소와 연결된 다음 하위 핸들을 반환합니다.
GetParent(PropertyPathHandle aHandle) const
지정된 하위 경로 핸들의 상위 핸들을 반환합니다.
GetProfileId(void) const
uint32_t
연결된 트레잇의 프로필 ID를 반환합니다.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
PropertyPathHandle을 컨텍스트 태그의 배열로 변환합니다.
GetTag(PropertyPathHandle aHandle) const
uint64_t
경로 핸들과 연결된 태그를 반환합니다.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
이 함수는 버전 범위가 주어진 경우 해당 버전 범위와 이 스키마 엔진을 지원하는 스키마에서 지원하는 항목 간에 호환성 교차가 있는지 확인합니다.
IsDictionary(PropertyPathHandle aHandle) const
bool
핸들이 사전이고 사전에 없는 경우 true를 반환합니다. 아래 메서드를 참조하세요.
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
핸들이 사전 (사전 요소) 내부에 있는 경우 true를 반환합니다.
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
핸들이 스키마 트리의 리프 노드를 참조하는 경우 true를 반환합니다.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
지정된 핸들이 다른 핸들의 하위 요소인지 확인합니다.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
경로 핸들을 TLV 경로로 변환합니다.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
WDM 경로 요소의 루트에 위치가 지정된 리더에서 관련 태그를 읽고 이에 상응하는 경로 핸들을 제공합니다.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
WDM 경로의 문자열 표현이 주어지면 관련 태그를 읽고 이에 상응하는 경로 핸들을 제공합니다.
MatchesProfileId(uint32_t aProfileId) const
bool
전달된 ProfileId가 스키마에 저장된 프로필과 일치하면 true를 반환합니다.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
상응하는 데이터 요소의 경로 핸들과 작성자 위치가 주어지면 소스에서 리프 데이터를 가져와 작성자가 가리키는 버퍼에 스키마를 준수하는 방식으로 작성합니다.
RetrieveUpdatableDictionaryData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom) const
StoreData(PropertyPathHandle aHandle, nl::Weave::TLV::TLVReader & aReader, ISetDataDelegate *aDelegate, IPathFilter *aPathFilter) const
상응하는 데이터 요소에 경로 핸들과 리더가 배치되면 판독기가 가리키는 데이터 버퍼를 처리하고 리프 데이터 항목이 발생할 때마다 SetLeafData 호출을 호출하여 싱크에 저장합니다.

클래스

nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::IGetDataDelegate
nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::ISetDataDelegate

구조체

nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::PropertyInfo
nl::Weave::Profiles::DataManagement_Current::TraitSchemaEngine::Schema

스키마 정보를 포함하는 기본 스키마 구조

공개 정적 속성

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

공개 속성

mSchema

const Schema mSchema

공개 함수

FindLowestCommonAncestor

PropertyPathHandle FindLowestCommonAncestor(
  PropertyPathHandle aHandle1,
  PropertyPathHandle aHandle2,
  PropertyPathHandle *aHandle1BranchChild,
  PropertyPathHandle *aHandle2BranchChild
) const 

두 개의 속성 핸들이 있을 때 두 핸들의 상위 요소 역할을 하는 가장 낮은 핸들을 계산합니다.

또한 두 핸들이 각각 포함된 두 개의 하위 브랜치를 반환합니다 (같은 경우에도).

세부정보
반환 값
PropertyPathHandle
가장 낮은 상위 요소에 대한 핸들.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

지정된 핸들의 스키마 트리에서 깊이를 계산합니다.

세부정보
반환 값
int32_t
나무의 깊이

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

특정 상위 요소와 연결된 첫 번째 하위 핸들을 반환합니다.

세부정보
반환 값
PropertyPathHandle
첫 번째 하위 요소의 핸들

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

제공된 데이터 스키마 버전이 제공되면 이후 버전과 호환되는 가장 높은 스키마 버전이 반환됩니다.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

제공된 데이터 스키마 버전이 주어지면 호환되는 최소 스키마 버전을 반환합니다.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

특정 경로 핸들을 설명하는 PropertyInfo 구조에 대한 포인터를 반환합니다.

세부정보
반환 값
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

기존 하위 요소에 핸들이 지정되면 특정 상위 요소와 연결된 다음 하위 핸들을 반환합니다.

세부정보
반환 값
PropertyPathHandle
다음 하위 요소의 핸들입니다.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

지정된 하위 경로 핸들의 상위 핸들을 반환합니다.

상위 핸들이 사전 요소인 경우에도 핸들의 사전 키가 유지됩니다.

세부정보
반환 값
PropertyPathHandle
상위 요소의 핸들입니다.

GetProfileId

uint32_t GetProfileId(
  void
) const 

관련 트레잇의 프로필 ID를 반환합니다.

세부정보
반환 값
Trait
프로필 ID

GetRelativePathTags

WEAVE_ERROR GetRelativePathTags(
  const PropertyPathHandle aCandidateHandle,
  uint64_t *aTags,
  const uint32_t aTagsSize,
  uint32_t & aNumTags
) const 

PropertyPathHandle을 컨텍스트 태그의 배열로 변환합니다.

세부정보
매개변수
[in] aCandidateHandle
변환할 PropertyPathHandle.
[in] aTags
출력 배열을 가리키는 포인터입니다.
[in] aTagsSize
요소 수로 표시되는 aTags 배열의 크기입니다.
[out] aNumTags
aTag에 작성된 태그의 수입니다.
반환
성공한 경우 WEAVE_NO_ERROR, aTags가 너무 작아 전체 경로를 저장할 수 없는 경우 WEAVE_ERROR_NO_MEMORY를 반환합니다.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

경로 핸들과 연결된 태그를 반환합니다.

사전 요소인 경우 이 함수는 ProfileTag를 반환합니다. 그렇지 않으면 컨텍스트 태그를 반환합니다.

세부정보
반환 값
uint64_t

GetVersionIntersection

bool GetVersionIntersection(
  SchemaVersionRange & aVersion,
  SchemaVersionRange & aIntersection
) const 

이 함수는 버전 범위가 주어진 경우 해당 버전 범위와 이 스키마 엔진을 지원하는 스키마에서 지원하는 항목 간에 호환성 교차가 있는지 확인합니다.

교차가 있는 경우 함수는 true를 반환하고 전달된 aIntersection 인수를 업데이트하여 교차 테스트의 결과를 반영합니다.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

핸들이 사전이고 사전에 없는 경우 true를 반환합니다. 아래 메서드를 참조하세요.

세부정보
반환 값
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

핸들이 사전 (사전 요소) 내부에 있는 경우 true를 반환합니다.

전달된 핸들 (aDictionaryItemHandle)은 사전 내에서 최상위 사전 요소 핸들을 가리키도록 업데이트됩니다.

세부정보
반환 값
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

핸들이 스키마 트리의 리프 노드를 참조하는 경우 true를 반환합니다.

세부정보
반환 값
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

지정된 핸들이 다른 핸들의 하위 요소인지 확인합니다.

간접 상위 항목이 될 수 있습니다.

세부정보
반환 값
bool

MapHandleToPath

WEAVE_ERROR MapHandleToPath(
  PropertyPathHandle aHandle,
  nl::Weave::TLV::TLVWriter & aPathWriter
) const 

경로 핸들을 TLV 경로로 변환합니다.

세부정보
반환 값
WEAVE_NO_ERROR
성공 시
other
핸들을 TLV 경로로 변환할 수 없음

MapPathToHandle

WEAVE_ERROR MapPathToHandle(
  nl::Weave::TLV::TLVReader & aPathReader,
  PropertyPathHandle & aHandle
) const 

WDM 경로 요소의 루트에 위치가 지정된 리더에서 관련 태그를 읽고 이에 상응하는 경로 핸들을 제공합니다.

세부정보
반환 값
WEAVE_NO_ERROR
성공 시
WEAVE_ERROR_TLV_TAG_NOT_FOUND
형식이 잘못되었거나 잘못 지정된 경로로 인해 일치하는 핸들을 찾을 수 없는 경우입니다.

MapPathToHandle

WEAVE_ERROR MapPathToHandle(
  const char *aPathString,
  PropertyPathHandle & aHandle
) const 

WDM 경로의 문자열 표현이 주어지면 관련 태그를 읽고 이에 상응하는 경로 핸들을 제공합니다.

WDM 경로는 다음 규칙에 따라 문자열로 표현됩니다.

  • 태그는 /(으)로 구분됩니다.
  • 경로는 선행 /로 시작해야 하며(MUST) 후행 슬래시를 포함하면 안 됩니다(MUST NOT).
  • WDM 경로의 숫자 태그는 정수-문자열 인코딩에 표준 C 라이브러리를 사용하여 인코딩되어야 합니다(MUST). 즉, 십진수 인코딩(기본값)은 선행 0을 포함하면 안 되며(MUST NOT), 16진수 인코딩은 0x로 시작해야 하며(MUST), 8진수 인코딩은 선행 0를 포함해야 합니다(MUST).

세부정보
반환 값
WEAVE_NO_ERROR
성공 시
WEAVE_ERROR_TLV_TAG_NOT_FOUND
일치하는 핸들을 찾을 수 없는 경우입니다.
WEAVE_ERROR_INVALID_ARGUMENT
경로 문자열의 형식이 잘못된 경우

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

전달된 ProfileId가 스키마에 저장된 프로필과 일치하는 경우 true를 반환합니다.

세부정보
반환 값
bool

RetrieveData

WEAVE_ERROR RetrieveData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  IGetDataDelegate *aDelegate,
  IDirtyPathCut *apDirtyPathCut
) const 

상응하는 데이터 요소의 경로 핸들과 작성자 위치가 주어지면 소스에서 리프 데이터를 가져와 작성자가 가리키는 버퍼에 스키마를 준수하는 방식으로 작성합니다.

세부정보
반환 값
WEAVE_NO_ERROR
성공 시
other
데이터를 쓰는 중에 오류가 발생했습니다.

RetrieveUpdatableDictionaryData

WEAVE_ERROR RetrieveUpdatableDictionaryData(
  PropertyPathHandle aHandle,
  uint64_t aTagToWrite,
  nl::Weave::TLV::TLVWriter & aWriter,
  IGetDataDelegate *aDelegate,
  PropertyPathHandle & aPropertyPathHandleOfDictItemToStartFrom
) const 

StoreData

WEAVE_ERROR StoreData(
  PropertyPathHandle aHandle,
  nl::Weave::TLV::TLVReader & aReader,
  ISetDataDelegate *aDelegate,
  IPathFilter *aPathFilter
) const 

상응하는 데이터 요소에 경로 핸들과 리더가 배치되면 판독기가 가리키는 데이터 버퍼를 처리하고 리프 데이터 항목이 발생할 때마다 SetLeafData 호출을 호출하여 싱크에 저장합니다.

세부정보
반환 값
WEAVE_NO_ERROR
성공 시
other
데이터 파싱/처리 중에 오류가 발생했습니다.