Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

nl :: نسج:: TLV :: TLVWriter

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

يوفر أداة ترميز فعالة للذاكرة لكتابة البيانات بتنسيق Weave TLV .

ملخص

ينفذTLVWriter برنامج تشفير للأمام فقط بنمط التدفق لبيانات Weave TLV . تكتب التطبيقات البيانات إلى ترميز عن طريق استدعاء إحدى طرق الكاتب Put () ، وتمرير معلومات العلامة والقيمة المرتبطة عند الضرورة. وبالمثل ، يمكن للتطبيقات ترميز أنواع حاوية TLV (الهياكل أو المصفوفات أو المسارات) عن طريق استدعاء أساليب OpenContainer () أو EnterContainer () للكاتب.

يمكن لكائنTLVWriter كتابة البيانات مباشرة إلى مخزن مؤقت للإخراج الثابت ، أو إلى سلسلة من كائن PacketBuffer واحد أو أكثر. بالإضافة إلى ذلك ، يمكن للتطبيقات توفير وظائف GetNewBuffer و FinalizeBuffer الخاصة بها لتوجيه الإخراج إلى وجهة عشوائية ، على سبيل المثال مأخذ توصيل أو قائمة انتظار حدث.

ميراث

الفئات الفرعية المعروفة المباشرة: nl :: Weave :: TLV :: CircularTLVWriter

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

@72 {
kEndOfContainerMarkerSize = 1
}
تعداد

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

