nl :: نسج:: TLV :: TLVReader
#include <src/lib/core/WeaveTLV.h>
يوفر محلل ذاكرة فعالة للبيانات المشفرة في نسج TLV الشكل.
ملخص
TLVReader تنفذ إلى الأمام فقط، "على غرار سحب" محلل للنسج TLV البيانات. وTLVReader يعمل الكائن باعتباره المؤشر الذي يمكن استخدامه لتكرار عبر سلسلة من TLV العناصر وتفسير محتوياتها. عند وضعه على عنصر، يمكن لتطبيقات إجراء مكالمات إلى القارئ الحصول على () طرق الاستعلام نوع العنصر الحالي والعلامة، واستخراج أي قيمة المرتبطة بها. القارئ التالي () يستخدم طريقة للمضي قدما من عنصر إلى عنصر.
ATLVReader الكائن دائما وضع إما قبل، أو بعد TLV عنصر. عندما تهيئة أولا،TLVReader يتوضع مباشرة قبل العنصر الأول من الترميز. لبدء القراءة، يجب تطبيق إجراء مكالمة الأولية إلى التالي () طريقة لوضع القارئ على العنصر الأول. عندما عنصر الحاوية encounteredeither هيكل، مجموعة أو paththe OpenContainer () أو EnterContainer () أساليب يمكن استخدامها لأعاد خلال محتويات الحاوية.
عندما يصل القارئ نهاية TLV الترميز، أو العنصر الأخير ضمن حاوية، فإنه يشير إلى التطبيق من خلال العودة خطأ WEAVE_END_OF_TLV من التالي () الأسلوب. وسوف تستمر القارئ للعودة WEAVE_END_OF_TLV حتى يتم إعادة تهيئة ذلك، أو خرجت الحاوية الحالية (عبر CloseContainer () / ExitContainer () ).
ATLVReader الكائن يمكن تحليل البيانات مباشرة من مخزن الإدخال المؤقت الثابتة، أو من سلسلة من واحد أو أكثر PacketBuffers. بالإضافة إلى ذلك، يمكن لتطبيقات العرض على 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 (*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) | |
ExitContainer ( TLVType outerContainerType) | |
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 (constTLVReader & aReader) | void |
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) | |
Next ( TLVType expectedType, uint64_t expectedTag) | |
OpenContainer (TLVReader & containerReader) | |
Skip (void) | |
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 . عند الاتصال ، من المتوقع أن تنتج الوظيفة بيانات إضافية للقارئ لتحليل أو إرسال إشارة للقارئ بأنه لا توجد بيانات أخرى متاحة.
تفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||
إرجاع القيم |
|
السمات العامة
معلومات التطبيق
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
قراءة mLen
uint32_t mLenRead
إم ماكس لين
uint32_t mMaxLen
mReadPoint
const uint8_t * mReadPoint
الوظائف العامة
CloseContainer
WEAVE_ERROR CloseContainer( TLVReader & containerReader )
يكمل القراءة من TLV حاوية بعد استدعاء OpenContainer () .
و CloseContainer () طريقة استعادة الدولة من أحد الوالدينTLVReader الكائن بعد استدعاء OpenContainer () . لكل دعوة إلى OpenContainer () التطبيقات يجب إجراء مكالمة الموافق CloseContainer () ، ويمر إشارة إلى نفس القارئ حاوية لكلتا الطريقتين.
عندما CloseContainer () العودة، ويتم وضع القارئ الأم مباشرة قبل العنصر الأول الذي يلي الحاوية. من هذه النقطة يمكن استخدام أحد تطبيقات التالي () طريقة للمضي قدما من خلال أي العناصر المتبقية.
يمكن لتطبيقات الاتصال قريب CloseContainer () على القارئ الأم في أي وقت من الأوقات، بغض النظر عن ما إذا كانت جميع العناصر في حاوية الأساسية تم قراءة. بعد CloseContainer () وقد دعا، يجب تطبيق ينظر القارئ حاوية "دي تهيئة 'ويجب عدم استخدام أكثر من ذلك دون إعادة تهيئة عليه.
تفاصيل | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||||||
إرجاع القيم |
|
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
تخصيص وإرجاع مخزن مؤقت يحتوي على قيمة البايت الحالي أو سلسلة UTF8.
تقوم هذه الطريقة بإنشاء مخزن مؤقت وإرجاع نسخة من البيانات المرتبطة بالبايت أو عنصر سلسلة UTF-8 في الموضع الحالي. يتم الحصول على ذاكرة المخزن المؤقت باستخدام malloc () ويجب تحريرها مجانًا () بواسطة المتصل عندما لا تكون هناك حاجة إليها.
تفاصيل | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||||||
إرجاع القيم |
|
دوبسترينج
WEAVE_ERROR DupString( char *& buf )
يخصص ويعيد مخزنًا مؤقتًا يحتوي على قيمة منتهية بقيمة خالية من البايت الحالي أو سلسلة UTF8.
تقوم هذه الطريقة بإنشاء مخزن مؤقت وإرجاع نسخة منتهية بقيمة خالية من البيانات المرتبطة بالبايت أو عنصر سلسلة UTF-8 في الموضع الحالي. يتم الحصول على ذاكرة المخزن المؤقت باستخدام malloc () ويجب تحريرها مجانًا () بواسطة المتصل عندما لا تكون هناك حاجة إليها.
تفاصيل | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||||||
إرجاع القيم |
|
أدخل الحاوية
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
بإعدادTLVReader كائن لقراءة أعضاء TLV عنصر حاوية.
و EnterContainer () طريقة يستعد الحاليTLVReader الكائن لبدء قراءة عناصر عضوا في TLV الحاويات (هيكل، مجموعة أو المسار). لكل دعوة إلى EnterContainer () التطبيقات يجب إجراء مكالمة الموافق ExitContainer () .
عندما EnterContainer () يسمىTLVReader الكائن يجب وضع على عنصر حاوية يمكن ان تقرأ. تأخذ الطريقة مرجعًا لقيمة TLVType كوسيطة والتي سيتم استخدامها لحفظ سياق القارئ أثناء قراءته للحاوية.
عندما EnterContainer () إرجاع الأسلوب، يتم وضع القارئ مباشرة قبل أول عضو في الحاوية. دعا مرارا التالي () سوف تقدم للقارئ من خلال أعضاء المجموعة حتى يتم الوصول إلى النهاية، وعند هذه النقطة فإن القارئ العودة WEAVE_END_OF_TLV.
وبمجرد الانتهاء من تطبيق القراءة وعاء يمكن أن تستمر قراءة العناصر بعد الحاوية عن طريق استدعاء ExitContainer () الأسلوب.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
ExitContainer
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
يكمل القراءة من TLV الحاويات وتستعد لTLVReader كائن لقراءة العناصر بعد الحاوية.
و ExitContainer () طريقة استعادة الدولة منTLVReader الكائن بعد استدعاء EnterContainer () . لكل دعوة إلى EnterContainer () التطبيقات يجب إجراء مكالمة الموافق ExitContainer () ، تمرير قيمة سياق إرجاعها بواسطة EnterContainer () الأسلوب.
عندما ExitContainer () العودة، ويتم وضع القارئ مباشرة قبل العنصر الأول الذي يلي الحاوية. من هذه النقطة يمكن استخدام أحد تطبيقات التالي () طريقة للمضي قدما من خلال أي العناصر المتبقية.
مرة واحدة EnterContainer () وقد دعا، يمكن لتطبيقات الاتصال ExitContainer () على القارئ في أي وقت من الأوقات، بغض النظر عما إذا كانت جميع العناصر في حاوية الكامنة القراءة.
تفاصيل | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( bool & v )
يحصل
WEAVE_ERROR Get( int8_t & v )
احصل على قيمة العنصر الحالي في صورة عدد صحيح ذي إشارة 8 بت.
إذا كانت قيمة العدد الصحيح المشفر أكبر من نوع بيانات الإخراج ، فسيتم اقتطاع القيمة الناتجة.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( int16_t & v )
احصل على قيمة العنصر الحالي كعدد صحيح ذي إشارة 16 بت.
إذا كانت قيمة العدد الصحيح المشفر أكبر من نوع بيانات الإخراج ، فسيتم اقتطاع القيمة الناتجة.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( int32_t & v )
احصل على قيمة العنصر الحالي كعدد صحيح موقعة 32 بت.
إذا كانت قيمة العدد الصحيح المشفر أكبر من نوع بيانات الإخراج ، فسيتم اقتطاع القيمة الناتجة.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( int64_t & v )
احصل على قيمة العنصر الحالي كعدد صحيح ذي إشارة 64 بت.
إذا كانت قيمة العدد الصحيح المشفر أكبر من نوع بيانات الإخراج ، فسيتم اقتطاع القيمة الناتجة.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( uint8_t & v )
احصل على قيمة العنصر الحالي كعدد صحيح 8 بت بدون إشارة.
إذا كانت قيمة العدد الصحيح المشفر أكبر من نوع بيانات الإخراج ، فسيتم اقتطاع القيمة الناتجة. وبالمثل ، إذا كانت القيمة الصحيحة المشفرة سالبة ، فسيتم تحويل القيمة إلى قيمة غير موقعة.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( uint16_t & v )
احصل على قيمة العنصر الحالي كعدد صحيح بدون إشارة 16 بت.
إذا كانت قيمة العدد الصحيح المشفر أكبر من نوع بيانات الإخراج ، فسيتم اقتطاع القيمة الناتجة. وبالمثل ، إذا كانت القيمة الصحيحة المشفرة سالبة ، فسيتم تحويل القيمة إلى قيمة غير موقعة.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( uint32_t & v )
احصل على قيمة العنصر الحالي كعدد صحيح بدون إشارة 32 بت.
إذا كانت قيمة العدد الصحيح المشفر أكبر من نوع بيانات الإخراج ، فسيتم اقتطاع القيمة الناتجة. وبالمثل ، إذا كانت القيمة الصحيحة المشفرة سالبة ، فسيتم تحويل القيمة إلى قيمة غير موقعة.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( uint64_t & v )
احصل على قيمة العنصر الحالي كعدد صحيح بدون إشارة 64 بت.
إذا كانت قيمة العدد الصحيح المشفر سالبة ، فسيتم تحويل القيمة إلى قيمة غير موقعة.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يحصل
WEAVE_ERROR Get( float & v )
يحصل
WEAVE_ERROR Get( double & v )
GetBufHandle
uintptr_t GetBufHandle( void ) const
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
احصل على قيمة البايت الحالي أو عنصر سلسلة UTF8.
لتحديد المطلوب حجم مخزن الإدخال المؤقت، اتصل GetLength () طريقة قبل استدعاء GetBytes () .
تفاصيل | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||||
إرجاع القيم |
|
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 . هذا يجعل الطريقة محدودة الاستخدام عند قراءة البيانات من عدة مخازن مؤقتة غير متجاورة.
تفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||
إرجاع القيم |
|
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 () . يجب أن يكون مخزن الإدخال المؤقت أكبر ببايت واحد على الأقل من طول السلسلة لتتوافق مع الحرف الفارغ.
تفاصيل | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||||
إرجاع القيم |
|
GetTag
uint64_t GetTag( void ) const
يعود العلامة المرتبطة الحالي TLV عنصر.
القيمة التي تم إرجاعها من قبل GetTag () يمكن استخدامها مع وظائف العلامة فائدة ( IsProfileTag () ، IsContextTag () ، ProfileIdFromTag () ، الخ) لتحديد نوع العلامة ولاستخراج مختلف القيم العلامة المجال.
تفاصيل | |
---|---|
عائدات | عدد صحيح بدون إشارة تحتوي على معلومات حول العلامة المرتبطة الحالي TLV عنصر. |
GetType
TLVType GetType( void ) const
فيه
void Init( const TLVReader & aReader )
فيه
void Init( const uint8_t *data, uint32_t dataLen )
فيه
void Init( PacketBuffer *buf, uint32_t maxLen )
تهيئة وTLVReader الكائن القراءة من PacketBuffer احد.
يبدأ التحليل عند موضع بدء المخزن المؤقت (buf-> DataStart ()) ويستمر حتى نهاية البيانات في المخزن المؤقت (كما هو موضح بواسطة buf-> Datalen ()) ، أو تم تحليل maxLen بايت.
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
|
فيه
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
تهيئة وTLVReader الكائن القراءة من واحد أو أكثر PacketBuffers.
يبدأ التحليل عند موضع بدء المخزن المؤقت الأولي (buf-> DataStart ()). إذا allowDiscontiguousBuffers غير صحيح، فإن القارئ تقدم من خلال سلسلة من مخازن تربطها بهم التالي) ( المؤشرات. يستمر التحليل حتى يتم استهلاك جميع البيانات الموجودة في سلسلة المخزن المؤقت (كما هو موضح بواسطة buf-> Datalen ()) ، أو يتم تحليل maxLen بايت.
تفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
|
التالي
WEAVE_ERROR Next( void )
التقدم الذيTLVReader الكائن إلى القادم TLV عنصر يمكن ان تقرأ.
في التالي () مواقف طريقة الكائن القارئ على العنصر التالي في TLV ترميز أن يتواجد في سياق احتواء نفسه. على وجه الخصوص، إذا تم وضع القارئ على المستوى الخارجي الأكثر من TLV الترميز، داعيا التالي () سوف تقدم للقارئ أن القادم، أعلى معظم عنصر. إذا تم وضع القارئ ضمن TLV عنصر حاوية (هيكل، مجموعة أو المسار)، داعيا التالي () سوف تقدم للقارئ أن العنصر العضو التالي من الحاوية.
منذ التالي () يقيد القارئ الحركة إلى سياق الاحتواء الحالي، داعيا التالي () عندما يتم وضع القارئ في عنصر حاوية سوف تقدم على الحاوية، وتخطي عناصر الأعضاء فيها (وأعضاء أي حاويات المتداخلة) حتى يصل أولا عنصر بعد الحاوية.
عندما لا يكون هناك عناصر أخرى في سياق احتواء معين في التالي () طريقة سيعود WEAVE_END_OF_TLV خطأ وموقف القارئ لن تتغير.
تفاصيل | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
إرجاع القيم |
|
التالي
WEAVE_ERROR Next( TLVType expectedType, uint64_t expectedTag )
التقدم الذيTLVReader الكائن إلى القادم TLV عنصر يمكن ان تقرأ، مؤكدا نوع وعلامة من العنصر الجديد.
في التالي (TLVType expectedType، uint64_t expectedTag) طريقة هي طريقة ملائمة له نفس السلوك كما التالي () ، ولكن أيضا التحقق من أن نوع وعلامة من جديد TLV عنصر تطابق الحجج الموردة.
تفاصيل | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||||||||||
إرجاع القيم |
|
OpenContainer
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
تهيئة جديدTLVReader كائن لقراءة أعضاء TLV عنصر حاوية.
و OpenContainer () طريقة تهيئة جديدTLVReader كائن لقراءة العناصر عضو في TLV الحاويات (هيكل، مجموعة أو المسار). عندما OpenContainer () يسمى، والحاليةTLVReader يجب وضع الكائن على عنصر حاوية يمكن ان تقرأ. تأخذ الطريقة كحجة وحيدة لها إشارة إلى قارئ جديد سيتم تهيئته لقراءة الحاوية. ويعرف هذا القارئ وقارئ حاوية في حين أن القارئ الذي OpenContainer () يسمى يعرف القارئ الأم.
عندما OpenContainer () إرجاع الأسلوب، يتم وضع القارئ الحاويات مباشرة قبل أول عضو في الحاوية. داعيا التالي () على القارئ حاوية سوف تقدم من خلال أعضاء المجموعة حتى النهاية هو التوصل إليه، وعند هذه النقطة فإن القارئ العودة WEAVE_END_OF_TLV.
أثناء فتح قارئ الحاوية ، يجب ألا تقوم التطبيقات بإجراء مكالمات أو تغيير حالة القارئ الأصلي. وبمجرد انتهاء تطبيق باستخدام القارئ حاوية يجب أن إغلاقه عن طريق الاتصال CloseContainer () على القارئ الأم، ويمر القارئ حاوية كحجة. قد تغلق التطبيقات قارئ الحاوية في أي وقت ، مع أو بدون قراءة جميع العناصر الموجودة في الحاوية الأساسية. بعد إغلاق قارئ الحاوية ، قد تستمر التطبيقات في استخدامها للقارئ الأصلي.
يرث قارئ الحاوية خصائص تكوين متنوعة من القارئ الأصلي. هؤلاء هم:
- معرف ملف التعريف الضمني (ImplicitProfileId)
- مؤشر بيانات التطبيق (AppData)
- مؤشر دالة GetNextBuffer
تفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
| ||||
إرجاع القيم |
|
يتخطى
WEAVE_ERROR Skip( void )
السلفTLVReader الكائن فور الحالي TLV عنصر.
ل تخطي () مواقف طريقة الكائن القارئ مباشرة بعد الحالي TLV عنصر، بحيث استدعاء لاحقة التالي () سوف تقدم للقارئ أن العنصر التالي. مثل التالي () ، إذا تم وضع القارئ على عنصر الحاويات في وقت المكالمة، أعضاء الحاوية سيتم تخطي. إذا لم يتم وضع القارئ على أي عنصر ، فإن موضعه يظل دون تغيير.
تفاصيل | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
إرجاع القيم |
|
VerifyEndOfContainer
WEAVE_ERROR VerifyEndOfContainer( void )
يتحقق هذا الكائن TVLReader هو في نهاية TLV الحاوية.
و VerifyEndOfContainer () يتحقق طريقة أنه لا توجد المزيد من TLV عناصر يمكن ان تقرأ داخل الحالية TLV الحاوية. هذا هو وسيلة الراحة التي ما يعادل يدعو التالي () والتحقق من وجود قيمة إرجاع WEAVE_END_OF_TLV.
تفاصيل | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
إرجاع القيم |
|
وظائف محمية
ClearElementState
void ClearElementState( void )
ElementType
TLVElementType ElementType( void ) const
This is a private method that returns the TLVElementType from mControlByte.
EnsureData
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
GetElementHeadLength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
This is a private method used to compute the length of a TLV element head.
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 )
Skip any data contained in the current TLV by reading over it without a destination buffer.
تفاصيل | |||||
---|---|---|---|---|---|
إرجاع القيم |
|
SkipToEndOfContainer
WEAVE_ERROR SkipToEndOfContainer( void )
VerifyElement
WEAVE_ERROR VerifyElement( void )
Protected static functions
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 )
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. Thread is a registered trademark of the Thread Group, Inc.
Last updated 2019-01-15 UTC.