nl::Weave::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 للكتابة في واحد أو أكثر من حزم البيانات.
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)
ترميز قيمة سلسلة UTF8 لـ TLV.
PutString(uint64_t tag, const char *buf, uint32_t len)
ترميز قيمة سلسلة UTF8 لـ TLV.
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
رموز خطأ أخرى لـ Weave أو خاصة بالنظام الأساسي تشير إلى حدوث خطأ أثناء الانتهاء.

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 على عدد بايت من المساحة unused في المخزن المؤقت الحالي. عند الخروج، من المتوقع أن يحتوي bufLen على أقصى عدد من وحدات البايت التي يمكن كتابتها في المخزن المؤقت الجديد للمخرجات.
قيم الإرجاع
WEAVE_NO_ERROR
ما إذا كانت الدالة قادرة على توفير مساحة مخزنة أكبر للكاتب.
other
رموز خطأ أخرى لـ Weave أو خاصة بالنظام الأساسي تشير إلى حدوث خطأ ما يمنع الدالة من توفير مساحة مخزن مؤقت إضافي.

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

AppData

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

mMaxLen

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() التي تم ضبطها.

ContinuePutBytes

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. تكتب هذه الطريقة عنصر الحاوية الجديد بالكامل في استدعاء واحد، مع نسخ نوع الحاوية وعلامتها وعناصرها من ترميز المصدر. وعند عرض الطريقة، يمكن استخدام كائن writer لكتابة عناصر 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. ستكون الحاوية التي تم ترميزها حديثًا من النوع نفسه والأعضاء كحاوية الإدخال. يتم تحديد علامة الحاوية الجديدة كمَعلمة إدخال.

وعند عرض الطريقة، يمكن استخدام كائن writer لكتابة عناصر 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، وتتم كتابة حاوية جديدة لها نفس النوع والأعضاء كحاوية الإدخال. يتم تحديد علامة الحاوية الجديدة كمَعلمة إدخال.

وعند عرض الطريقة، يمكن استخدام كائن writer لكتابة عناصر 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
)

يعرض إجمالي عدد وحدات البايت التي تمت كتابتها منذ بدء تشغيل أداة الكتابة.

التفاصيل
المرتجعات
إجمالي عدد وحدات البايت التي تمت كتابتها منذ بدء تشغيل أداة الكتابة

Init

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

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

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

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

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

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

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

Init

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

يؤدي هذا الإعداد إلى إعداد كائن TLVWriter للكتابة في واحد أو أكثر من حزم البيانات.

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

التفاصيل
المعلمات
[in] buf
مؤشر إلى PacketBuffer الذي يجب كتابة بيانات TLV فيه.
[in] maxLen
الحد الأقصى لعدد وحدات البايت التي يجب كتابتها في المخازن المؤقتة للمخرجات
[in] allowDiscontiguousBuffers
إذا كانت القيمة true، اكتب البيانات إلى سلسلة من PacketBuffers، وخصّص مخازن مؤقتة جديدة حسب الحاجة لتخزين البيانات المكتوبة. في حال اختيار القيمة "false"، ستتعذّر الكتابة باستخدام 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
إذا كانت القيمة المحدّدة لـContainType غير صحيحة.
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
"صحيح" إذا كان يجب ترميز القيمة بعدد وحدات البايت نفسه كما في نوع الإدخال. يتم ضبط القيمة على "خطأ" إذا كان يجب ترميز القيمة بالحدّ الأدنى لعدد وحدات البايت اللازمة لتمثيل القيمة. ملاحظة: ننصح التطبيقات بشدة بضبط هذه المَعلمة على false.
قيم الإرجاع
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
"صحيح" إذا كان يجب ترميز القيمة بعدد وحدات البايت نفسه كما في نوع الإدخال. يتم ضبط القيمة على "خطأ" إذا كان يجب ترميز القيمة بالحدّ الأدنى لعدد وحدات البايت اللازمة لتمثيل القيمة. ملاحظة: ننصح التطبيقات بشدة بضبط هذه المَعلمة على false.
قيم الإرجاع
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
إذا تم فتح كاتب الحاوية عن المؤلف الحالي ولم يتم إغلاقه بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحدّدة غير صالحة أو غير ملائمة في السياق الذي تتم كتابة القيمة فيه.
WEAVE_ERROR_BUFFER_TOO_SMALL
في حال كتابة القيمة، ستتجاوز الحد الأقصى لعدد وحدات البايت المحددة عند إعداد الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا تعذّرت محاولة تخصيص مخزن مؤقت للمخرجات بسبب نقص الذاكرة.
other
أخطاء أخرى في Weave أو أخطاء خاصة بالنظام الأساسي تعرضها الدالتان GetNewBuffer() أو FinalizeBuffer() التي تم ضبطها.

PutBytes

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

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

