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

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

Công cụ giản đồ này lấy thông tin giản đồ được liên kết với một đặc điểm cụ thể và cung cấp các phương tiện để phân tích cú pháp và dịch thông tin đó thành dạng có thể sử dụng được bằng máy WDM.

Tóm tắt

Điều này bao gồm việc chuyển đổi từ PathHandles sang đường dẫn WDM (và ngược lại), các phương thức để diễn giải/truy vấn giản đồ và các phương thức để giúp đọc/ghi dữ liệu đến/từ TLV dựa trên một tên người dùng cụ thể.

Giản đồ được lưu trữ ở dạng bảng, được mô tả đầy đủ để cho phép phân tích cú pháp/kết hợp chung các đường dẫn/dữ liệu WDM cho mọi đặc điểm nhất định. Các bảng này sẽ là kết quả cuối cùng của "code-gen" (Bản thân thuật ngữ này có phần gây hiểu lầm do không có bất kỳ mã nào được tạo :P)

Thuộc tính tĩnh công khai

kHandleTableOffset = 2
const uint32_t

Các thuộc tính công khai

mSchema
const Schema

Hàm công khai

FindLowestCommonAncestor(PropertyPathHandle aHandle1, PropertyPathHandle aHandle2, PropertyPathHandle *aHandle1BranchChild, PropertyPathHandle *aHandle2BranchChild) const
Với 2 tên người dùng tài sản, hãy tính toán tên người dùng thấp nhất đóng vai trò là thành phần mẹ của cả 2 tên người dùng này.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Tính chiều sâu trong cây giản đồ cho một tên người dùng cho trước.
GetDictionaryItemHandle(PropertyPathHandle aParentHandle, uint16_t aDictionaryKey) const
GetFirstChild(PropertyPathHandle aParentHandle) const
Trả về tên người dùng con đầu tiên liên kết với một mẹ cụ thể.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Với phiên bản giản đồ dữ liệu đã cung cấp, giá trị này sẽ trả về phiên bản giản đồ tương thích chuyển tiếp cao nhất.
GetLowestCompatibleVersion(SchemaVersion aVersion) const
SchemaVersion
Với phiên bản giản đồ dữ liệu đã cung cấp, giá trị này sẽ trả về phiên bản giản đồ tương thích tối thiểu.
GetMap(PropertyPathHandle aHandle) const
const PropertyInfo *
Trả về con trỏ đến cấu trúc PropertyInfo mô tả một ô điều khiển đường dẫn cụ thể.
GetMaxVersion() const
SchemaVersion
GetMinVersion() const
SchemaVersion
GetNextChild(PropertyPathHandle aParentId, PropertyPathHandle aChildHandle) const
Khi cung cấp tên người dùng cho một thành phần con hiện có, hãy trả về tên người dùng con tiếp theo được liên kết với một thành phần mẹ cụ thể.
GetParent(PropertyPathHandle aHandle) const
Trả về tên người dùng mẹ của một tên người dùng đường dẫn con cụ thể.
GetProfileId(void) const
uint32_t
Trả về mã hồ sơ của trait được liên kết.
GetRelativePathTags(const PropertyPathHandle aCandidateHandle, uint64_t *aTags, const uint32_t aTagsSize, uint32_t & aNumTags) const
Chuyển đổi PropertyPathHandle thành một mảng thẻ ngữ cảnh.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Trả về thẻ liên kết với một ô điều khiển đường dẫn.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Khi đưa ra phạm vi phiên bản, hàm này sẽ kiểm tra xem có điểm tương thích nào giữa phiên bản đó và nội dung được giản đồ đang hỗ trợ công cụ giản đồ này hỗ trợ hay không.
IsDictionary(PropertyPathHandle aHandle) const
bool
Trả về true nếu tên người dùng là một từ điển (và không có trong từ điển – xem phương thức bên dưới).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Trả về true nếu tên người dùng bên trong từ điển (một phần tử trong từ điển).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Trả về true nếu ô điều khiển tham chiếu đến một nút lá trong cây giản đồ.
IsNullable(PropertyPathHandle aHandle) const
bool
IsOptional(PropertyPathHandle aHandle) const
bool
IsParent(PropertyPathHandle aChildHandle, PropertyPathHandle aParentHandle) const
bool
Kiểm tra xem một tên người dùng cụ thể có phải là con của một tên người dùng khác hay không.
MapHandleToPath(PropertyPathHandle aHandle, nl::Weave::TLV::TLVWriter & aPathWriter) const
Chuyển đổi ô điều khiển đường dẫn thành đường dẫn TLV.
MapPathToHandle(nl::Weave::TLV::TLVReader & aPathReader, PropertyPathHandle & aHandle) const
Với một trình đọc nằm ở gốc của phần tử đường dẫn WDM, hãy đọc to các thẻ có liên quan và cung cấp tên người dùng đường dẫn tương đương.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
Với bản trình bày một chuỗi của đường dẫn WDM, hãy đọc to các thẻ có liên quan và cung cấp tên người dùng tương đương cho đường dẫn.
MatchesProfileId(uint32_t aProfileId) const
bool
Trả về true nếu profileId đã chuyển khớp với giá trị được lưu trữ trong giản đồ.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Khi bạn cung cấp một ô điều khiển đường dẫn và vị trí của trình ghi trên phần tử dữ liệu tương ứng, hãy truy xuất dữ liệu leaf từ nguồn và ghi dữ liệu đó vào vùng đệm mà người viết chỉ đến theo cách tuân thủ giản đồ.
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
Khi có một ô điều khiển đường dẫn và một trình đọc được đặt trên phần tử dữ liệu tương ứng, hãy xử lý vùng đệm dữ liệu mà trình đọc trỏ đến và lưu trữ vào bồn lưu trữ dữ liệu bằng cách gọi lệnh gọi SetLeafData mỗi khi gặp mục dữ liệu leaf.