FinalizeBufferFunct )(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR (*
دالة مستخدمةلإنهاء الإخراج من كائنTLVWriter .
GetNewBufferFunct )(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR (*
وظيفة توفر مساحة جديدةلمخزن الإخراج المؤقت لـTLVWriter .

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

AppData
void *
حقل مؤشر يمكن استخدامه للبيانات الخاصة بالتطبيق.
FinalizeBuffer
مؤشر إلى وظيفة سيتم استدعاؤها عند الانتهاء منTLVWriter .
GetNewBuffer
مؤشر لوظيفة ستوفر مساحة جديدةلمخزن الإخراج المؤقت لـTLVWriter .
ImplicitProfileId
uint32_t
معرّف الملف الشخصي للعلامات التي يجب تشفيرها بشكل ضمني.

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

mBufHandle
uintptr_t
mBufStart
uint8_t *
mContainerType
mLenWritten
uint32_t
mMaxLen
uint32_t
mRemainingLen
uint32_t
mWritePoint
uint8_t *

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

CloseContainer (TLVWriter & containerWriter)
يكمل كتابة حاوية TLV بعد استدعاء OpenContainer () .
ContinuePutBytes (const uint8_t *buf, uint32_t len)
يشفر قيمة سلسلة بايت TLV .
CopyContainer (TLVReader & container)
ينسخ عنصر حاوية TLV من كائنTLVReader .
CopyContainer (uint64_t tag,TLVReader & container)
يشفر عنصر حاوية TLV من مجموعة مشفرة مسبقًا من عناصر الأعضاء.
CopyContainer (uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
يشفر عنصر حاوية TLV يحتوي على عناصر أعضاء من حاوية مشفرة مسبقًا.
CopyElement (TLVReader & reader)
ينسخ عنصر TLV من كائن قارئ إلى الكاتب.
CopyElement (uint64_t tag,TLVReader & reader)
EndContainer ( TLVType outerContainerType)
يكمل تشفير عنصر حاوية TLV .
Finalize (void)
الانتهاء من كتابة ترميز TLV .
GetContainerType (void) const
تُرجع نوع الحاوية التييكتب TLVWriter بداخلها حاليًا.
GetLengthWritten (void)
uint32_t
إرجاع العدد الإجمالي للبايتات المكتوبة منذ تهيئة الكاتب.
Init (uint8_t *buf, uint32_t maxLen)
void
يقومبتهيئة كائنTLVWriter للكتابة في مخزن إخراج واحد.
Init ( PacketBuffer *buf, uint32_t maxLen)
void
يقومبتهيئة كائنTLVWriter للكتابة في PacketBuffer واحد.
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
يقومبتهيئة كائنTLVWriter للكتابة في PacketBuffers واحد أو أكثر.
InitMalloced (uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
يقومبتهيئة كائنTLVWriter للكتابة في مخزن مؤقت ديناميكي.
OpenContainer (uint64_t tag, TLVType containerType,TLVWriter & containerWriter)
تهيئة كائنTLVWriter جديد لكتابة أعضاء عنصر حاوية TLV .
Put (uint64_t tag, int8_t v)
يشفر قيمة عدد صحيح يحمل توقيع TLV .
Put (uint64_t tag, int8_t v, bool preserveSize)
يشفر قيمة عدد صحيح يحمل توقيع TLV .
Put (uint64_t tag, int16_t v)
Put (uint64_t tag, int16_t v, bool preserveSize)
Put (uint64_t tag, int32_t v)
Put (uint64_t tag, int32_t v, bool preserveSize)
Put (uint64_t tag, int64_t v)
Put (uint64_t tag, int64_t v, bool preserveSize)
Put (uint64_t tag, uint8_t v)
ترميز قيمة عدد صحيح بدون إشارة TLV .
Put (uint64_t tag, uint8_t v, bool preserveSize)
ترميز قيمة عدد صحيح بدون إشارة TLV .
Put (uint64_t tag, uint16_t v)
Put (uint64_t tag, uint16_t v, bool preserveSize)
Put (uint64_t tag, uint32_t v)
Put (uint64_t tag, uint32_t v, bool preserveSize)
Put (uint64_t tag, uint64_t v)
Put (uint64_t tag, uint64_t v, bool preserveSize)
Put (uint64_t tag, float v)
Put (uint64_t tag, double v)
يشفر قيمة النقطة العائمة TLV .
PutBoolean (uint64_t tag, bool v)
يشفر قيمة منطقية TLV .
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len)
يشفر قيمة سلسلة بايت TLV .
PutNull (uint64_t tag)
يشفر قيمة فارغة TLV .
PutPreEncodedContainer (uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
يشفر عنصر حاوية TLV من مجموعة مشفرة مسبقًا من عناصر الأعضاء.
PutString (uint64_t tag, const char *buf)
ترميز قيمة سلسلة TLV UTF8.
PutString (uint64_t tag, const char *buf, uint32_t len)
ترميز قيمة سلسلة TLV UTF8.
PutStringF (uint64_t tag, const char *fmt, ...)
قم بترميز إخراج السلسلة المنسق وفقًا للتنسيق في عنصر TLV .
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType)
يبدأ في ترميز عنصر حاوية TLV جديد.
StartPutBytes (uint64_t tag, uint32_t totalLen)
يشفر سلسلة بايت TLV في أجزاء متعددة.
VPutStringF (uint64_t tag, const char *fmt, va_list ap)
قم بترميز إخراج السلسلة المنسق وفقًا للتنسيق في عنصر TLV .

وظائف ثابتة عامة

FinalizePacketBuffer (TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
تنفيذ دالةTLVWriter FinalizeBuffer للكتابة إلى سلسلة من PacketBuffers.
GetNewBuffer_Malloced (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
تطبيقلوظيفة TLVWriter GetNewBuffer للكتابة إلى مخزن مؤقت ديناميكي.
GetNewPacketBuffer (TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
تنفيذ دالةTLVWriter GetNewBuffer للكتابة إلى سلسلة من PacketBuffers.

وظائف محمية

IsCloseContainerReserved (void) const
bool
حدد ما إذا كان يجب أن تحتفظ الحاوية بمساحة لرمز CloseContainer عند نقطة بدء / فتح الحاوية.
IsContainerOpen (void) const
bool
SetCloseContainerReserved (bool aCloseContainerReserved)
void
حدد ما إذا كان يجب على الحاوية حجز مساحة لرمز CloseContainer عند نقطة بدء / فتح الحاوية.
SetContainerOpen (bool aContainerOpen)
void
WriteData (const uint8_t *p, uint32_t len)
WriteElementHead (TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
WriteElementWithData ( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)

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

@ 72

 @72

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

FinalizeBufferFunct

WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)

دالة مستخدمةلإنهاء الإخراج من كائنTLVWriter .

يتم استدعاء الوظائف من هذا النوع عندما يتم استدعاءأسلوب Finalize ()TLVWriter . من المتوقع أن تقوم الوظيفة بأي تنظيف ضروري أو إنهاء يتعلق باستهلاك ناتج كائن الكاتب. تتضمن الأمثلة على ذلك أشياء مثل تسجيل الطول النهائي للتشفير أو إغلاق واصف الملف.

تفاصيل
المعلمات
[in] writer
مرجع إلى كائنTLVWriter الذي يتم الانتهاء منه.
[in,out] bufHandle
قيمة سياق uintptr_t تم تعيينها بواسطة الاستدعاءات السابقة للدالة GetNewBuffer .
[in,out] bufStart
مؤشر إلى بداية المخزن المؤقت للإخراج الحالي (والأخير).
[in,out] bufLen
عدد البايتات الموجودة في المخزن المؤقت المشار إليها بواسطة bufStart .
إرجاع القيم
WEAVE_NO_ERROR
إذا كان الإنهاء ناجحًا.
other
رموز خطأ أخرى خاصة بالنسيج أو النظام الأساسي تشير إلى حدوث خطأ أثناء الإنهاء.

GetNewBufferFunct

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

وظيفة توفر مساحة جديدةلمخزن الإخراج المؤقت لـTLVWriter .

تُستخدم وظائف من هذا النوع لإعداد مساحةتخزين مؤقت جديدة لـTLVWriter للكتابة إليها. عند الاستدعاء ، من المتوقع أن تعيد الوظيفة مؤشرًا إلى موقع الذاكرة حيث يجب كتابة البيانات الجديدة ، إلى جانب الحد الأقصى للطول المرتبط بها. يمكن للوظيفة توفير مساحة الكتابة إما عن طريق تخصيص مخزن مؤقت جديد للاحتفاظ بالبيانات أو عن طريق مسح البيانات المكتوبة مسبقًا من المخزن المؤقت الموجود.

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

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

معلومات التطبيق

void * AppData

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

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

مؤشر إلى وظيفة سيتم استدعاؤها عند الانتهاء منTLVWriter .

سيقوم كائنTLVWriter باستدعاء الدالة FinalizeBuffer كلما تم استدعاء أسلوب Finalize () الخاص به . يمكن للتطبيقات ضبط مؤشر الوظيفة في أي وقت قبل استدعاء Finalize () . بشكل افتراضي ، يتم تعيين المؤشر على NULL ، مما يتسبب في أن تتخلى طريقة Finalize () عن استدعاء الوظيفة.

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

GetNewBuffer

GetNewBufferFunct GetNewBuffer

مؤشر لوظيفة ستوفر مساحة جديدةلمخزن الإخراج المؤقت لـTLVWriter .

سيقوم كائنTLVWriter باستدعاء دالة GetNewBuffer كلما تم إجراء محاولة لكتابة البيانات التي تتجاوز حجم المخزن المؤقت للإخراج الحالي. إذا تم التعيين على NULL (القيمة الافتراضية) ، فسيرجع الكاتب WEAVE_ERROR_NO_MEMORY إذا تجاوزت بيانات الإخراج المخزن المؤقت الحالي.

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

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

ImplicitProfileId

uint32_t ImplicitProfileId

معرّف الملف الشخصي للعلامات التي يجب تشفيرها بشكل ضمني.

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

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

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

mBufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mContainerType

TLVType mContainerType

mLenWritten

uint32_t mLenWritten

إم ماكس لين

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

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

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

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

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

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

تفاصيل
المعلمات
[in] containerWriter
مرجع إلى كائنTLVWriter الذي تم توفيره لأسلوب OpenContainer () .
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_INCORRECT_STATE
إذا لم يكن كاتب الحاوية المزود في الحالة الصحيحة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب حاوية آخر على كاتب الحاوية المزود ولم يتم إغلاقه بعد.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كان إكمال تشفير الحاوية سيتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

متابعة

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

يشفر قيمة سلسلة بايت TLV .

يجب استخدام هذا مع StartPutBytes.

تفاصيل
المعلمات
[in] buf
مؤشر إلى مخزن مؤقت يحتوي على سلسلة البايت المراد تشفيرها.
[in] len
عدد البايت المطلوب تشفيره.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة القيمة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

ينسخ عنصر حاوية TLV من كائنTLVReader .

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

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

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

يشفر عنصر حاوية TLV من مجموعة مشفرة مسبقًا من عناصر الأعضاء.

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

عندما تعود الطريقة ، يمكن استخدام كائن الكاتب لكتابة عناصر TLV إضافية بعد عنصر الحاوية.

تفاصيل
المعلمات
[in] tag
علامة TLV المراد تشفيرها مع الحاوية ، أو AnonymousTag إذا كان ينبغي ترميز الحاوية بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] container
مرجع إلى كائنTLVReader يحدد حاوية TLV مشفرة مسبقًا والتي يجب نسخ نوعها وأعضائها.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_INCORRECT_STATE
إذا لم يكن القارئ المزود موضوعًا على عنصر حاوية.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهى ترميز TLV الأساسي المرتبط بالقارئ المزود قبل الأوان.
WEAVE_ERROR_INVALID_TLV_ELEMENT
إذا واجه القارئ المزود نوع عنصر TLV غير صالح أو غير مدعوم.
WEAVE_ERROR_INVALID_TLV_TAG
إذا واجه القارئ المزود علامة TLV في سياق غير صالح ، أو إذا كانت العلامة المقدمة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة الحاوية الجديدة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة ، أو بواسطة دالة GetNextBuffer () المقترنة بكائن القارئ.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  const uint8_t *encodedContainer,
  uint16_t encodedContainerLen
)

يشفر عنصر حاوية TLV يحتوي على عناصر أعضاء من حاوية مشفرة مسبقًا.

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

عندما تعود الطريقة ، يمكن استخدام كائن الكاتب لكتابة عناصر TLV إضافية بعد عنصر الحاوية.

تفاصيل
المعلمات
[in] tag
علامة TLV المراد تشفيرها مع الحاوية ، أو AnonymousTag إذا كان يجب تشفير الحاوية بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] encodedContainer
مخزن مؤقت يحتوي على حاوية TLV مشفرة مسبقًا يجب نسخ نوعها وأعضائها.
[in] encodedContainerLen
الطول بالبايت للحاوية المشفرة مسبقًا.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_TLV_UNDERRUN
إذا انتهت الحاوية المشفرة قبل الأوان.
WEAVE_ERROR_INVALID_TLV_ELEMENT
إذا احتوت الحاوية المشفرة على نوع عنصر TLV غير صالح أو غير مدعوم.
WEAVE_ERROR_INVALID_TLV_TAG
إذا احتوت الحاوية المشفرة على علامة TLV في سياق غير صالح ، أو إذا كانت العلامة المقدمة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة الحاوية الجديدة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايتات المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة ، أو بواسطة دالة GetNextBuffer () المقترنة بكائن القارئ.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

ينسخ عنصر TLV من كائن قارئ إلى الكاتب.

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

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

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

يكمل تشفير عنصر حاوية TLV .

يكمل أسلوب EndContainer () ترميز عنصر حاوية TLV ويستعيد حالة كائن TLVWrite بعد استدعاء سابق لـ StartContainer () . لكل مكالمة إلى تطبيقات StartContainer () ، يجب إجراء مكالمة مقابلة مع EndContainer () ، وتمرير قيمة TLVType التي تم إرجاعها بواسطة استدعاء StartContainer () . عند إرجاع EndContainer () ، يمكن استخدام كائن الكاتب لكتابة عناصر TLV إضافية تتبع عنصر الحاوية.

تفاصيل
المعلمات
[in] outerContainerType
قيمة TLVType التي تم إرجاعها بواسطة أسلوب StartContainer () .
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_INCORRECT_STATE
إذا لم يتم إجراء مكالمة StartContainer () مقابلة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

وضع اللمسات الأخيرة

WEAVE_ERROR Finalize(
  void
)

الانتهاء من كتابة ترميز TLV .

تكمل طريقة Finalize () عملية كتابة ترميز TLV لمخزن الإخراج الأساسي. يجب استدعاء الأسلوب من قبل التطبيق قبل أن يستخدم محتويات المخزن المؤقت. يمكن استدعاء Finalize () فقط في حالة عدم وجود كتاب حاويات مفتوحين للكاتب الحالي. (انظر OpenContainer() ).

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

GetContainerType

TLVType GetContainerType(
  void
) const 

تُرجع نوع الحاوية التييكتب TLVWriter بداخلها حاليًا.

إرجاع الأسلوب GetContainerType () نوع حاوية TLV التييكتب TLVWriter حاليًا. إذا لم يكنTLVWriter يكتب عناصر داخل حاوية (أي إذا كان الكتابة عند المستوى الخارجي الأقصى للتشفير) ، فإن الطريقة تُرجع kTLVType_NotSpecified.

تفاصيل
عائدات
TLVType للحاوية الحالية ، أو kTLVType_NotSpecified إذا كانTLVWriter لا يكتب العناصر داخل الحاوية.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

إرجاع العدد الإجمالي للبايتات المكتوبة منذ تهيئة الكاتب.

تفاصيل
عائدات
إجمالي عدد البايتات المكتوبة منذ أن تمت تهيئة الكاتب.

فيه

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

يقومبتهيئة كائنTLVWriter للكتابة في مخزن إخراج واحد.

تفاصيل
المعلمات
[in] buf
مؤشر إلى المخزن المؤقت الذي يجب كتابة TLV فيه.
[in] maxLen
أقصى عدد من البايتات التي يجب كتابتها إلى المخزن المؤقت للإخراج.

فيه

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

يقومبتهيئة كائنTLVWriter للكتابة في PacketBuffer واحد.

تبدأ الكتابة فورًا بعد آخر بايت من البيانات الموجودة في المخزن المؤقت المزود.

تفاصيل
المعلمات
[in] buf
مؤشر إلى PacketBuffer الذي يجب كتابة TLV فيه.
[in] maxLen
أقصى عدد من البايتات التي يجب كتابتها إلى المخزن المؤقت للإخراج.

فيه

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

يقومبتهيئة كائنTLVWriter للكتابة في PacketBuffers واحد أو أكثر.

تبدأ الكتابة مباشرة بعد آخر بايت من البيانات الموجودة في المخزن المؤقت المحدد. إذا كانت allowDiscontiguousBuffers صحيحة ، فسيتم تخصيص PacketBuffers الإضافية وربطها بالمخزن المؤقت المقدم حسب الحاجة لاستيعاب كمية البيانات المكتوبة. إذا كان المخزن المؤقت المحدد للإخراج هو بالفعل رأس سلسلة من المخازن المؤقتة ، فسيتم كتابة الإخراج إلى المخازن المؤقتة اللاحقة في السلسلة قبل تخصيص أي مخازن مؤقتة جديدة.

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

InitMalloced

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

يقومبتهيئة كائنTLVWriter للكتابة في مخزن مؤقت ديناميكي.

تفاصيل
المعلمات
[in] buf
مرجع لمؤشر سيتلقى المخزن المؤقت المخصص.
[in] maxLen
أقصى عدد من البايتات التي يجب كتابتها إلى المخزن المؤقت للإخراج.
[in] initialBufSize
العدد الأولي للبايتات التي يجب تخصيصها للمخزن المؤقت.

OpenContainer

WEAVE_ERROR OpenContainer(
  uint64_t tag,
  TLVType containerType,
  TLVWriter & containerWriter
)

تهيئة كائنTLVWriter جديد لكتابة أعضاء عنصر حاوية TLV .

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

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

يرث كاتب الحاوية خصائص تكوين متنوعة من الكاتب الأصل. وهذه هي:

  • معرّف ملف التعريف الضمني (ImplicitProfileId)
  • مؤشر بيانات التطبيق (AppData)
  • مؤشرا الدالتان GetNewBuffer و FinalizeBuffer

تفاصيل
المعلمات
[in] tag
علامة TLV المراد تشفيرها مع الحاوية ، أو AnonymousTag إذا كان يجب تشفير الحاوية بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] containerType
نوع الحاوية المراد تشفيرها. يجب أن يكون واحدا من kTLVType_Structure ، kTLVType_Array أو kTLVType_Path .
[out] containerWriter
مرجع إلى كائنTLVWriter الذي سيتم تهيئته لكتابة أعضاء عنصر الحاوية الجديد. يتم الكتابة فوق أي بيانات مرتبطة بالكائن المقدم.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_WRONG_TLV_TYPE
إذا كانت القيمة المحددة لـ containerType غير صحيحة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة القيمة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

يشفر قيمة عدد صحيح يحمل توقيع TLV .

هذه وظيفة عضو محملة بشكل زائد ، مقدمة للراحة. إنها تختلف عن الوظيفة المذكورة أعلاه فقط في الحجة (الحجج) التي تقبلها.

تفاصيل
المعلمات
[in] tag
علامة TLV المراد تشفيرها بالقيمة ، أو AnonymousTag إذا كان يجب تشفير القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] v
القيمة المراد ترميزها.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة القيمة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

يشفر قيمة عدد صحيح يحمل توقيع TLV .

هذه وظيفة عضو محملة بشكل زائد ، مقدمة للراحة. وهي تختلف عن الوظيفة المذكورة أعلاه فقط في الحجة (الحجج) التي تقبلها.

تفاصيل
المعلمات
[in] tag
علامة TLV المراد تشفيرها بالقيمة ، أو AnonymousTag إذا كان يجب تشفير القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] v
القيمة المراد ترميزها.
[in] preserveSize
صواب إذا كان يجب ترميز القيمة بنفس عدد البايت كما في نوع الإدخال. خطأ إذا كان يجب تشفير القيمة بأقل عدد من البايتات اللازمة لتمثيل القيمة. ملاحظة: يتم تشجيع الطلبات بشدة على ضبط هذا المعامل على خطأ.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة القيمة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v,
  bool preserveSize
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v,
  bool preserveSize
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v,
  bool preserveSize
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

يشفر قيمة عدد صحيح بدون إشارة TLV .

هذه وظيفة عضو محملة بشكل زائد ، مقدمة للراحة. وهي تختلف عن الوظيفة المذكورة أعلاه فقط في الحجة (الحجج) التي تقبلها.

تفاصيل
المعلمات
[in] tag
علامة TLV المراد تشفيرها بالقيمة ، أو AnonymousTag إذا كان يجب تشفير القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] v
القيمة المراد ترميزها.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة القيمة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

