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 تحليل البيانات مباشرةً من المخزن المؤقت للإدخال الثابت أو من سلسلة واحدة أو أكثر من PacketBuffers. بالإضافة إلى ذلك، يمكن للتطبيقات توفير دالة GetNextBuffer لخلاصة البيانات إلى القارئ من مصدر عشوائي، مثل مقبس أو منفذ تسلسلي.

الوراثة

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

الأنواع العامة

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)
تخصّص وتعرض المخزن المؤقت الذي يحتوي على قيمة السلسلة الحالية أو بايت 8.
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 للقراءة من واحد أو أكثر من PacketBuffers.
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 أو النظام الأساسي تشير إلى حدوث خطأ يمنع الدالة من إنشاء البيانات المطلوبة.

السمات العلنية

القائمة

void * AppData

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

GetNextBuffer

GetNextBufferFunct GetNextBuffer

مؤشر إلى دالة ستعرِض بيانات إدخال للعنصر TLVReader.

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

يمكن ضبط GetNextBuffer من خلال تطبيق في أي وقت، ولكن يتم عادةً ضبطه عند بدء القراءة.

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

رقم تعريف ImplicitProfile

uint32_t ImplicitProfileId

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

عندما يعثر القارئ على علامة خاصة بملف شخصي تم ترميزها في شكل ضمني، يتم استخدام قيمة السمة ImplicitProfileId على أنها رقم تعريف الملف الشخصي المُفترَض للعلامة.

يتم ضبط السمة ImplicitProfileId تلقائيًا على kProfileIdNotDescriptionified. عند فك تشفير 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

الوظائف العامة

إغلاق الحاوية

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

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

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

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

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

التفاصيل
المَعلمات
[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 غير NULL.

دوبيت

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

تخصّص وتعرض المخزن المؤقت الذي يحتوي على قيمة السلسلة الحالية أو بايت 8.

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

التفاصيل
المَعلمات
[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
إذا كان النظام الأساسي المستهدف لا يتوافق مع MCCoc() وfree().
other
رموز خطأ نظام Weave أو النظام الأساسي الأخرى التي تعرضها دالة GetNextBuffer() التي تم ضبطها. لا يكون ذلك ممكنًا إلا عندما يكون GetNextBuffer غير NULL.

سلسلة DupString

WEAVE_ERROR DupString(
  char *& buf
)

تخصّص وتعرض المخزن المؤقت الذي يتضمن القيمة التي تم إنهاؤها فارغة من السلسلة الحالية بالبايت أو UTF8.

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

التفاصيل
المَعلمات
[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
إذا كان النظام الأساسي المستهدف لا يتوافق مع MCCoc() وfree().
other
رموز خطأ نظام Weave أو النظام الأساسي الأخرى التي تعرضها دالة GetNextBuffer() التي تم ضبطها. لا يكون ذلك ممكنًا إلا عندما يكون GetNextBuffer غير NULL.

إدخال الحاوية

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
في حال عدم وضع العنصر الحالي في عنصر الحاوية

خروج حاوية

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 غير NULL.

جلب

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 غير NULL.

GetContainerType

TLVType GetContainerType(
  void
) const 

لعرض نوع الحاوية التي تتم القراءة حاليًا عليها بواسطة TLVReader.

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

التفاصيل
المرتجعات
نوع TLVللحاوية الحالية أو kTLVType_NotDescriptionified في حال عدم وضع TLVReader ضمن حاوية.

GetControlByte

uint16_t GetControlByte(
  void
) const 

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

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

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

الحصول على بيانات

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 غير NULL.

المدة

uint32_t GetLength(
  void
) const 

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

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

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

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

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

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

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

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

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

المدة المتبقية

uint32_t GetRemainingLength(
  void
) const 

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

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

الحصول على سلسلة

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 غير NULL.

الحصول على علامة

uint64_t GetTag(
  void
) const 

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

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

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

GetType

TLVType GetType(
  void
) const 

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

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

Init

void Init(
  const TLVReader & aReader
)

لإعداد الكائن TLVReader من كائن TLVReader آخر.

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

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

لإعداد كائن TLVReader للقراءة من مخزن مؤقت واحد.

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

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

لإعداد كائن TLVReader للقراءة من حزمة PacketBuffer واحدة.

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

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

Init

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

لإعداد كائن TLVReader للقراءة من واحد أو أكثر من PacketBuffers.

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

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

التالي

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 غير NULL.

التالي

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

تقدم العنصر TLVReader إلى عنصر TLV التالي لقراءته، مع تأكيد نوع العنصر الجديد والعلامة.

طريقة Next(TLVType المتوقّعة، uint64_t المتوقّع) هي طريقة ملائمة لها السلوك نفسه المتّبع في 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 غير NULL.

حاويات Open

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 الحالي مباشرةً.

تضع الطريقة Skip() كائن القارئ مباشرةً بعد عنصر 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 غير NULL.

التحقّق من النهاية

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 غير NULL.

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

محو العناصر

void ClearElementState(
  void
)

محو حالة TLVReader.

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

نوع العنصر

TLVElementType ElementType(
  void
) const 

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

التأكّد من البيانات

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeaderLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

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

حاوية مفتوحة

bool IsContainerOpen(
  void
) const 

بيانات القراءة

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

عنصر القراءة

WEAVE_ERROR ReadElement(
  void
)

علامة القراءة

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 غير NULL.

تخطي إلى نهاية الحاوية

WEAVE_ERROR SkipToEndOfContainer(
  void
)

عنصر التحقق

WEAVE_ERROR VerifyElement(
  void
)

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

فشل FaNextGetNextBuffer

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
)