التفاصيل
المعلمات
[in] tag
العلامة TLV المطلوب ترميزها بالقيمة، أو AnonymousTag إذا كان يجب ترميز القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامات ProfileTag() أو ContextTag() أو CommonTag().
[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() التي تم ضبطها.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

ترميز قيمة فارغة TLV.

التفاصيل
المعلمات
[in] tag
العلامة TLV المطلوب ترميزها بالقيمة، أو AnonymousTag إذا كان يجب ترميز القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامات ProfileTag() أو ContextTag() أو CommonTag().
قيم الإرجاع
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() التي تم ضبطها.

PutPreEncodedContainer

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

ترميز عنصر حاوية TLV من مجموعة عناصر تابعة مرمّزة مسبقًا.

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

تعمل الطريقة على ترميز عنصر الحاوية بالكامل في استدعاء واحد. عند عرض الدالة PutPreEncodedContainer()، يمكن استخدام كائن writer لكتابة عناصر TLV إضافية بعد عنصر الحاوية.

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

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

ترميز قيمة سلسلة UTF8 لـ TLV.

التفاصيل
المعلمات
[in] tag
العلامة TLV المطلوب ترميزها بالقيمة، أو AnonymousTag إذا كان يجب ترميز القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامات ProfileTag() أو ContextTag() أو CommonTag().
[in] buf
يشير ذلك المصطلح إلى مؤشر إلى سلسلة UTF-8 التي تم إنهاؤها فارغان وسيتم ترميزها.
قيم الإرجاع
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() التي تم ضبطها.

PutString

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

ترميز قيمة سلسلة UTF8 لـ TLV.

التفاصيل
المعلمات
[in] tag
العلامة TLV المطلوب ترميزها بالقيمة، أو AnonymousTag إذا كان يجب ترميز القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامات ProfileTag() أو ContextTag() أو CommonTag().
[in] buf
مؤشر إلى سلسلة UTF-8 المراد ترميزها
[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() التي تم ضبطها.

PutStringF

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

يمكنك ترميز مخرجات السلسلة المنسَّقة وفقًا للتنسيق في عنصر TLV.

تُمثِّل "putStringF" تناظرًا لسباق يتم فيه تخزين المخرجات في عنصر TLV بدلاً من المخزن المؤقت للأحرف. عند توفُّر وظيفة printf الممتدة، تتمكن الدالة من إخراج سلسلة النتيجة إلى وحدة تخزين أساسية غير مستمرة. يدعم التنفيذ تحسينات printf التالية:

توفّر المنصة vcbprintf يعتمد على معاودة الاتصال ويتيح طلب معاودة اتصال مخصّصة بدلاً من وضعputchar.

توفّر المنصة نسخة من vsnprintf تُسمّى vsnprintf_ex، وتعمل بشكل مماثل للنوع مقارنةً بـvsnprintf، باستثناء أنّها تتضمن أحكامًا بشأن حذف أول n حرف من النتيجة.

يُرجى العِلم أنّه على الرغم من أنّ الدالة المستندة إلى معاودة الاتصال قد تكون الأبسط وأقلّ مقدار من الرموز البرمجية، ستستهلك دوال vsprintf_ex المتنوعة دالة تكديس أقل.

في حال عدم توفّر أي من الخيارات المذكورة أعلاه، ولكنّ النظام الأساسي يوفّر malloc، ستخصّص الدالة موردًا مؤقتًا مؤقتًا للاحتفاظ بالناتج. عندما لا توفّر المنصة تحسينات لعائلة printf أو Maloc، يتم اقتطاع الناتج بحيث يتناسب مع الحالة المستمرة في مساحة تخزين TLV الحالية.

التفاصيل
المعلمات
[in] tag
العلامة TLV المطلوب ترميزها بالقيمة، أو AnonymousTag إذا كان يجب ترميز القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامات ProfileTag() أو ContextTag() أو CommonTag().
[in] fmt
سلسلة التنسيق المستخدمة لتنسيق قائمة الوسيطات. يتّبع البنية والقواعد نفسها المتّبعة في سلسلة التنسيق لمجموعة الدوال printf.
[in] ...
قائمة بالوسيطات المطلوب تنسيقها في قيمة الإخراج وفقًا للدالة fmt.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
other
إذا تعذّر تنفيذ الاستدعاءات الأساسية للطريقة TLVWriter أو WriteElementHead أو GetNewBuffer، تتم إعادة توجيه الخطأ على الفور إلى حزمة الاستدعاءات.

StartContainer

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

يبدأ ترميز عنصر الحاوية TLV الجديد.

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

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

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

StartPutBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

لترميز سلسلة بايت TLV في مجموعات متعددة.

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

التفاصيل
المعلمات
[in] tag
العلامة TLV المطلوب ترميزها بالقيمة، أو AnonymousTag إذا كان يجب ترميز القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامات ProfileTag() أو ContextTag() أو CommonTag().
[in] totalLen
إجمالي عدد وحدات البايت المراد ترميزها.
قيم الإرجاع
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() التي تم ضبطها.

VPutStringF

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

يمكنك ترميز مخرجات السلسلة المنسَّقة وفقًا للتنسيق في عنصر TLV.

تُمثِّل "putStringF" تناظرًا لسباق يتم فيه تخزين المخرجات في عنصر TLV بدلاً من المخزن المؤقت للأحرف. عند توفُّر وظيفة printf الممتدة، تتمكن الدالة من إخراج سلسلة النتيجة إلى وحدة تخزين أساسية غير مستمرة. يدعم التنفيذ تحسينات printf التالية:

توفّر المنصة vcbprintf يعتمد على معاودة الاتصال ويتيح طلب معاودة اتصال مخصّصة بدلاً من وضعputchar.

توفّر المنصة نسخة من vsnprintf تُسمّى vsnprintf_ex، وتعمل بشكل مماثل للنوع مقارنةً بـvsnprintf، باستثناء أنّها تتضمن أحكامًا بشأن حذف أول n حرف من النتيجة.

يُرجى العِلم أنّه على الرغم من أنّ الدالة المستندة إلى معاودة الاتصال قد تكون الأبسط وأقلّ مقدار من الرموز البرمجية، ستستهلك دوال vsprintf_ex المتنوعة دالة تكديس أقل.

في حال عدم توفّر أي من الخيارات المذكورة أعلاه، ولكنّ النظام الأساسي يوفّر malloc، ستخصّص الدالة موردًا مؤقتًا مؤقتًا للاحتفاظ بالناتج. عندما لا توفّر المنصة تحسينات لعائلة printf أو Maloc، يتم اقتطاع الناتج بحيث يتناسب مع الحالة المستمرة في مساحة تخزين TLV الحالية.

التفاصيل
المعلمات
[in] tag
العلامة TLV المطلوب ترميزها بالقيمة، أو AnonymousTag إذا كان يجب ترميز القيمة بدون علامة. يجب إنشاء قيم العلامات باستخدام إحدى وظائف تعريف العلامات ProfileTag() أو ContextTag() أو CommonTag().
[in] fmt
سلسلة التنسيق المستخدمة لتنسيق قائمة الوسيطات. يتّبع البنية والقواعد نفسها المتّبعة في سلسلة التنسيق لمجموعة الدوال printf.
[in] ap
قائمة بالوسيطات المطلوب تنسيقها في قيمة الإخراج وفقًا للدالة fmt.
قيم الإرجاع
WEAVE_NO_ERROR
إذا نجحت الطريقة.
other
إذا تعذّر تنفيذ الاستدعاءات الأساسية للطريقة TLVWriter أو WriteElementHead أو GetNewBuffer، تتم إعادة توجيه الخطأ على الفور إلى حزمة الاستدعاءات.

الدوال الثابتة العامة

FinalizePacketBuffer

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

تنفيذ للدالة TLVWriter FinalizeBuffer للكتابة على سلسلة من PacketBuffers.

تؤدي الدالة FinalizePacketBuffer() إنهاء العمليات اللازمة عند استخدام TLVWriter للكتابة إلى سلسلة من PacketBuffers. تم تصميم هذه الدالة للاستخدام مع الدالة GetNewPacketBuffer().

اطّلِع على تعريف نوع FinalizeBufferFunct للحصول على معلومات إضافية عن واجهة برمجة التطبيقات للدالة FinalizePacketBuffer().

GetNewBuffer_Malloced

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

تنفيذ لدالة TLVWriter GetNewBuffer للكتابة في مخزن مؤقت ديناميكي.

توفر الدالة GetNewBuffer_Malloced() مساحة إخراج جديدة لـ TLVWriter من خلال مضاعفة حجم المخزن المؤقت الديناميكي الأساسي حسب الحاجة لتخزين الترميز. تم تصميم الدالة ليتم تخصيصها لمؤشر الدالة TLVWriter GetNewBuffer.

راجِع تعريف النوع GetNewBufferFunct للحصول على معلومات إضافية عن واجهة برمجة التطبيقات للدالة GetNewBuffer_Malloced().

GetNewPacketBuffer

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

تنفيذ لدالة TLVWriter GetNewBuffer للكتابة على سلسلة من PacketBuffers.

توفر الدالة GetNewPacketBuffer() مساحة إخراج جديدة لـ TLVWriter من خلال تخصيص سلسلة من PacketBuffer واحد أو أكثر حسب الحاجة لتخزين الترميز. تم تصميم الدالة ليتم تخصيصها لمؤشر الدالة TLVWriter GetNewBuffer.

تجدر الإشارة إلى أنّه عند استخدام GetNewPacketBuffer مع TLVWriter، يجب أيضًا استخدام الدالة FinalizePacketBuffer() (أو ما يعادلها) لإتمام سلسلة المخزن المؤقت.

راجِع تعريف النوع GetNewBufferFunct للحصول على معلومات إضافية عن واجهة برمجة التطبيقات للدالة GetNewPacketBuffer().

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

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

حدّد ما إذا كان يجب أن تحتفظ الحاوية بمساحة لرمز CloseContainer عند نقطة بدء / فتح الحاوية.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

حدِّد ما إذا كان يجب أن تحتفظ الحاوية بمساحة لرمز CloseContainer عند نقطة بدء / فتح الحاوية.

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
)