ترميز قيمة عدد صحيح بدون إشارة TLV .

هذه وظيفة عضو محملة بشكل زائد ، مقدمة للراحة. وهي تختلف عن الوظيفة المذكورة أعلاه فقط في الحجة (الحجج) التي تقبلها.

تفاصيل
المعلمات
[in] tag
علامة TLV المراد تشفيرها بالقيمة ، أو AnonymousTag إذا كان يجب تشفير القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] v
القيمة المراد ترميزها.
[in] preserveSize
صواب إذا كان يجب ترميز القيمة بنفس عدد البايت كما في نوع الإدخال. خطأ إذا كان يجب تشفير القيمة بأقل عدد من البايتات اللازمة لتمثيل القيمة. ملاحظة: يتم تشجيع الطلبات بشدة على ضبط هذا المعامل على خطأ.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة القيمة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايت المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v,
  bool preserveSize
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v,
  bool preserveSize
)

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

وضع

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
)

يشفر قيمة النقطة العائمة TLV .

هذه وظيفة عضو محملة بشكل زائد ، مقدمة للراحة. وهي تختلف عن الوظيفة المذكورة أعلاه فقط في الحجة (الحجج) التي تقبلها.

تفاصيل
المعلمات
[in] tag
علامة TLV المراد ترميزها بالقيمة ، أو AnonymousTag إذا كان ينبغي ترميز القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] v
القيمة المراد ترميزها.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
إذا تم فتح كاتب الحاوية على الكاتب الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم فيه كتابة القيمة.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت كتابة القيمة ستتجاوز الحد الأقصى لعدد البايتات المحدد عند تهيئة الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص مخزن مؤقت للإخراج بسبب نقص الذاكرة.
other
أخطاء Weave أو الخاصة بالنظام الأساسي الأخرى التي يتم إرجاعها بواسطة وظائف GetNewBuffer () أو FinalizeBuffer () المكونة .

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

