nl::Weave::TLV::TLVReader

#include <src/lib/core/WeaveTLV.h>

يتم توفير محلّل مختص بالذاكرة للبيانات المرمّزة بتنسيق Weave TLV.

ملخّص

تنفِّذ TLVReader محللاً لغويًا "بنمط السحب" والأمام فقط لبيانات Weave TLV. يعمل الكائن TLVReader كمؤشر يمكن استخدامه للتكرار التحسيني على تسلسل عناصر TLV وتفسير محتواها. عند تحديد موضعها على عنصر، يمكن أن تستدعي التطبيقات إجراء القارئ Get() للاستعلام عن نوع العنصر الحالي وعلامته واستخراج أي قيمة مرتبطة به. يتم استخدام طريقة Next() الخاصة بالقارئ للانتقال من عنصر إلى آخر.

يتم دائمًا وضع كائن TLVReader إما قبل عنصر TLV أو عليه أو بعده. عند الإعداد لأول مرة، يتم وضع TLVReader مباشرةً قبل العنصر الأول من الترميز. لبدء القراءة، يجب أن يجري التطبيق استدعاءً أوليًا لطريقة Next() لوضع القارئ على العنصر الأول. عند مصادفة عنصر حاوية إما بنية أو مصفوفة أو مسار، يمكن استخدام الطريقتين OpenContainer() أو EnterContainer() للتكرار عبر محتويات الحاوية.

عندما يصل القارئ إلى نهاية ترميز TLV، أو العنصر الأخير ضمن حاوية، فإنّه يرسل إشارة إلى التطبيق من خلال عرض خطأ WEAVE_END_OF_TLV من طريقة Next(). وسيستمر القارئ في عرض WEAVE_END_OF_TLV حتى تتم إعادة ضبطه أو يتم الخروج من الحاوية الحالية (عبر CloseContainer() / ExitContainer()).

يمكن لكائن TLVReader تحليل البيانات مباشرةً من مخزن تخزين مؤقت ثابت للإدخال أو من سلسلة مكوّنة من حزمة واحدة أو أكثر من حِزم PacketBuffer. بالإضافة إلى ذلك، يمكن للتطبيقات توفير دالة GetNextBuffer لخلاصة البيانات إلى القارئ من مصدر عشوائي، مثل مقبس أو منفذ تسلسلي.

الاكتساب

الفئات الفرعية المعروفة المباشرة:
  nl::Weave::Profiles::DataManagement_Current::CircularEventReader
  nl::Weave::TLV::CircularTLVReader

الأنواع العلنية

GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
دالة يمكن استخدامها لاسترداد بيانات TLV الإضافية المطلوب تحليلها.

السمات العامة

AppData
void *
حقل مؤشر يمكن استخدامه مع البيانات الخاصة بالتطبيق.
GetNextBuffer
مؤشر يشير إلى دالة تنتج بيانات إدخال لكائن TLVReader.
ImplicitProfileId
uint32_t
معرّف الملف الشخصي المطلوب استخدامه لعلامات الملف الشخصي المشفرة بشكل ضمني.

السمات المحمية

mBufEnd
const uint8_t *
mBufHandle
uintptr_t
mContainerType
mControlByte
uint16_t
mElemLenOrVal
uint64_t
mElemTag
uint64_t
mLenRead
uint32_t
mMaxLen
uint32_t
mReadPoint
const uint8_t *

الدوال العامة

