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

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

מנוע הסכימה לוקח מידע על סכימה המשויכת לתכונה מסוימת, ומספק מתקנים לניתוח ולתרגום של נתונים לצורה שניתן להשתמש בה על ידי מכונות ה-WDM.

סיכום

זה כולל המרה מ-PathHandles לנתיבי WDM (ולהפך), שיטות לפירוש/לביצוע שאילתות בסכימה עצמה ושיטות לסיוע בקריאה/כתיבה של נתונים אל TLV בכינוי נתון.

הסכימה עצמה מאוחסנת בצורה של טבלה, ומתוארת מספיק כדי לאפשר ניתוח או הרכב באופן כללי של נתיבי/נתונים של WDM לכל תכונה נתונה. הטבלאות האלה הן מה שיתקבל בסופו של דבר 'יצירת קוד' (המונח עצמו מטעה במידה מסוימת בהעדר קוד שנוצר :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
מחזירה את מזהה הפרופיל של התכונה המשויכת.
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
הפונקציה מחזירה את הערך True אם ה-pass ב-profileId תואם את הערך ששמור בסכימה.
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
כשיש מזהה נתיב וקורא שממוקמים על רכיב הנתונים המתאים, מעבדים את מאגר הנתונים שהקורא מפנה אליו ושומרים אותו ב-sink. לשם כך, צריך להפעיל את הקריאה ל-SetLeafData בכל פעם שיש פריט נתונים עם עלים (leafData).

מחלקות

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 

מחזירה את מזהה הפרופיל של התכונה המשויכת.

פרטים
ערכים מוחזרים
Trait
מזהה פרופיל

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
מספר התגים שנכתבו אל aTags
החזרות
WEAVE_NO_ERROR במקרה שהאימות יושלם בהצלחה; WEAVE_ERROR_NO_MEMORY אם aTags קטן מדי לאחסון הנתיב המלא.

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 מיוצג כמחרוזת באמצעות הכללים הבאים:

  • התגים מופרדים באמצעות /
  • הנתיב חייב להתחיל ב-/ מוביל ולא יכול להכיל קו נטוי סוגר.
  • תגים מספריים בנתיב WDM חייבים להיות מקודדים באמצעות ספריית C הרגילה לקידוד מספרים שלמים לקידוד מחרוזת, כלומר קידוד עשרוני (ברירת מחדל) אסור לכלול 0 בהתחלה, קידוד הקסדצימלי חייב להתחיל ב-0x וקידוד אוקטלי חייב להכיל 0 מוביל.

פרטים
ערכים מוחזרים
WEAVE_NO_ERROR
בהצלחה.
WEAVE_ERROR_TLV_TAG_NOT_FOUND
אם לא נמצא כינוי תואם.
WEAVE_ERROR_INVALID_ARGUMENT
אם מחרוזת נתיב לא תקינה

MatchesProfileId

bool MatchesProfileId(
  uint32_t aProfileId
) const 

הפונקציה מחזירה את הערך True אם ה-pass ב-profileId תואם את הערך ששמור בסכימה.

פרטים
ערכים מוחזרים
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 

כשיש מזהה נתיב וקורא שממוקמים על רכיב הנתונים המתאים, מעבדים את מאגר הנתונים שהקורא מפנה אליו ושומרים אותו ב-sink. לשם כך, צריך להפעיל את הקריאה ל-SetLeafData בכל פעם שיש פריט נתונים עם עלים (leafData).

פרטים
ערכים מוחזרים
WEAVE_NO_ERROR
בהצלחה.
other
אירעו שגיאות בניתוח/בעיבוד הנתונים.