ترميز قيمة منطقية TLV .

تفاصيل
المعلمات
[in] tag
علامة TLV المراد تشفيرها بالقيمة ، أو AnonymousTag إذا كان يجب تشفير القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامة ProfileTag () أو ContextTag () أو CommonTag () .
[in] v
القيمة المراد ترميزها.
إرجاع القيم
WEAVE_NO_ERROR
إذا نجحت الطريقة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutBytes

WEAVE_ERROR PutBytes(
  uint64_t tag,
  const uint8_t *buf,
  uint32_t len
)

Encodes a TLV byte string value.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to a buffer containing the bytes string to be encoded.
[in] len
The number of bytes to be encoded.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

Encodes a TLV null value.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutPreEncodedContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

Encodes a TLV container element from a pre-encoded set of member elements.

The PutPreEncodedContainer() method encodes a new TLV container element (a structure, array or path) containing a set of member elements taken from a pre-encoded buffer. The input buffer is expected to contain zero or more full-encoded TLV elements, with tags that conform to the rules associated with the specified container type (eg structure members must have tags, while array members must not).

The method encodes the entirety of the container element in one call. When PutPreEncodedContainer() returns, the writer object can be used to write additional TLV elements following the container element.

Details
Parameters
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[in] data
A pointer to a buffer containing zero of more encoded TLV elements that will become the members of the new container.
[in] dataLen
The number of bytes in the data buffer.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