CloseContainer(TLVReader & containerReader)
تكمل قراءة حاوية TLV بعد استدعاء الدالة OpenContainer().
DupBytes(uint8_t *& buf, uint32_t & dataLen)
تخصِّص وتعيد التخزين المؤقت الذي يحتوي على قيمة سلسلة البايت أو سلسلة UTF8 الحالية.
DupString(char *& buf)
تُخصِّص وترجع المورد الاحتياطي الذي يحتوي على القيمة الفارغة لسلسلة بايت أو UTF8 الحالية.
EnterContainer(TLVType & outerContainerType)
لإعداد كائن TLVReader لقراءة عناصر حاوية TLV.
ExitContainer(TLVType outerContainerType)
تكمل قراءة حاوية TLV وإعداد كائن TLVReader لقراءة العناصر بعد الحاوية.
Get(bool & v)
الحصول على قيمة العنصر الحالي كنوع منطقية.
Get(int8_t & v)
الحصول على قيمة العنصر الحالي كعدد صحيح موقَّع 8 بت.
Get(int16_t & v)
احصل على قيمة العنصر الحالي كعدد صحيح موقّع 16 بت.
Get(int32_t & v)
احصل على قيمة العنصر الحالي كعدد صحيح موقَّع 32 بت.
Get(int64_t & v)
احصل على قيمة العنصر الحالي كعدد صحيح موقَّع 64 بت.
Get(uint8_t & v)
احصل على قيمة العنصر الحالي كعدد صحيح غير موقَّع مكوَّن من 8 بت.
Get(uint16_t & v)
احصل على قيمة العنصر الحالي كعدد صحيح غير موقع 16 بت.
Get(uint32_t & v)
احصل على قيمة العنصر الحالي كعدد صحيح غير موقَّع 32 بت.
Get(uint64_t & v)
احصل على قيمة العنصر الحالي كعدد صحيح غير موقَّع 64 بت.
Get(float & v)
Get(double & v)
احصل على قيمة العنصر الحالي كرقم نقطة عائمة مزدوج الدقة.
GetBufHandle(void) const
uintptr_t
GetBytes(uint8_t *buf, uint32_t bufSize)
احصل على قيمة عنصر سلسلة البايت أو UTF8 الحالي.
GetContainerType(void) const
تعرض نوع الحاوية التي يقرأ TLVReader داخلها حاليًا.
GetControlByte(void) const
uint16_t
لعرض بايت التحكّم المرتبط بعنصر TLV الحالي.
GetDataPtr(const uint8_t *& data)
مرِّر مؤشر الماوس فوق البايت المشفّر الأولي لعنصر سلسلة بايت TLV أو عنصر سلسلة UTF8.
GetLength(void) const
uint32_t
تعرض طول البيانات المرتبطة بعنصر TLV الحالي.
GetLengthRead(void) const
uint32_t
تعرض إجمالي عدد وحدات البايت التي تمت قراءتها منذ إعداد القارئ.
GetReadPoint(void) const
const uint8_t *
للحصول على نقطة في المخزن المؤقت الأساسي للإدخال، والتي تتوافق مع الموضع الحالي للقارئ.
GetRemainingLength(void) const
uint32_t
لعرض إجمالي عدد وحدات البايت التي يمكن قراءتها حتى يبلغ الحد الأقصى لطول القراءة.
GetString(char *buf, uint32_t bufSize)
احصل على قيمة عنصر سلسلة البايت أو UTF8 الحالي كسلسلة منتهية فارغة.
GetTag(void) const
uint64_t
يتم عرض العلامة المرتبطة بعنصر TLV الحالي.
GetType(void) const
تعرض نوع عنصر TLV الحالي.
Init(const TLVReader & aReader)
void
تهيئة كائن TLVReader من كائن TLVReader آخر.
Init(const uint8_t *data, uint32_t dataLen)
void
تعمل هذه السياسة على إعداد كائن TLVReader لقراءته من مخزن بيانات مؤقت إدخال واحد.
Init(PacketBuffer *buf, uint32_t maxLen)
void
تهيئة كائن TLVReader لقراءته من كائن PacketBuffer واحد.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
تهيئة كائن TLVReader لقراءته من كائن TLVReader واحد أو أكثر.
Next(void)
تؤدي إلى انتقال الكائن TLVReader إلى عنصر TLV التالي المراد قراءته.
Next(TLVType expectedType, uint64_t expectedTag)
يؤدي هذا الإجراء إلى الانتقال بالكائن TLVReader إلى عنصر TLV التالي المُراد قراءته، ما يؤكّد على نوع العنصر الجديد وعلامته.
OpenContainer(TLVReader & containerReader)
تهيئة كائن TLVReader جديد لقراءة عناصر حاوية TLV.
Skip(void)
يؤدي هذا الخيار إلى نقل الكائن TLVReader إلى ما بعد عنصر TLV الحالي مباشرةً.
VerifyEndOfContainer(void)
للتحقّق من أنّ الكائن TVLReader يقع في نهاية حاوية TLV.

الدوال المحمية

ClearElementState(void)
void
امحُ حالة TLVReader.
ElementType(void) const
TLVElementType
هذه طريقة خاصة تعرض TLVElementType من mControlByte.
EnsureData(WEAVE_ERROR noDataErr)
GetElementHeadLength(uint8_t & elemHeadBytes) const
هذه طريقة خاصة تُستخدَم لحساب طول رأس عنصر TLV.
IsContainerOpen(void) const
bool
ReadData(uint8_t *buf, uint32_t len)
ReadElement(void)
ReadTag(TLVTagControl tagControl, const uint8_t *& p)
uint64_t
SetContainerOpen(bool aContainerOpen)
void
SkipData(void)
يمكنك تخطّي أي بيانات مضمَّنة في TLV الحالي من خلال قراءتها بدون مورد احتياطي وجهة.
SkipToEndOfContainer(void)
VerifyElement(void)

الدوال الثابتة المحمية

FailGetNextBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
GetNextPacketBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)

الأنواع العلنية

GetNextBufferFunct

WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)

دالة يمكن استخدامها لاسترداد بيانات TLV الإضافية المطلوب تحليلها.

تُستخدم دوال من هذا النوع لخلاصة بيانات إدخال إلى TLVReader. عند استدعاء الدالة، يكون من المتوقع أن تنتج بيانات إضافية للقارئ لتحليلها أو الإشارة إلى عدم توفر المزيد من البيانات.

التفاصيل
المَعلمات
[in] reader
يشير إلى العنصر TLVReader الذي يطلب بيانات الإدخال.
[in,out] bufHandle
يشير ذلك المصطلح إلى قيمة uintptr_t يمكن للدالة استخدامها لتخزين بيانات السياق بين عمليات الاستدعاء. يتم إعداد هذه القيمة على 0 قبل أول مكالمة.
[in,out] bufStart
يشير ذلك المصطلح إلى مرجع لمؤشر بيانات. عند إدخال الدالة، يشير bufStart إلى بايت واحد يتجاوز آخر بايت بيانات TLV استهلكه القارئ. عند الخروج، من المتوقّع أن يشير bufStart إلى أول بايت من بيانات TLV الجديدة المطلوب تحليلها. يمكن أن تكون قيمة المؤشر الجديدة ضمن نفس المخزن المؤقت مثل البيانات المستهلكة من قبل، أو يمكن أن تشير إلى مورد احتياطي جديد تمامًا.
[out] bufLen
يشير إلى عدد صحيح غير موقَّع يجب أن تضبطه الدالة على عدد وحدات بايت بيانات TLV التي يتم عرضها. وإذا تم الوصول إلى نهاية بيانات الإدخال TLV، يجب أن تضبط الدالة هذه القيمة على 0.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الدالة في إنتاج المزيد من بيانات TLV، أو تم الوصول إلى نهاية بيانات الإدخال (يجب ضبط bufLen على 0 في هذه الحالة).
other
رموز أخطاء أخرى في Weave أو خاصة بالنظام الأساسي تشير إلى حدوث خطأ يمنع الدالة من تقديم البيانات المطلوبة.