Lớp

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

Cấu trúc

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

Cấu trúc giản đồ chính chứa thông tin giản đồ.

Thuộc tính tĩnh công khai

kHandleTableOffset

const uint32_t kHandleTableOffset = 2

Các thuộc tính công khai

mSchema

const Schema mSchema

Hàm công khai

FindLowestCommonAncestor

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

Với 2 tên người dùng tài sản, hãy tính toán tên người dùng thấp nhất đóng vai trò là thành phần mẹ của cả 2 tên người dùng này.

Ngoài ra, hãy trả về 2 nhánh con chứa từng tên trong số 2 tên người dùng đó (ngay cả khi chúng giống nhau).

Thông tin chi tiết
Giá trị trả về
PropertyPathHandle
Xử lý cho cấp độ gốc thấp nhất.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Tính chiều sâu trong cây giản đồ cho một tên người dùng cho trước.

Thông tin chi tiết
Giá trị trả về
int32_t
Chiều sâu trong cây

GetDictionaryItemHandle

PropertyPathHandle GetDictionaryItemHandle(
  PropertyPathHandle aParentHandle,
  uint16_t aDictionaryKey
) const 

GetFirstChild

PropertyPathHandle GetFirstChild(
  PropertyPathHandle aParentHandle
) const 

Trả về tên người dùng con đầu tiên liên kết với một mẹ cụ thể.

Thông tin chi tiết
Giá trị trả về
PropertyPathHandle
Tên người dùng của thành phần con đầu tiên.

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Với phiên bản giản đồ dữ liệu đã cung cấp, giá trị này sẽ trả về phiên bản giản đồ tương thích chuyển tiếp cao nhất.

GetLowestCompatibleVersion

SchemaVersion GetLowestCompatibleVersion(
  SchemaVersion aVersion
) const 

Với phiên bản giản đồ dữ liệu đã cung cấp, giá trị này sẽ trả về phiên bản giản đồ tương thích tối thiểu.

GetMap

const PropertyInfo * GetMap(
  PropertyPathHandle aHandle
) const 

Trả về con trỏ đến cấu trúc PropertyInfo mô tả một ô điều khiển đường dẫn cụ thể.

Thông tin chi tiết
Giá trị trả về
PropertyInfo*

GetMaxVersion

SchemaVersion GetMaxVersion() const 

GetMinVersion

SchemaVersion GetMinVersion() const 

GetNextChild

PropertyPathHandle GetNextChild(
  PropertyPathHandle aParentId,
  PropertyPathHandle aChildHandle
) const 

Khi cung cấp tên người dùng cho một thành phần con hiện có, hãy trả về tên người dùng con tiếp theo được liên kết với một thành phần mẹ cụ thể.

Thông tin chi tiết
Giá trị trả về
PropertyPathHandle
Tên người dùng của thành phần con tiếp theo.

GetParent

PropertyPathHandle GetParent(
  PropertyPathHandle aHandle
) const 

Trả về tên người dùng mẹ của một tên người dùng đường dẫn con cụ thể.

Các khoá từ điển trong ô điều khiển được giữ nguyên trong trường hợp ô điều khiển mẹ cũng là phần tử từ điển.

Thông tin chi tiết
Giá trị trả về
PropertyPathHandle
Tên người dùng của thành phần mẹ.

GetProfileId

uint32_t GetProfileId(
  void
) const 

Trả về mã hồ sơ của trait được liên kết.

Thông tin chi tiết
Giá trị trả về
Trait
mã hồ sơ

GetRelativePathTags

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

Chuyển đổi PropertyPathHandle thành một mảng thẻ ngữ cảnh.

Thông tin chi tiết
Tham số
[in] aCandidateHandle
PropertyPathHandle sẽ được chuyển đổi.
[in] aTags
Con trỏ đến mảng đầu ra.
[in] aTagsSize
Kích thước của mảng aTag, theo số lượng phần tử.
[out] aNumTags
Số lượng thẻ được ghi vào Thẻ
Trả về
WEAVE_NO_ERROR trong trường hợp thành công; WEAVE_ERROR_NO_MEMORY nếu aTag quá nhỏ để lưu trữ đường dẫn đầy đủ.

GetTag

uint64_t GetTag(
  PropertyPathHandle aHandle
) const 