Encodes a TLV UTF8 string value.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the null-terminated UTF-8 string to be encoded.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

Encodes a TLV UTF8 string value.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] buf
A pointer to the UTF-8 string to be encoded.
[in] len
The length (in bytes) of the string to be encoded.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

PutStringF

WEAVE_ERROR PutStringF(
  uint64_t tag,
  const char *fmt,
  ...
)

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ...
A list of arguments to be formatted in the output value according to fmt.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

StartContainer

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

Begins encoding a new TLV container element.

The StartContainer() method is used to write TLV container elements (structure, arrays or paths) to an encoding. The method takes the type and tag (if any) of the new container, and a reference to a TLVType value which will be used to save the current context of the writer while it is being used to write the container.

Once the StartContainer() method returns, the application should use the currentTLVWriter object to write the elements of the container. When finish, the application must call the EndContainer() method to finish the encoding of the container.

Details
Parameters
[in] tag
The TLV tag to be encoded with the container, or AnonymousTag if the container should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] containerType
The type of container to encode. Must be one of kTLVType_Structure , kTLVType_Array or kTLVType_Path .
[out] outerContainerType
A reference to a TLVType value that will receive the context of the writer.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_WRONG_TLV_TYPE
If the value specified for containerType is incorrect.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

Encodes a TLV byte string in multiple chunks.