السمات العامة

AppData

void * AppData

حقل مؤشر يمكن استخدامه مع البيانات الخاصة بالتطبيق.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

مؤشر يشير إلى دالة تنتج بيانات إدخال لكائن TLVReader.

في حال التعيين على "NULL" (القيمة التلقائية)، سيفترض القارئ أنّه لا تتوفّر بيانات إدخال إضافية.

يمكن تعيين GetNextBuffer من قِبل أحد التطبيقات في أي وقت، ولكن يتم تعيينه عادةً عند تهيئة القارئ.

راجِع تعريف نوع GetNextBufferFunct للحصول على معلومات إضافية عن تنفيذ دالة GetNextBuffer.

ImplicitProfileId

uint32_t ImplicitProfileId

معرّف الملف الشخصي المطلوب استخدامه لعلامات الملف الشخصي المشفرة بشكل ضمني.

عندما يصادف القارئ علامة خاصة بالملف الشخصي تم ترميزها بصيغة ضمنية، فإنه يستخدم قيمة السمة ImplicitProfileId باعتبارها معرّف الملف الشخصي المفترض للعلامة.

يتم ضبط السمة ImplicitProfileId تلقائيًا على kProfileIdNotSpecified. عند فك ترميز TLV الذي يحتوي على علامات مرمّزة بشكل ضمني، يجب أن تضبط التطبيقات ImplicitProfileId قبل قراءة أي عناصر TLV تتضمّن هذه العلامات. يعتمد معرّف الملف الشخصي المناسب عادةً على سياق التطبيق أو البروتوكول الذي يتم قوله.

في حال ظهور علامة ذات تشفير ضمني أثناء ضبط ImplicitProfileId على kProfileIdNotSpecified، سيعرض القارئ الخطأ WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG.

السمات المحمية

mBufEnd

const uint8_t * mBufEnd

mBufHandle

uintptr_t mBufHandle

mContainerType

TLVType mContainerType

mControlByte

uint16_t mControlByte

mElemLenOrVal

uint64_t mElemLenOrVal

mElemTag

uint64_t mElemTag

mLenRead

uint32_t mLenRead

mMaxLen

uint32_t mMaxLen

mReadPoint

const uint8_t * mReadPoint

الدوال العامة

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

تكمل قراءة حاوية TLV بعد استدعاء الدالة OpenContainer().

تستعيد طريقة CloseContainer() حالة كائن TLVReader الرئيسي بعد استدعاء الدالة OpenContainer(). بالنسبة إلى كل استدعاء لـ OpenContainer()، يجب أن تُجري تطبيقات OpenContainer() استدعاءًا مماثلاً إلى CloseContainer()، مع تمرير مرجع إلى قارئ الحاوية نفسه إلى كلتا الطريقتين.

عند إرجاع CloseContainer()، يتم وضع القارئ الرئيسي مباشرةً قبل العنصر الأول الذي يلي الحاوية. ومن هذه النقطة، يمكن للتطبيق استخدام طريقة Next() للتقدم خلال أي عناصر متبقية.

يمكن للتطبيقات استدعاء الدالة CloseContainer() للإغلاق على قارئ رئيسي في أي وقت من الأوقات، بغض النظر عمّا إذا تمت قراءة جميع العناصر في الحاوية الأساسية أم لا. بعد استدعاء CloseContainer()، يجب أن ينظر التطبيق إلى قارئ الحاوية "de-إعداد" ولا يجب أن يستخدمه أكثر من ذلك بدون إعادة إعداده.

التفاصيل
المَعلمات
[in] containerReader
يشير إلى الكائن TLVReader الذي تم تقديمه إلى الإجراء OpenContainer().
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_INCORRECT_STATE
في حال عدم استدعاء OpenContainer() من خلال القارئ، أو في حال عدم تطابق قارئ الحاوية مع قارئ الحاوية الذي تم تمريره إلى الإجراء OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
WEAVE_ERROR_INVALID_TLV_ELEMENT
إذا واجه القارئ نوع عنصر TLV غير صالح أو غير متوافق
WEAVE_ERROR_INVALID_TLV_TAG
إذا صادف القارئ علامة TLV في سياق غير صالح
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

DupBytes

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

تخصِّص وتعيد التخزين المؤقت الذي يحتوي على قيمة سلسلة البايت أو سلسلة UTF8 الحالية.

تنشئ هذه الطريقة مخزنًا مؤقتًا لـ وتعرض نسخة من البيانات المرتبطة بعنصر سلسلة بايت أو UTF-8 في الموضع الحالي. يتم الحصول على ذاكرة المخزن المؤقت باستخدام الإجراء()alloc وتشمل تفريغها باستخدام الدالة Free() من قِبل المتصل عندما لا تكون هناك حاجة إليه.

التفاصيل
المَعلمات
[out] buf
يشير هذا المصطلح إلى مؤشر سيتم بعد إتمامه تعيين مخزن مؤقّت مخصّص للكومة الكبيرة بحجم dataLen بايت بنجاح.
[out] dataLen
مرجع إلى مساحة التخزين لحجم buf عند النجاح بالبايت.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
إذا لم يكن العنصر الحالي سلسلة بايت TLV أو UTF8، أو لم يتم وضع القارئ على أحد العناصر
WEAVE_ERROR_NO_MEMORY
إذا تعذّر تخصيص ذاكرة للمخزن المؤقت للمخرجات
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
إذا كان النظام الأساسي المستهدف لا يدعم albumoc() وfree().
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

تُخصِّص وترجع المورد الاحتياطي الذي يحتوي على القيمة الفارغة لسلسلة بايت أو UTF8 الحالية.

