nl :: نسج:: TLV :: TLVUpdater
#include <src/lib/core/WeaveTLV.h>
يوفر واجهة القارئ / الكاتب موحدة لتحرير / إضافة / حذف العناصر في TLV الترميز.
ملخص
و TLVUpdater هو اتحادTLVReader وTLVWriter الكائنات وتوفر أساليب واجهة لتحرير / حذف البيانات في ترميز وكذلك إضافة عناصر جديدة إلى TLV الترميز. و TLVUpdater الكائن يعمل أساسا مثل اثنين من المؤشرات، واحدة للقراءة الترميز الحالية وآخر للكتابة (سواء للنسخ على البيانات الموجودة أو كتابة البيانات جديد).
لغويا، و TLVUpdater وظائف الجسم مثل اتحادTLVReader وTLVWriter . و TLVUpdater طرق لها معان أكثر أو أقل مماثلة لنظرائهم الذي يحمل الاسم نفسه في TLVReader / TLVWriter. حيث هناك اختلافات في دلالات، ويتم توثيق الخلافات بشكل واضح في قسم التعليق وظيفة في WeaveTLVUpdater.cpp .
واحد ملاحظة هامة بشكل خاص إزاء TLVUpdater الصورة PutBytes () وPutString () الأساليب هي أنه يمكن أن يترك الترميز في دولة فاسدة فقط مع رأس عنصر مكتوبة عند حدوث فيضان. يمكن لتطبيقات الاتصال GetRemainingFreeLength () للتأكد من وجود مساحة حرة تقريبا بما فيه الكفاية لكتابة الترميز. علما بأن GetRemainingFreeLength () يقول لك فقط بايت الحرة المتاحة، وليس هناك طريقة للتطبيق لمعرفة طول البيانات المشفرة التي يحصل مكتوب. في حالة حدوث تجاوز ، سيعيد كل من PutBytes () و PutString () WEAVE_ERROR_BUFFER_TOO_SMALL إلى المتصل.
أيضا، علما بأن التالي () طاقتها طريقة لكلا تخطي العنصر الحالي وأيضا تقدم للقارئ الداخلية إلى العنصر التالي. لأن تخطي عناصر المشفرة بالفعل يتطلب تغيير متغيرات حالة مساحة حرة الكاتب الداخلي لحساب مساحة سراح الجديد (المتاحة من خلال تخطي)، ومن المتوقع أن استدعاء التطبيق التالي () على التحديث بعد طريقة الحصول على () والتي لا توجد الآن قيمة لا أرغب في إعادة الكتابة (وهو ما يعادل تخطي العنصر الحالي).
الوظائف العامة | |
---|---|
CopyElement (TLVReader & reader) | |
CopyElement (uint64_t tag,TLVReader & reader) | |
DupBytes (uint8_t *& buf, uint32_t & dataLen) | |
DupString (char *& buf) | |
EndContainer ( TLVType outerContainerType) | |
EnterContainer ( TLVType & outerContainerType) | بإعداد TLVUpdater كائن لقراءة عناصر الحاوية. |
ExitContainer ( TLVType outerContainerType) | |
Finalize (void) | |
Get (bool & v) | |
Get (int8_t & v) | |
Get (int16_t & v) | |
Get (int32_t & v) | |
Get (int64_t & v) | |
Get (uint8_t & v) | |
Get (uint16_t & v) | |
Get (uint32_t & v) | |
Get (uint64_t & v) | |
Get (float & v) | |
Get (double & v) | |
GetBytes (uint8_t *buf, uint32_t bufSize) | |
GetContainerType (void) const | |
GetDataPtr (const uint8_t *& data) | |
GetImplicitProfileId (void) | uint32_t |
GetLength (void) const | uint32_t |
GetLengthRead (void) const | uint32_t |
GetLengthWritten (void) | uint32_t |
GetReader (TLVReader & containerReader) | void |
GetRemainingFreeLength (void) | uint32_t |
GetRemainingLength (void) const | uint32_t |
GetString (char *buf, uint32_t bufSize) | |
GetTag (void) const | uint64_t |
GetType (void) const | |
Init (uint8_t *buf, uint32_t dataLen, uint32_t maxLen) | تهيئة TLVUpdater الكائن لتحرير منطقة عازلة مدخل واحد. |
Init (TLVReader & aReader, uint32_t freeLen) | تهيئة TLVUpdater الكائن باستخدامTLVReader . |
Move (void) | |
MoveUntilEnd (void) | void نقل كل شيء من TLVUpdater نقطة القراءة الحالية الصورة حتى نهاية المدخلات TLV العازلة لأكثر من الانتاج. |
Next (void) | تخطي العنصر الحالي ودفع TLVUpdater الكائن إلى العنصر التالي في إدخال TLV . |
Put (uint64_t tag, int8_t v) | |
Put (uint64_t tag, int16_t v) | |
Put (uint64_t tag, int32_t v) | |
Put (uint64_t tag, int64_t v) | |
Put (uint64_t tag, uint8_t v) | |
Put (uint64_t tag, uint16_t v) | |
Put (uint64_t tag, uint32_t v) | |
Put (uint64_t tag, uint64_t v) | |
Put (uint64_t tag, int8_t v, bool preserveSize) | |
Put (uint64_t tag, int16_t v, bool preserveSize) | |
Put (uint64_t tag, int32_t v, bool preserveSize) | |
Put (uint64_t tag, int64_t v, bool preserveSize) | |
Put (uint64_t tag, uint8_t v, bool preserveSize) | |
Put (uint64_t tag, uint16_t v, bool preserveSize) | |
Put (uint64_t tag, uint32_t v, bool preserveSize) | |
Put (uint64_t tag, uint64_t v, bool preserveSize) | |
Put (uint64_t tag, float v) | |
Put (uint64_t tag, double v) | |
PutBoolean (uint64_t tag, bool v) | |
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len) | |
PutNull (uint64_t tag) | |
PutString (uint64_t tag, const char *buf) | |
PutString (uint64_t tag, const char *buf, uint32_t len) | |
SetImplicitProfileId (uint32_t profileId) | void تعيين معرف الملف الضمني ل TLVUpdater الكائن. |
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType) | |
VerifyEndOfContainer (void) |
الوظائف العامة
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
دوبسترينج
WEAVE_ERROR DupString( char *& buf )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
أدخل الحاوية
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
بإعداد TLVUpdater كائن لقراءة عناصر الحاوية.
فإنه بترميز أيضا بداية من كائن حاوية في إخراج TLV .
و EnterContainer () طريقة يستعد الحالي TLVUpdater الكائن لبدء قراءة عناصر عضوا في TLV الحاويات (هيكل، مجموعة أو المسار). لكل دعوة إلى EnterContainer () التطبيقات يجب إجراء مكالمة الموافق ExitContainer () .
عندما EnterContainer () يسمى TLVUpdater يجب وضع القارئ على عنصر حاوية. تأخذ الطريقة مرجعًا لقيمة TLVType كوسيطة والتي سيتم استخدامها لحفظ سياق المحدث أثناء قراءته للحاوية.
عندما EnterContainer () إرجاع الأسلوب، يتم وضع التحديث مباشرة قبل أول عضو في الحاوية. دعا مرارا التالي () سوف تقدم المحدث من خلال أعضاء المجموعة حتى يتم الوصول إلى النهاية، وعند هذه النقطة سوف المحدث يعود WEAVE_END_OF_TLV.
وبمجرد الانتهاء من تطبيق القراءة وعاء يمكن أن تستمر قراءة العناصر بعد الحاوية عن طريق استدعاء ExitContainer () الأسلوب.
تفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
| ||||||
إرجاع القيم |
|
ExitContainer
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
يكمل القراءة من TLV عنصر حاوية ويشفر حدا من TLV عنصر في إخراج TLV .
و ExitContainer () طريقة استعادة الدولة من TLVUpdater الكائن بعد استدعاء EnterContainer () . لكل دعوة إلى EnterContainer () التطبيقات يجب إجراء مكالمة الموافق ExitContainer () ، تمرير قيمة سياق إرجاعها بواسطة EnterContainer () الأسلوب.
عندما ExitContainer () عوائد، و TLVUpdater يتم وضع القارئ مباشرة قبل العنصر الأول الذي يتبع الحاويات في إدخال TLV . من هذه النقطة تطبيقات يمكن استدعاء التالي () لتقدم من خلال أي العناصر المتبقية.
مرة واحدة EnterContainer () وقد دعا، يمكن لتطبيقات الاتصال ExitContainer () على التحديث في أي وقت من الأوقات، بغض النظر عما إذا كانت جميع العناصر في حاوية الكامنة القراءة. أيضا، علما بأن الدعوة ExitContainer () قبل قراءة جميع العناصر في حاوية، وسوف يؤدي في حاوية تحديث الحصول على اقتطاع في إخراج TLV .
تفاصيل | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
المعلمات |
| ||||||||||
إرجاع القيم |
|
وضع اللمسات الأخيرة
WEAVE_ERROR Finalize( void )
يحصل
WEAVE_ERROR Get( bool & v )
يحصل
WEAVE_ERROR Get( int8_t & v )
يحصل
WEAVE_ERROR Get( int16_t & v )
يحصل
WEAVE_ERROR Get( int32_t & v )
يحصل
WEAVE_ERROR Get( int64_t & v )
يحصل
WEAVE_ERROR Get( uint8_t & v )
يحصل
WEAVE_ERROR Get( uint16_t & v )
يحصل
WEAVE_ERROR Get( uint32_t & v )
يحصل
WEAVE_ERROR Get( uint64_t & v )
يحصل
WEAVE_ERROR Get( float & v )
يحصل
WEAVE_ERROR Get( double & v )
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
GetContainerType
TLVType GetContainerType( void ) const
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
GetImplicitProfileId
uint32_t GetImplicitProfileId( void )
GetLength
uint32_t GetLength( void ) const
GetLengthRead
uint32_t GetLengthRead( void ) const
GetLengthWritten
uint32_t GetLengthWritten( void )
GetReader
void GetReader( TLVReader & containerReader )
GetRemainingFreeLength
uint32_t GetRemainingFreeLength( void )
GetRemainingLength
uint32_t GetRemainingLength( void ) const
GetString
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
GetTag
uint64_t GetTag( void ) const
GetType
TLVType GetType( void ) const
فيه
WEAVE_ERROR Init( uint8_t *buf, uint32_t dataLen, uint32_t maxLen )
تهيئة TLVUpdater الكائن لتحرير منطقة عازلة مدخل واحد.
على استدعاء هذا الأسلوب، TLV يتم نقل البيانات في المخزن المؤقت إلى نهاية المخزن المؤقت والخاصTLVReader تتم تهيئة الكائن على هذا المخزن المؤقت نقلهم. A الخاصTLVWriter تتم تهيئة الكائن أيضا على المساحة الحرة المتوفرة الآن في البداية. يمكن للتطبيقات استخدام TLVUpdater الكائن تحليل TLV البيانات وتعديل / حذف العناصر الموجودة أو إضافة عناصر جديدة إلى الترميز.
تفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
| ||||||
إرجاع القيم |
|
فيه
WEAVE_ERROR Init( TLVReader & aReader, uint32_t freeLen )
تهيئة TLVUpdater الكائن باستخدامTLVReader .
على استدعاء هذا الأسلوب، TLV أشارت البيانات في المخزن المؤقت لمن قبلTLVReader يتم نقل من وجهة القراءة الحالية إلى نهاية المخزن المؤقت. A خاص جديدTLVReader تتم تهيئة الكائن إلى قراءة من هذا الموقع الجديد، في حين أن القطاع الخاص الجديدTLVWriter تتم تهيئة الكائن إلى الكتابة إلى حررت مساحة المخزن المؤقت.
ملاحظة أنه إذا كانTLVReader يتم وضع بالفعل "على" عنصر، والمدعومة من خارج لأول مرة في بداية هذا العنصر. لاحظ أيضا أن هذا الدعم من يعمل بشكل جيد مع عناصر حاوية، أي إذا كانTLVReader كان يستخدم بالفعل للاتصال EnterContainer () ، ثم ليس هناك ما يعود حالا. ولكن إذا كانTLVReader كان وضعه على عنصر حاوية و EnterContainer () لم يسمى بعد، ثمTLVReader ويدعم حالا الكائن إلى بداية الرأس الحاوية.
إدخالTLVReader سيتم تدمير الكائن قبل أن تعود وتطبيق يجب ألا الاستفادة من نفسه على العودة.
تفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
| ||||||
إرجاع القيم |
|
يتحرك
WEAVE_ERROR Move( void )
نسخ العنصر الحالي من المدخلات TLV لإخراج TLV .
و نقل () نسخ طريقة العنصر الحالي الذي و TLVUpdater "يتم وضع القارئ الصورة على، إلى TLVUpdater " الكاتب الصورة. التطبيق يجب استدعاء التالي () وموقف TLVUpdater القارئ على عنصر قبل استدعاء هذا الأسلوب. تماما مثل TLVReader :: التالي () الأسلوب، إذا تم وضع القارئ على عنصر الحاويات في وقت المكالمة، سيتم نسخ جميع أعضاء الحاوية. إذا لم يتم وضع القارئ على أي عنصر ، فلن يتغير شيء عند استدعاء هذه الطريقة.
تفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
إرجاع القيم |
|
MoveUntilEnd
void MoveUntilEnd( void )
نقل كل شيء من TLVUpdater نقطة القراءة الحالية الصورة حتى نهاية المدخلات TLV العازلة لأكثر من الانتاج.
هذا الدعم طريقة تحريك كل شيء من TLVUpdater "نقطة القراءة الحالية الصورة حتى نهاية القارئ العازلة لأكثر من TLVUpdater " الكاتب الصورة.
التالي
WEAVE_ERROR Next( void )
تخطي العنصر الحالي ودفع TLVUpdater الكائن إلى العنصر التالي في إدخال TLV .
في التالي () طريقة يتخطى العنصر الحالي في مدخلات TLV والسلف TLVUpdater القارئ إلى العنصر التالي الذي يقيم في سياق احتواء نفسه. على وجه الخصوص، إذا تم وضع القارئ في معظم مستوى الخارجي لل TLV الترميز، داعيا التالي () سوف تقدم إلى القادم، أعلى معظم عنصر. إذا تم وضع القارئ ضمن TLV عنصر حاوية (هيكل، مجموعة أو المسار)، داعيا التالي () سوف تقدم إلى العنصر العضو التالي من الحاوية.
منذ التالي () يقيد القارئ الحركة إلى سياق الاحتواء الحالي، داعيا التالي () عندما يتم وضع القارئ في عنصر حاوية سوف تقدم على الحاوية، وتخطي عناصر الأعضاء فيها (وأعضاء أي حاويات المتداخلة) حتى يصل أولا عنصر بعد الحاوية.
عندما لا يكون هناك عناصر أخرى في سياق احتواء معين في التالي () طريقة سيعود WEAVE_END_OF_TLV خطأ وموقف القارئ لن تتغير.
تفاصيل | |||||
---|---|---|---|---|---|
إرجاع القيم |
|
وضع
WEAVE_ERROR Put( uint64_t tag, int8_t v )
وضع
WEAVE_ERROR Put( uint64_t tag, int16_t v )
وضع
WEAVE_ERROR Put( uint64_t tag, int32_t v )
وضع
WEAVE_ERROR Put( uint64_t tag, int64_t v )
وضع
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
وضع
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
وضع
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
وضع
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
وضع
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
وضع
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
وضع
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
وضع
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
وضع
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
وضع
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
وضع
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
وضع
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
وضع
WEAVE_ERROR Put( uint64_t tag, float v )
وضع
WEAVE_ERROR Put( uint64_t tag, double v )
PutBoolean
العنصر النائب l10n = 56PutBytes
l10n- العنصر النائب = 57بوتنول
l10n-placeholder = 58PutString
l10n-placeholder = 59PutString
العنصر النائب l10n = 60SetImplicitProfileId
العنصر النائب l10n = 61تعيين معرف الملف الضمني للكائن TLVUpdater.
هذا الأسلوب يحدد هوية الشخصية الضمني للكائن TLVUpdater. عندما يطلب من التحديث لترميز عنصر جديد، إذا كان معرف الشخصية للعلامة المرتبطة العنصر الجديد يطابق قيمة profileId، فإن التحديث ترميز العلامة في شكل ضمني، وبالتالي إهمال ID الشخصية في هذه العملية.
تفاصيل | |||
---|---|---|---|
المعلمات |
|
StartContainer
l10n-placeholder = 62VerifyEndOfContainer
العنصر النائب l10n = 63Except 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 2018-06-05 UTC.