This should be used with ContinuePutBytes.

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] totalLen
The total number of bytes to be encoded.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
WEAVE_ERROR_TLV_CONTAINER_OPEN
If a container writer has been opened on the current writer and not yet closed.
WEAVE_ERROR_INVALID_TLV_TAG
If the specified tag value is invalid or inappropriate in the context in which the value is being written.
WEAVE_ERROR_BUFFER_TOO_SMALL
If writing the value would exceed the limit on the maximum number of bytes specified when the writer was initialized.
WEAVE_ERROR_NO_MEMORY
If an attempt to allocate an output buffer failed due to lack of memory.
other
Other Weave or platform-specific errors returned by the configured GetNewBuffer() or FinalizeBuffer() functions.

VPutStringF

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

Encode the string output formatted according to the format in the TLV element.

PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:

The platform supplies a callback-based vcbprintf that provides the ability to call a custom callback in place of putchar.

The platform supplies a variant of vsnprintf called vsnprintf_ex , that behaves exactly like vsnprintf except it has provisions for omitting the first n characters of the output.

Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex variety of functions will consume less stack.

If neither of the above is available, but platform provides malloc the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage

Details
Parameters
[in] tag
The TLV tag to be encoded with the value, or AnonymousTag if the value should be encoded without a tag. Tag values should be constructed with one of the tag definition functions ProfileTag() , ContextTag() or CommonTag() .
[in] fmt
The format string used to format the argument list. Follows the same syntax and rules as the format string for printf family of functions.
[in] ap
A list of arguments to be formatted in the output value according to fmt.
Return Values
WEAVE_NO_ERROR
If the method succeeded.
other
If underlying calls toTLVWriter methods WriteElementHead or GetNewBuffer failed, their error is immediately forwarded up the call stack.