تنشئ هذه الطريقة مخزنًا مؤقتًا لـ وتعرض نسخة فارغة من البيانات المرتبطة بعنصر سلسلة البايت أو UTF-8 في الموضع الحالي. يتم الحصول على ذاكرة المخزن المؤقت باستخدام الإجراء()alloc وتشمل تفريغها باستخدام الدالة Free() من قِبل المتصل عندما لا تكون هناك حاجة إليه.

التفاصيل
المَعلمات
[out] buf
يشير إلى المؤشر الذي سيتم تعيين مخزن احتياطي مخصّص له في كومة الذاكرة المؤقتة بعد نجاحه.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
إذا لم يكن العنصر الحالي سلسلة بايت TLV أو UTF8، أو لم يتم وضع القارئ على أحد العناصر
WEAVE_ERROR_NO_MEMORY
إذا تعذّر تخصيص ذاكرة للمخزن المؤقت للمخرجات
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
إذا كان النظام الأساسي المستهدف لا يدعم albumoc() وfree().
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

لإعداد كائن TLVReader لقراءة عناصر حاوية TLV.

تعمل الطريقة EnterContainer() على كائن TLVReader الحالي لبدء قراءة عناصر العضو لحاوية TLV (بنية أو مصفوفة أو مسار). بالنسبة إلى كل استدعاء تطبيقات EnterContainer()، يجب أن تجري استدعاءًا مقابلاً إلى ExitContainer().

عندما يتم استدعاء EnterContainer()، يجب وضع الكائن TLVReader في عنصر الحاوية لتتم قراءته. وتستعين الطريقة كوسيطة بمرجع قيمة TLVType التي سيتم استخدامها لحفظ سياق القارئ أثناء قراءته للحاوية.

عند إرجاع الإجراء EnterContainer()، يتم وضع القارئ مباشرةً قبل العضو الأول في الحاوية. يؤدي استدعاء الدالة Next() بشكل متكرر إلى دفع القارئ إلى التنقّل بين أجزاء المجموعة إلى أن يتم الوصول إلى النهاية، وعند ذلك سيعيد القارئ عرض WEAVE_END_OF_TLV.

بعد انتهاء التطبيق من قراءة الحاوية، يمكنه مواصلة قراءة العناصر بعد الحاوية عن طريق استدعاء الإجراء ExitContainer().

التفاصيل
المَعلمات
[out] outerContainerType
يشير ذلك المصطلح إلى مرجع لقيمة TLVType التي ستتلقّى سياق القارئ.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_INCORRECT_STATE
إذا لم يكن العنصر الحالي في موضعه على عنصر حاوية.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

تكمل قراءة حاوية TLV وإعداد كائن TLVReader لقراءة العناصر بعد الحاوية.

تستعيد طريقة ExitContainer() حالة كائن TLVReader بعد استدعاء الدالة EnterContainer(). بالنسبة إلى كل استدعاء لـ EnterContainer()، يجب أن تجري التطبيقات استدعاءًا مماثلاً إلى ExitContainer()، مع تمرير قيمة السياق التي تعرضها طريقة EnterContainer().

عند عودة ExitContainer()، يتم وضع القارئ مباشرةً قبل العنصر الأول الذي يلي الحاوية. ومن هذه النقطة، يمكن للتطبيق استخدام طريقة Next() للتقدم خلال أي عناصر متبقية.

بعد استدعاء EnterContainer()، يمكن للتطبيقات استدعاء ExitContainer() على قارئ في أي وقت من الأوقات، بغض النظر عما إذا تمت قراءة جميع العناصر في الحاوية الأساسية أم لا.

التفاصيل
المَعلمات
[in] outerContainerType
قيمة TLVType التي تم عرضها من خلال الإجراء EnterContainer().
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_INCORRECT_STATE
في حال عدم استدعاء OpenContainer() من خلال القارئ، أو في حال عدم تطابق قارئ الحاوية مع قارئ الحاوية الذي تم تمريره إلى الإجراء OpenContainer().
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
WEAVE_ERROR_INVALID_TLV_ELEMENT
إذا واجه القارئ نوع عنصر TLV غير صالح أو غير متوافق
WEAVE_ERROR_INVALID_TLV_TAG
إذا صادف القارئ علامة TLV في سياق غير صالح
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

جلب

WEAVE_ERROR Get(
  bool & v
)

الحصول على قيمة العنصر الحالي كنوع منطقية.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من النوع المنطقي TLV، أو لم يتم وضع القارئ على أحد العناصر

جلب

WEAVE_ERROR Get(
  int8_t & v
)

الحصول على قيمة العنصر الحالي كعدد صحيح موقَّع 8 بت.

إذا كانت قيمة العدد الصحيح المشفّر أكبر من نوع بيانات الإخراج، سيتم اقتطاع القيمة الناتجة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع عدد صحيح TLV (موقَّعًا أو غير موقَّع)، أو لم يتم وضع القارئ على العنصر.

جلب

WEAVE_ERROR Get(
  int16_t & v
)

احصل على قيمة العنصر الحالي كعدد صحيح موقّع 16 بت.

إذا كانت قيمة العدد الصحيح المشفّر أكبر من نوع بيانات الإخراج، سيتم اقتطاع القيمة الناتجة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع عدد صحيح TLV (موقَّعًا أو غير موقَّع)، أو لم يتم وضع القارئ على العنصر.

جلب

WEAVE_ERROR Get(
  int32_t & v
)

احصل على قيمة العنصر الحالي كعدد صحيح موقَّع 32 بت.

إذا كانت قيمة العدد الصحيح المشفّر أكبر من نوع بيانات الإخراج، سيتم اقتطاع القيمة الناتجة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع عدد صحيح TLV (موقَّعًا أو غير موقَّع)، أو لم يتم وضع القارئ على العنصر.