Trả về thẻ liên kết với một ô điều khiển đường dẫn.

Nếu đó là một phần tử từ điển, hàm này sẽ trả về ProfileTag. Nếu không, hàm này sẽ trả về thẻ ngữ cảnh.

Thông tin chi tiết
Giá trị trả về
uint64_t

GetVersionIntersection

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

Khi đưa ra phạm vi phiên bản, hàm này sẽ kiểm tra xem có điểm tương thích nào giữa phiên bản đó và nội dung được giản đồ đang hỗ trợ công cụ giản đồ này hỗ trợ hay không.

Nếu có một giao lộ, hàm sẽ trả về giá trị true và cập nhật đối số aIntersection được truyền vào để phản ánh kết quả kiểm thử giao lộ đó.

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

Trả về true nếu tên người dùng là một từ điển (và không có trong từ điển – xem phương thức bên dưới).

Thông tin chi tiết
Giá trị trả về
bool

IsEphemeral

bool IsEphemeral(
  PropertyPathHandle aHandle
) const 

IsInDictionary

bool IsInDictionary(
  PropertyPathHandle aHandle,
  PropertyPathHandle & aDictionaryItemHandle
) const 

Trả về true nếu tên người dùng bên trong từ điển (một phần tử trong từ điển).

Một người dùng được truyền vào tên người dùng (aKeywordItemHandle) được cập nhật để trỏ đến xử lý phần tử từ điển cấp cao nhất trong từ điển.

Thông tin chi tiết
Giá trị trả về
bool

IsLeaf

bool IsLeaf(
  PropertyPathHandle aPropertyHandle
) const 

Trả về true nếu ô điều khiển tham chiếu đến một nút lá trong cây giản đồ.

Thông tin chi tiết
Giá trị trả về
bool

IsNullable

bool IsNullable(
  PropertyPathHandle aHandle
) const 

IsOptional

bool IsOptional(
  PropertyPathHandle aHandle
) const 

IsParent

bool IsParent(
  PropertyPathHandle aChildHandle,
  PropertyPathHandle aParentHandle
) const 

Kiểm tra xem một tên người dùng cụ thể có phải là con của một tên người dùng khác hay không.

Đây có thể là tài khoản cha mẹ gián tiếp.

Thông tin chi tiết
Giá trị trả về
bool

MapHandleToPath

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

Chuyển đổi ô điều khiển đường dẫn thành đường dẫn TLV.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
other
Không thể chuyển đổi tên người dùng thành đường dẫn TLV

MapPathToHandle

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

Với một trình đọc nằm ở gốc của phần tử đường dẫn WDM, hãy đọc to các thẻ có liên quan và cung cấp tên người dùng đường dẫn tương đương.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Nếu không tìm thấy tên người dùng trùng khớp do đường dẫn được chỉ định sai/không chính xác.

MapPathToHandle

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

Với bản trình bày một chuỗi của đường dẫn WDM, hãy đọc to các thẻ có liên quan và cung cấp tên người dùng tương đương cho đường dẫn.

Đường dẫn WDM được biểu thị dưới dạng chuỗi bằng cách sử dụng các quy tắc sau:

  • các thẻ được phân tách bằng /
  • đường dẫn PHẢI bắt đầu bằng / ở đầu và KHÔNG ĐƯỢC chứa dấu gạch chéo ở cuối
  • các thẻ số trong đường dẫn WDM PHẢI được mã hoá bằng thư viện C tiêu chuẩn để mã hoá số nguyên thành chuỗi, tức là mã hoá số thập phân (mặc định) KHÔNG ĐƯỢC chứa số 0 ở đầu, phương thức mã hoá hệ thập lục phân PHẢI bắt đầu bằng 0x và phương thức mã hoá bát phân PHẢI chứa 0 đứng đầu.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
Nếu không tìm thấy tên người dùng trùng khớp.
WEAVE_ERROR_INVALID_ARGUMENT
Nếu một chuỗi đường dẫn có định dạng không đúng

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

Trả về true nếu profileId đã chuyển khớp với giá trị được lưu trữ trong giản đồ.

Thông tin chi tiết
Giá trị trả về
bool

RetrieveData

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

Khi bạn cung cấp một ô điều khiển đường dẫn và vị trí của trình ghi trên phần tử dữ liệu tương ứng, hãy truy xuất dữ liệu leaf từ nguồn và ghi dữ liệu đó vào vùng đệm mà người viết chỉ đến theo cách tuân thủ giản đồ.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
other
Đã xảy ra lỗi khi ghi dữ liệu.

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 

Khi có một ô điều khiển đường dẫn và một trình đọc được đặt trên phần tử dữ liệu tương ứng, hãy xử lý vùng đệm dữ liệu mà trình đọc trỏ đến và lưu trữ vào bồn lưu trữ dữ liệu bằng cách gọi lệnh gọi SetLeafData mỗi khi gặp mục dữ liệu leaf.

Thông tin chi tiết
Giá trị trả về
WEAVE_NO_ERROR
Khi thành công.
other
Đã xảy ra lỗi khi phân tích cú pháp/xử lý dữ liệu.