Public static functions

FinalizePacketBuffer

WEAVE_ERROR FinalizePacketBuffer(
  TLVWriter & writer,
  uintptr_t bufHandle,
  uint8_t *bufStart,
  uint32_t dataLen
)

An implementation of aTLVWriter FinalizeBuffer function for writing to a chain of PacketBuffers.

The FinalizePacketBuffer() function performs the necessary finalization required when using aTLVWriter to write to a chain of PacketBuffers. The function is designed to be used in conjunction with the GetNewPacketBuffer() function.

See the FinalizeBufferFunct type definition for additional information on the API of the FinalizePacketBuffer() function.

GetNewBuffer_Malloced

WEAVE_ERROR GetNewBuffer_Malloced(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

An implementation of aTLVWriter GetNewBuffer function for writing to a dynamic buffer.

The GetNewBuffer_Malloced() function supplies new output space to aTLVWriter by doubling the size of the underlying dynamic buffer as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.

See the GetNewBufferFunct type definition for additional information on the API of the GetNewBuffer_Malloced() function.

GetNewPacketBuffer

WEAVE_ERROR GetNewPacketBuffer(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

An implementation of aTLVWriter GetNewBuffer function for writing to a chain of PacketBuffers.

The GetNewPacketBuffer() function supplies new output space to aTLVWriter by allocating a chain of one or more PacketBuffers as needed to store the encoding. The function is designed to be assigned to theTLVWriter GetNewBuffer function pointer.

Note that when using the GetNewPacketBuffer with aTLVWriter , the corresponding FinalizePacketBuffer() function (or an equivalent) should also be used to finalize the buffer chain.

See the GetNewBufferFunct type definition for additional information on the API of the GetNewPacketBuffer() function.

Protected functions

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Determine whether the container should reserve space for the CloseContainer symbol at the point of starting / opening the container.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Set whether the container should reserve the space for the CloseContainer symbol at the point of starting / opening the container.

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

WriteData

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

WriteElementHead

WEAVE_ERROR WriteElementHead(
  TLVElementType elemType,
  uint64_t tag,
  uint64_t lenOrVal
)

WriteElementWithData

WEAVE_ERROR WriteElementWithData(
  TLVType type,
  uint64_t tag,
  const uint8_t *data,
  uint32_t dataLen
)