جلب

WEAVE_ERROR Get(
  int64_t & v
)

احصل على قيمة العنصر الحالي كعدد صحيح موقَّع 64 بت.

إذا كانت قيمة العدد الصحيح المشفّر أكبر من نوع بيانات الإخراج، سيتم اقتطاع القيمة الناتجة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع عدد صحيح TLV (موقَّعًا أو غير موقَّع)، أو لم يتم وضع القارئ على العنصر.

جلب

WEAVE_ERROR Get(
  uint8_t & v
)

احصل على قيمة العنصر الحالي كعدد صحيح غير موقَّع مكوَّن من 8 بت.

إذا كانت قيمة العدد الصحيح المشفّر أكبر من نوع بيانات الإخراج، سيتم اقتطاع القيمة الناتجة. وبالمثل، إذا كانت قيمة العدد الصحيح المشفّر سالبة، سيتم تحويل القيمة إلى القيمة غير موقَّعة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع عدد صحيح TLV (موقَّعًا أو غير موقَّع)، أو لم يتم وضع القارئ على العنصر.

جلب

WEAVE_ERROR Get(
  uint16_t & v
)

احصل على قيمة العنصر الحالي كعدد صحيح غير موقع 16 بت.

إذا كانت قيمة العدد الصحيح المشفّر أكبر من نوع بيانات الإخراج، سيتم اقتطاع القيمة الناتجة. وبالمثل، إذا كانت قيمة العدد الصحيح المشفّر سالبة، سيتم تحويل القيمة إلى القيمة غير موقَّعة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع عدد صحيح TLV (موقَّعًا أو غير موقَّع)، أو لم يتم وضع القارئ على العنصر.

جلب

WEAVE_ERROR Get(
  uint32_t & v
)

احصل على قيمة العنصر الحالي كعدد صحيح غير موقَّع 32 بت.

إذا كانت قيمة العدد الصحيح المشفّر أكبر من نوع بيانات الإخراج، سيتم اقتطاع القيمة الناتجة. وبالمثل، إذا كانت قيمة العدد الصحيح المشفّر سالبة، سيتم تحويل القيمة إلى القيمة غير موقَّعة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع عدد صحيح TLV (موقَّعًا أو غير موقَّع)، أو لم يتم وضع القارئ على العنصر.

جلب

WEAVE_ERROR Get(
  uint64_t & v
)

احصل على قيمة العنصر الحالي كعدد صحيح غير موقَّع 64 بت.

إذا كانت قيمة العدد الصحيح المشفّر سالبة، سيتم تحويلها إلى القيمة غير موقَّعة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع عدد صحيح TLV (موقَّعًا أو غير موقَّع)، أو لم يتم وضع القارئ على العنصر.

جلب

WEAVE_ERROR Get(
  float & v
)

جلب

WEAVE_ERROR Get(
  double & v
)

احصل على قيمة العنصر الحالي كرقم نقطة عائمة مزدوج الدقة.

التفاصيل
المَعلمات
[out] v
لتلقِّي القيمة المرتبطة بعنصر TLV الحالي.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
في حال لم يكن العنصر الحالي من نوع النقطة العائمة TLV، أو لم يتم وضع القارئ على أحد العناصر.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

احصل على قيمة عنصر سلسلة البايت أو UTF8 الحالي.

لتحديد حجم المخزن المؤقت المطلوب للإدخال، عليك استدعاء الإجراء GetLength() قبل طلب GetBytes().

التفاصيل
المَعلمات
[in] buf
يشير هذا المصطلح إلى مؤشر لمخزن مؤقّت لتلقّي بيانات السلسلة.
[in] bufSize
الحجم بالبايت من المخزن المؤقت المشار إليه بواسطة buf.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
إذا لم يكن العنصر الحالي سلسلة بايت TLV أو UTF8، أو لم يتم وضع القارئ على أحد العناصر
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كان المخزن المؤقت المقدم صغيرًا جدًا بحيث لا يمكن الاحتفاظ بالبيانات المرتبطة بالعنصر الحالي.
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

GetContainerType

TLVType GetContainerType(
  void
) const 

تعرض نوع الحاوية التي يقرأ TLVReader داخلها حاليًا.

تعرض الطريقة GetContainerType() نوع حاوية TLV التي تتم قراءة TLVReader من خلالها. في حال وضع TLVReader في أقصى مستوى خارجي لترميز TLV (أي قبل عنصر TLV أو في أو بعده)، ستعرض الطريقة kTLVType_NotSpecified.

التفاصيل
المرتجعات
نوع الحقل TLVType للحاوية الحالية أو kTLVType_NotSpecified إذا لم يتم وضع TLVReader داخل حاوية.

GetControlByte

uint16_t GetControlByte(
  void
) const 

لعرض بايت التحكّم المرتبط بعنصر TLV الحالي.

من المفترَض ألا يعرف أحد عن بايت التحكّم، ويجب ألا يتمكّن أحد من الوصول إليه سوى التطبيق الداخلي للغة TLV. مع ذلك، يكون الوصول إلى بايت التحكّم مفيدًا لأغراض تصحيح الأخطاء من خلال الأدوات المساعدةلتصحيح الأخطاءTLV (التي تحاول فك ترميز بايت التحكّم في العلامة عند طباعة محتوى المخزن المؤقت TLV بشكل جيّد).

التفاصيل
المرتجعات
عدد صحيح غير موقَّع يحتوي على بايت التحكّم المرتبط بعنصر TLV الحالي. يتم عرض kTLVControlByte_NotSpecified إذا لم يكن القارئ في موضعه على أحد العناصر.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

