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
הפונקציה מחזירה את ה-handle של ההורה של ה-handle של נתיב הצאצא הנתון.
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
אם קורא נמצא ברמה הבסיסית (root) של רכיב נתיב WDM, קוראים את התגים הרלוונטיים ומספקים את נקודת האחיזה המקבילה לנתיב.
MapPathToHandle(const char *aPathString, PropertyPathHandle & aHandle) const
בהינתן ייצוג מחרוזת של נתיב WDM, הקריאה של התגים הרלוונטיים ומתן ה-handle המקביל של הנתיב.
MatchesProfileId(uint32_t aProfileId) const
bool
הפונקציה מחזירה את הערך 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
בהינתן כינוי לנתיב וקורא שממוקם על רכיב הנתונים המתאים, מעבדים את מאגר הנתונים הזמני שהקורא מפנה אליו ומאחסנים אותו ב-sink על ידי הפעלה של הקריאה 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 

הפונקציה מחזירה את מזהה הפרופיל של המאפיין המשויך.

פרטים
ערכים שמוחזרים
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 אם נקודת האחיזה נמצאת בתוך מילון (רכיב במילון).

משתמש שהועבר בנקודת אחיזה (aMusicItemHandle) מתעדכן כדי להצביע על נקודת האחיזה העליונה לרכיב המילון בתוך המילון.

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

ממירים את ה-handle של הנתיב לנתיב TLV.

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

MapPathToHandle

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

קוראים את התגים הרלוונטיים ומספקים את ה-handle המקביל של הנתיב, כשקורא ממוקם ברמה הבסיסית של רכיב נתיב WDM.

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

MapPathToHandle

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

בהינתן ייצוג מחרוזת של נתיב WDM, קוראים את התגים הרלוונטיים ומספקים את ה-handle המקביל של הנתיב.

הנתיב של 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 אם הערך שהועבר ב-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 

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

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