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 للكتابة في حزمة 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)
لترميز قيمة سلسلة 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 للكتابة في سلسلة من PacketBuffer.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
تنفيذ دالة GetNewBuffer TLVWriter للكتابة في مخزن مؤقت ديناميكي.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
يشير ذلك المصطلح إلى تنفيذ دالة GetNewBuffer TLVWriter للكتابة في سلسلة من 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. يُتوقع أن تنفِّذ الدالة أي تنظيف أو إنهاء لازم يتعلق باستهلاك ناتج كائن writer. ومن الأمثلة على ذلك إجراءات مثل تسجيل الطول النهائي للترميز أو إغلاق واصف ملف.

التفاصيل
المَعلمات
[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()، يجب أن تُجري التطبيقات استدعاء 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()، يجب أن تجري تطبيقات StartContainer() استدعاءً مشابهًا إلى EndContainer()، وتمرّر قيمة TLVType التي تعرضها استدعاء StartContainer(). عند إرجاع EndContainer()، يمكن استخدام الكائن writer لكتابة عناصر 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 على "صحيح"، سيتم تخصيص "حِزم الحزم الإضافية" وربطها بالمخزن المؤقت المُقدَّم حسب الحاجة لاستيعاب كمية البيانات المكتوبة. إذا كان المخزن المؤقت للناتج المحدد هو بالفعل رأس سلسلة مخازن مؤقتة، ستتم كتابة المخرجات إلى الموارد الاحتياطية اللاحقة في السلسلة قبل تخصيص أي مخازن مؤقتة جديدة.

التفاصيل
المَعلمات
[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
إذا كانت القيمة المحدّدة للحاويات غير صحيحة.
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
إذا تم فتح كاتب حاوية على المؤلف الحالي ولم يتم إغلاقه بعد.
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
إذا كانت القيمة المحدّدة للحاويات غير صحيحة.
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 هي تناظرية لدالة sprintf حيث يتم تخزين المخرجات في عنصر TLV بدلاً من مخزن مؤقت للأحرف. عند توفر وظيفة printf الموسعة، يمكن للدالة إخراج سلسلة النتيجة في مساحة تخزين أساسية غير متصلة. يدعم التنفيذ تحسينات printf التالية:

توفّر المنصّة vcbprintf مستنِدة إلى معاودة الاتصال وتتيح إمكانية طلب معاودة اتصال بدلاً من Puchar.

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

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

إذا لم يكن أي مما سبق متاحًا ولكن يوفّر النظام الأساسي malloc، ستخصِّص الدالة مخزنًا مؤقتًا مؤقتًا للاحتفاظ بالمخرجات. عندما لا يوفّر النظام الأساسي أي تحسينات لمجموعة printf أو Marketplace، يتم اقتطاع الناتج بحيث يتناسب مع الحالة المستمرة في وحدة تخزين 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
إذا كانت القيمة المحدّدة للحاويات غير صحيحة.
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 هي تناظرية لدالة sprintf حيث يتم تخزين المخرجات في عنصر TLV بدلاً من مخزن مؤقت للأحرف. عند توفر وظيفة printf الموسعة، يمكن للدالة إخراج سلسلة النتيجة في مساحة تخزين أساسية غير متصلة. يدعم التنفيذ تحسينات printf التالية:

توفّر المنصّة vcbprintf مستنِدة إلى معاودة الاتصال وتتيح إمكانية طلب معاودة اتصال بدلاً من Puchar.

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

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

إذا لم يكن أي مما سبق متاحًا ولكن يوفّر النظام الأساسي malloc، ستخصِّص الدالة مخزنًا مؤقتًا مؤقتًا للاحتفاظ بالمخرجات. عندما لا يوفّر النظام الأساسي أي تحسينات لمجموعة printf أو Marketplace، يتم اقتطاع الناتج بحيث يتناسب مع الحالة المستمرة في وحدة تخزين 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 للكتابة في سلسلة من PacketBuffer.

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

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

GetNewBuffer_Malloced

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

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

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

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

GetNewPacketBuffer

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

يشير ذلك المصطلح إلى تنفيذ دالة GetNewBuffer TLVWriter للكتابة في سلسلة من PacketBuffers.

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

ملاحظة: عند استخدام 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
)