مرِّر مؤشر الماوس فوق البايت المشفّر الأولي لعنصر سلسلة بايت TLV أو عنصر سلسلة UTF8.

تعرض هذه الطريقة مؤشرًا مباشرًا لقيمة السلسلة المشفرة داخل المخزن المؤقت للإدخال الأساسي. للنجاح، تتطلب الطريقة أن تكون قيمة السلسلة بأكملها موجودة في مخزن مؤقت واحد. وبخلاف ذلك، تعرِض الطريقة WEAVE_ERROR_TLV_UNDERRUN. وهذا يجعل طريقة الاستخدام المحدود عند قراءة البيانات من مخازن احتياطية متعددة ومتجاورة.

التفاصيل
المَعلمات
[out] data
يشير ذلك المصطلح إلى مرجع إلى مؤشر ثابت سيتلقّى مؤشرًا يؤدي إلى بيانات السلسلة الأساسية.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
إذا لم يكن العنصر الحالي سلسلة بايت TLV أو UTF8، أو لم يتم وضع القارئ على أحد العناصر
WEAVE_ERROR_TLV_UNDERRUN
في حال انتهاء ترميز TLV الأساسي قبل أوانه أو في حال لم يتم تضمين قيمة عنصر السلسلة الحالي في مورد عازلة واحد متجاورة
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

GetLength

uint32_t GetLength(
  void
) const 

تعرض طول البيانات المرتبطة بعنصر TLV الحالي.

ينطبق طول البيانات فقط على عناصر من نوع UTF8 أو سلسلة بايت. بالنسبة إلى سلاسل UTF8، تكون القيمة المعروضة هي عدد وحدات البايت في السلسلة، وليس عدد الأحرف.

التفاصيل
المرتجعات
طول البيانات المرتبطة بعنصر TLV الحالي (بالبايت)، أو القيمة 0 إذا لم يكن العنصر الحالي سلسلة UTF8 أو سلسلة بايت، أو إذا لم يكن القارئ في موضعه على عنصر.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

تعرض إجمالي عدد وحدات البايت التي تمت قراءتها منذ إعداد القارئ.

التفاصيل
المرتجعات
إجمالي عدد وحدات البايت التي تمت قراءتها منذ إعداد القارئ.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

للحصول على نقطة في المخزن المؤقت الأساسي للإدخال، والتي تتوافق مع الموضع الحالي للقارئ.

التفاصيل
المرتجعات
مؤشر إلى المخزن المؤقت الأساسي للإدخال يتوافق مع الموضع الحالي للقارئ

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

لعرض إجمالي عدد وحدات البايت التي يمكن قراءتها حتى يبلغ الحد الأقصى لطول القراءة.

التفاصيل
المرتجعات
إجمالي عدد وحدات البايت التي يمكن قراءتها إلى أن يتم الوصول إلى الحد الأقصى لمدة القراءة.

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

احصل على قيمة عنصر سلسلة البايت أو UTF8 الحالي كسلسلة منتهية فارغة.

لتحديد حجم المخزن المؤقت المطلوب للإدخال، يمكنك استدعاء الطريقة GetLength() قبل طلب GetBytes(). يجب أن يكون المخزن المؤقت للإدخال أكبر من طول السلسلة بمقدار بايت واحد على الأقل من طول السلسلة لاستيعاب الحرف الفارغ.

التفاصيل
المَعلمات
[in] buf
مؤشر يشير إلى مخزن مؤقت لتلقي بيانات سلسلة البايت.
[in] bufSize
الحجم بالبايت من المخزن المؤقت المشار إليه بواسطة buf.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
إذا لم يكن العنصر الحالي سلسلة بايت TLV أو UTF8، أو لم يتم وضع القارئ على أحد العناصر
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كان المخزن المؤقت المقدم صغيرًا جدًا بحيث لا يمكن الاحتفاظ بالبيانات المرتبطة بالعنصر الحالي.
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

GetTag

uint64_t GetTag(
  void
) const 

يتم عرض العلامة المرتبطة بعنصر TLV الحالي.

يمكن استخدام القيمة التي تعرضها GetTag() مع الدوال المساعدة للعلامات (IsProfileTag() وIsContextTag() وProfileIdFromTag() وغيرها) لتحديد نوع العلامة واستخراج قيم مختلفة لحقول العلامات.

التفاصيل
المرتجعات
عدد صحيح غير موقَّع يحتوي على معلومات حول العلامة المرتبطة بعنصر TLV الحالي.

GetType

TLVType GetType(
  void
) const 

تعرض نوع عنصر TLV الحالي.

التفاصيل
المرتجعات
قيمة TLVType تصف نوع البيانات لعنصر TLV الحالي. إذا لم يكن القارئ في موضعه على عنصر TLV، ستكون القيمة المعروضة kTLVType_NotSpecified.

إنت

void Init(
  const TLVReader & aReader
)

تهيئة كائن TLVReader من كائن TLVReader آخر.

التفاصيل
المَعلمات
[in] aReader
مرجع للقراءة فقط إلى TLVReader للتهيئة منه.

إنت

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

تعمل هذه السياسة على إعداد كائن TLVReader لقراءته من مخزن بيانات مؤقت إدخال واحد.

التفاصيل
المَعلمات
[in] data
مؤشر يشير إلى مخزن مؤقت يحتوي على بيانات TLV المطلوب تحليلها.
[in] dataLen
طول بيانات TLV المطلوب تحليلها.

إنت

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

تهيئة كائن TLVReader لقراءته من كائن PacketBuffer واحد.

يبدأ التحليل من موضع بدء المخزن المؤقت (buf->DataStart() ) ويستمر حتى نهاية البيانات في المخزن المؤقت (كما هو موضّح في buf->Datalen() )، أو يتم تحليل وحدات بايت maxLen.

