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

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

Công cụ giản đồ sử dụng thông tin giản đồ liên quan đến một đặc điểm cụ thể và cung cấp các cơ sở để phân tích cú pháp và dịch thông tin đó thành một dạng mà máy móc WDM có thể sử dụng.

Tóm tắt

Trong đó 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 chính giản đồ và các phương thức để giúp đọc/ghi dữ liệu vào/từ TLV đã được cung cấp.

Bản thân 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 bất kỳ trait nhất định nào. Các bảng này 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 khi không có bất kỳ mã được tạo nào :P)

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

kHandleTableOffset = 2
const uint32_t

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
Khi có 2 tên người dùng thuộc tính, hãy tính tên người dùng thấp nhất đóng vai trò là cha mẹ của cả hai tên người dùng này.
GetChildHandle(PropertyPathHandle aParentHandle, uint8_t aContextTag) const
GetDepth(PropertyPathHandle aHandle) const
int32_t
Tính toán độ sâu trong cây giản đồ cho một tên người dùng cụ thể.
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 phần tử mẹ cụ thể.
GetHighestForwardVersion(SchemaVersion aVersion) const
SchemaVersion
Với phiên bản giản đồ dữ liệu đã cung cấp, thao tác 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, hàm 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ề một 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 được cung cấp tên người dùng cho một thành phần con hiện có, hàm này trả về tên người dùng con tiếp theo 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 cha 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 PropertiesPathHandle thành một mảng thẻ ngữ cảnh.
GetTag(PropertyPathHandle aHandle) const
uint64_t
Trả về thẻ được liên kết với tên người dùng đường dẫn.
GetVersionIntersection(SchemaVersionRange & aVersion, SchemaVersionRange & aIntersection) const
bool
Khi có một phạm vi phiên bản, hàm này sẽ kiểm tra xem có điểm giao nhau tương thích giữa phạm vi phiên bản đó và yếu tố nào được giản đồ hỗ trợ đang hỗ trợ công cụ giản đồ này 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 (chứ không phải trong từ điển - hãy xem phương thức dưới đây).
IsEphemeral(PropertyPathHandle aHandle) const
bool
IsInDictionary(PropertyPathHandle aHandle, PropertyPathHandle & aDictionaryItemHandle) const
bool
Trả về true nếu tên người dùng nằm trong từ điển (phần tử từ điển).
IsLeaf(PropertyPathHandle aPropertyHandle) const
bool
Trả về true nếu tên người dùng 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 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
Cho 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
Cho biết cách biểu diễn dạng 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 đường dẫn tương đương.
MatchesProfileId(uint32_t aProfileId) const
bool
Trả về true nếu mã hồ sơ đã truyền khớp với mã được lưu trữ trong giản đồ.
RetrieveData(PropertyPathHandle aHandle, uint64_t aTagToWrite, nl::Weave::TLV::TLVWriter & aWriter, IGetDataDelegate *aDelegate, IDirtyPathCut *apDirtyPathCut) const
Cho một ô điều khiển đường dẫn và vị trí trình ghi trên phần tử dữ liệu tương ứng, truy xuất dữ liệu lá từ nguồn và ghi dữ liệu đó vào vùng đệm mà trình ghi trỏ đế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 cung cấp một ô điều khiển đường dẫn và trình đọc đã định vị 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 rồi lưu trữ vùng đệm đó vào bồn lưu trữ dữ liệu bằng cách gọi lệnh gọi SetLeafData bất cứ khi nào gặp một mục dữ liệu lá.

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

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 

Khi có 2 tên người dùng thuộc tính, hãy tính tên người dùng thấp nhất đóng vai trò là cha mẹ của cả hai tên người dùng này.

Ngoài ra, hãy trả về 2 nhánh con chứa mỗi nhánh 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ý đến thành phần mẹ có cấp độ thấp nhất.

GetChildHandle

PropertyPathHandle GetChildHandle(
  PropertyPathHandle aParentHandle,
  uint8_t aContextTag
) const 

GetDepth

int32_t GetDepth(
  PropertyPathHandle aHandle
) const 

Tính toán độ sâu trong cây giản đồ cho một tên người dùng cụ thể.

Thông tin chi tiết
Giá trị trả về
int32_t
Độ sâu của 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 phần tử mẹ cụ thể.

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

GetHighestForwardVersion

SchemaVersion GetHighestForwardVersion(
  SchemaVersion aVersion
) const 

Với phiên bản giản đồ dữ liệu đã cung cấp, thao tác 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, hàm 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ề một 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 được cung cấp tên người dùng cho một thành phần con hiện có, hàm này trả về tên người dùng con tiếp theo 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 cha của một tên người dùng đường dẫn con cụ thể.

Các khoá từ điển trong tên người dùng được giữ nguyên trong trường hợp tên người dùng mẹ cũng là một 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 ứng dụng 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 PropertiesPathHandle thành một mảng thẻ ngữ cảnh.

Thông tin chi tiết
Thông số
[in] aCandidateHandle
PropertiesPathHandle cần được chuyển đổi.
[in] aTags
Con trỏ đến mảng đầu ra.
[in] aTagsSize
Kích thước của mảng aTag, số lượng phần tử.
[out] aNumTags
Số lượng thẻ được ghi vào aTag
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ẻ được liên kết với tên người dùng đường dẫn.

Nếu đó là phần tử từ điển, hàm này sẽ trả về ProfileTag. Nếu không, toán tử này sẽ trả về các 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 có một phạm vi phiên bản, hàm này sẽ kiểm tra xem có điểm giao nhau tương thích giữa phạm vi phiên bản đó và yếu tố nào được giản đồ hỗ trợ đang hỗ trợ công cụ giản đồ này hay không.

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

IsDictionary

bool IsDictionary(
  PropertyPathHandle aHandle
) const 

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

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 nằm trong từ điển (phần tử từ điển).

Hệ thống sẽ cập nhật một người dùng đã chuyển tên người dùng vào tên người dùng (aDichuyểnItemHandle) để trỏ đến tên người dùng phần tử từ điển ở trên cùng 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 tên người dùng 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 tên người dùng khác hay không.

Đây có thể là 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 

Cho 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 phù hợp do đường dẫn được chỉ định sai/không đúng định dạng.

MapPathToHandle

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

Cho biết cách biểu diễn dạng 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 đường dẫn tương đương.

Đường dẫn WDM được biểu thị dưới dạng chuỗi bằ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 sang chuỗi, tức là mã hoá số thập phân (mặc định) KHÔNG ĐƯỢC chứa số 0 đứng đầu, mã hoá thập lục phân PHẢI bắt đầu bằng 0x và 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 phù hợ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 mã hồ sơ đã truyền khớp với mã đượ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 

Cho một ô điều khiển đường dẫn và vị trí trình ghi trên phần tử dữ liệu tương ứng, truy xuất dữ liệu lá từ nguồn và ghi dữ liệu đó vào vùng đệm mà trình ghi trỏ đế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 cung cấp một ô điều khiển đường dẫn và trình đọc đã định vị 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 rồi lưu trữ vùng đệm đó vào bồn lưu trữ dữ liệu bằng cách gọi lệnh gọi SetLeafData bất cứ khi nào gặp một mục dữ liệu lá.

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.