التفاصيل
المَعلمات
[in] buf
مؤشر إلى PacketBuffer يحتوي على بيانات TLV المطلوب تحليلها.
[in] maxLen
الحد الأقصى لوحدات البايت المطلوب تحليلها. يتم ضبط مقدار البيانات تلقائيًا في المخزن المؤقت للإدخال.

إنت

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

تهيئة كائن TLVReader لقراءته من كائن TLVReader واحد أو أكثر.

يبدأ التحليل عند موضع بداية المخزن المؤقت الأولي (buf->DataStart() ). إذا كانت قيمة allowDiscontiguousBuffers صالحة، سينتقل القارئ خلال سلسلة المخازن المؤقتة المرتبطة بمؤشرات Next() الخاصة بها. يستمر التحليل إلى أن يتم استهلاك جميع البيانات في سلسلة التخزين المؤقت (كما هو موضّح في buf->Datalen() )، أو يتم تحليل وحدات بايت maxLen.

التفاصيل
المَعلمات
[in] buf
مؤشر إلى PacketBuffer يحتوي على بيانات TLV المطلوب تحليلها.
[in] maxLen
الحد الأقصى لوحدات البايت المطلوب تحليلها. يتم ضبط المقدار الإجمالي تلقائيًا على إجمالي البيانات في سلسلة المخزن المؤقت للإدخال.
[in] allowDiscontiguousBuffers
إذا كانت القيمة true، فانتقل إلى المورد الاحتياطي التالي في السلسلة بمجرد استهلاك جميع البيانات الموجودة في المخزن المؤقت الحالي. وإذا كانت القيمة false، أوقِف التحليل في نهاية المخزن المؤقت الأولي.

التالي

WEAVE_ERROR Next(
  void
)

تؤدي إلى انتقال الكائن TLVReader إلى عنصر TLV التالي المراد قراءته.

يضع الإجراء Next() كائن القارئ في العنصر التالي بترميز TLV موجود في سياق الاحتواء نفسه. وعلى وجه الخصوص، إذا كان القارئ في المستوى الخارجي من ترميز TLV، سيؤدي استدعاء Next() إلى نقل القارئ إلى العنصر التالي في أعلى القائمة. إذا تم وضع القارئ داخل عنصر حاوية TLV (بنية أو مصفوفة أو مسار)، سيؤدي استدعاء Next() إلى توجيه القارئ إلى عنصر العضو التالي في الحاوية.

نظرًا لأن Next() يقصر حركة القارئ على سياق الاحتواء الحالي، فإن استدعاء Next() عند وضع القارئ في عنصر الحاوية سيتقدم عبر الحاوية، مع تخطي عناصره الأعضاء (وأعضاء أي حاويات متداخلة) حتى يصل إلى العنصر الأول بعد الحاوية.

عند عدم وجود عناصر إضافية ضمن سياق احتواء معين، ستعرض طريقة Next() خطأ WEAVE_END_OF_TLV وسيبقى موضع القارئ بدون تغيير.

التفاصيل
قيم الإرجاع
WEAVE_NO_ERROR
ما إذا تم وضع القارئ على عنصر جديد بنجاح.
WEAVE_END_OF_TLV
في حال عدم توفّر عناصر أخرى.
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
WEAVE_ERROR_INVALID_TLV_ELEMENT
إذا واجه القارئ نوع عنصر TLV غير صالح أو غير متوافق
WEAVE_ERROR_INVALID_TLV_TAG
إذا صادف القارئ علامة TLV في سياق غير صالح
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
إذا واجه القارئ علامة TLV مشفّرة بشكل ضمني ولم يكن معرّف الملف الشخصي المقابل لها غير معروف.
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

التالي

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

يؤدي هذا الإجراء إلى الانتقال بالكائن TLVReader إلى عنصر TLV التالي المُراد قراءته، ما يؤكّد على نوع العنصر الجديد وعلامته.

تُعدّ طريقة Next(TLVTypeexpectedType, uint64_texpectedTag) طريقة ملائمة لها سلوك Next() نفسه، ولكنها تتحقق أيضًا من تطابق نوع وعلامة عنصر TLV الجديد مع الوسيطات المقدَّمة.

التفاصيل
المَعلمات
[in] expectedType
نوع البيانات المتوقّع للعنصر التالي.
[in] expectedTag
العلامة المتوقعة للعنصر التالي.
قيم الإرجاع
WEAVE_NO_ERROR
ما إذا تم وضع القارئ على عنصر جديد بنجاح.
WEAVE_END_OF_TLV
في حال عدم توفّر عناصر أخرى.
WEAVE_ERROR_WRONG_TLV_TYPE
إذا كان نوع العنصر الجديد لا يتطابق مع قيمة الوسيطة expectedType.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
إذا كانت العلامة المرتبطة بالعنصر الجديد لا تتطابق مع قيمة الوسيطة expectedTag
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
WEAVE_ERROR_INVALID_TLV_ELEMENT
إذا واجه القارئ نوع عنصر TLV غير صالح أو غير متوافق
WEAVE_ERROR_INVALID_TLV_TAG
إذا صادف القارئ علامة TLV في سياق غير صالح
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

تهيئة كائن TLVReader جديد لقراءة عناصر حاوية TLV.

يؤدّي الإجراء OpenContainer() إلى إعداد كائن TLVReader جديد لقراءة العناصر الفرعية لحاوية TLV (بنية أو مصفوفة أو مسار). عند استدعاء OpenContainer()، يجب وضع كائن TLVReader الحالي في عنصر الحاوية لتتم قراءته. تستخدم الطريقة كوسيطة وحدها مرجعًا لقارئ جديد سيتم إعداده لقراءة الحاوية. ويُعرف القارئ هذا باسم قارئ الحاوية، بينما يُعرف القارئ الذي يُطلَق عليه OpenContainer() باسم القارئ الرئيسي.

عند إرجاع الإجراء OpenContainer()، يتم وضع قارئ الحاوية مباشرةً قبل العضو الأول للحاوية. يؤدي استدعاء الدالة Next() في قارئ الحاويات إلى التنقّل بين أعضاء المجموعة حتى يتم الوصول إلى نهايتها، وعند ذلك سيعيد القارئ عرض WEAVE_END_OF_TLV.

أثناء فتح قارئ الحاوية، يجب ألا تجري التطبيقات استدعاءات أو تغيّر حالة القارئ الرئيسي بأي طريقة أخرى. بعد انتهاء أحد التطبيقات من استخدام قارئ الحاويات، يجب إغلاقه عن طريق استدعاء CloseContainer() على القارئ الرئيسي، مع تمرير قارئ الحاويات كوسيطة. يمكن للتطبيقات إغلاق قارئ الحاوية في أي وقت، مع قراءة جميع العناصر المضمَّنة في الحاوية الأساسية أو بدونها. بعد إغلاق قارئ الحاوية، يمكن أن تستمر التطبيقات في استخدامها للقارئ الرئيسي.

يكتسب قارئ الحاوية خصائص الإعدادات المختلفة من القارئ الرئيسي. وهي كما يلي:

  • معرّف الملف الشخصي الضمني (ImplicitProfileId)
  • مؤشر بيانات التطبيق (AppData)
  • مؤشر الدالة GetNextBuffer

التفاصيل
المَعلمات
[out] containerReader
مرجع إلى كائن TLVReader الذي سيتم إعداده لقراءة عناصر عنصر الحاوية الحالي. يتم استبدال أي بيانات مرتبطة بالكائن المقدّم.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_INCORRECT_STATE
إذا لم يكن العنصر الحالي في موضعه على عنصر حاوية.

التخطّي

WEAVE_ERROR Skip(
  void
)

يؤدي هذا الخيار إلى نقل الكائن TLVReader إلى ما بعد عنصر TLV الحالي مباشرةً.

طريقة تخطي() وضع كائن القارئ بعد عنصر TLV الحالي مباشرةً، بحيث يؤدي الاستدعاء التالي إلى Next() إلى توجيه القارئ إلى العنصر التالي. كما هو الحال مع Next()، إذا تم وضع القارئ في عنصر حاوية في وقت الاستدعاء، سيتم تخطّي أعضاء الحاوية. إذا لم يتم وضع القارئ على أي عنصر، فسيظل موضعه بدون تغيير.

التفاصيل
قيم الإرجاع
WEAVE_NO_ERROR
ما إذا تم وضع القارئ على عنصر جديد بنجاح.
WEAVE_END_OF_TLV
في حال عدم توفّر عناصر أخرى.
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
WEAVE_ERROR_INVALID_TLV_ELEMENT
إذا واجه القارئ نوع عنصر TLV غير صالح أو غير متوافق
WEAVE_ERROR_INVALID_TLV_TAG
إذا صادف القارئ علامة TLV في سياق غير صالح
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

للتحقّق من أنّ الكائن TVLReader يقع في نهاية حاوية TLV.

تتحقّق طريقة VerifyEndOfContainer() من عدم توفُّر عناصر TLV أخرى يمكن قراءتها ضمن حاوية TLV الحالية. هذه طريقة مناسبة تشبه استدعاء Next() والبحث عن القيمة المعروضة WEAVE_END_OF_TLV.

التفاصيل
قيم الإرجاع
WEAVE_NO_ERROR
في حال عدم توفّر عناصر TLV إضافية لقراءتها
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
ما إذا تم العثور على عنصر TLV آخر في المجموعة
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي قبل أوانه
WEAVE_ERROR_INVALID_TLV_ELEMENT
إذا واجه القارئ نوع عنصر TLV غير صالح أو غير متوافق
WEAVE_ERROR_INVALID_TLV_TAG
إذا صادف القارئ علامة TLV في سياق غير صالح
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

الدوال المحمية

ClearElementState

void ClearElementState(
  void
)

امحُ حالة TLVReader.

تُستخدَم هذه الطريقة لوضع القارئ قبل أوّل TLV، أو بين تلك الفيديوهات أو بعدها TLV الأخير.

ElementType

TLVElementType ElementType(
  void
) const 

هذه طريقة خاصة تعرض TLVElementType من mControlByte.

EnsureData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

هذه طريقة خاصة تُستخدَم لحساب طول رأس عنصر TLV.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

ReadData

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

ReadElement

WEAVE_ERROR ReadElement(
  void
)

ReadTag

uint64_t ReadTag(
  TLVTagControl tagControl,
  const uint8_t *& p
)

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

SkipData

WEAVE_ERROR SkipData(
  void
)

يمكنك تخطّي أي بيانات مضمَّنة في TLV الحالي من خلال قراءتها بدون مورد احتياطي وجهة.

التفاصيل
قيم الإرجاع
WEAVE_NO_ERROR
ما إذا تم وضع القارئ بنجاح في نهاية البيانات أم لا.
other
رموز الخطأ الأخرى في Weave أو النظام الأساسي التي تعرضها الدالة GetNextBuffer() التي تم ضبطها. لا يمكن إجراء ذلك إلا عندما تكون قيمة GetNextBuffer فارغة.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

VerifyElement

WEAVE_ERROR VerifyElement(
  void
)

الدوال الثابتة المحمية

FailGetNextBuffer

WEAVE_ERROR FailGetNextBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)

GetNextPacketBuffer

WEAVE_ERROR GetNextPacketBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)