nl:: Weave:: TLV:: TLVWriter

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

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

الملخّص

تطبّق TLVWriter برنامج ترميز نمط البث المباشر الأمامي فقط لبيانات WeTV TLV. ترسِل التطبيقات البيانات إلى ترميز عن طريق استدعاء إحدى طرق put() من وفيقرة، مع تمرير المعلومات المرتبطة بالعلامة والقيمة حسب الضرورة. وبالمثل، يمكن للتطبيقات ترميز أنواع حاويات TLV (البنى أو المصفوفات أو المسارات) من خلال استدعاء الطريقة Opencontainer() أو Enterحاويات().

يمكن للكائن 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 بعد استدعاء Open حاوية().
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.
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

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

النهائي

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

دالة يتم استخدامها لإنهاء النتيجة من عنصر TLVWriter.

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

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

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

القائمة

void * AppData

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

النهائي

FinalizeBufferFunct FinalizeBuffer

مؤشر إلى دالة سيتم طلبها عند الانتهاء من TLVWriter.

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

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

GetNewBuffer

GetNewBufferFunct GetNewBuffer

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

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

يمكن إعداد GetNewBuffer من خلال تطبيق في أي وقت، ولكن يتم عادةً إعداده عند إعداد المؤلف.

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

معرّف الملف الشخصي الضمني

uint32_t ImplicitProfileId

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

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

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

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

mBufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mcontainerType

TLVType mContainerType

مكتوب

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

وظائف عامة

إغلاق الحاوية

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

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

تعمل الطريقة Closecontainer() على استعادة حالة الكائن TLVWriter بعد استدعاء الدالة Open حاوية(). وبالنسبة إلى كل طلب استدعاء لتطبيقات Opencontainer()، يجب إجراء استدعاء مقابل لـ Closecontainer()، وتمرير مرجع إلى كاتب الحاوية نفسه لكلتا الطريقتَين.

عند رجوع Closecontainer()، قد تستمر التطبيقات في استخدام الكاتب الرئيسي لكتابة عناصر TLV إضافية تظهر بعد عنصر الحاوية. في هذه المرحلة، يجب مراعاة كاتب الحاوية التي تم توفيرها 'de-initialize' ويجب عدم استخدامها بدون إعادة التهيئة.

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

المتابعة باستخدام الوضع

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

تعمل هذه السمة على ترميز قيمة سلسلة TLV بايت.

يجب استخدام هذه الأداة مع StartPlaceBytes.

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

حاوية حاوية

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

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

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

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

حاوية حاوية

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

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

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

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

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

حاوية حاوية

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

تعمل هذه السمة على ترميز عنصر حاوية TLV يحتوي على عناصر عضو من حاوية مشفّرة مسبقًا.

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

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

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

النسخ

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() المرتبطة بكائن القارئ.

النسخ

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

End حاوية

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

إكمال ترميز عنصر حاوية TLV

تكتمل طريقة Endcontainer() ترميز عنصر الحاوية TLV وتستعيد حالة الكائن TLVWrite بعد استدعاء سابق للسمة Startcontainer(). بالنسبة إلى كل طلب استدعاء لتطبيقات Startcontainer()، يجب تمرير قيمة 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() التي تم ضبطها.

نوع الحاوية

TLVType GetContainerType(
  void
) const 

لعرض نوع الحاوية التي يكتبها TLVWriter حاليًا.

تعرض طريقة GetcontainerType() نوع الحاوية TLV التي يتم داخلها كتابة TLVWriter حاليًا. إذا كانت TLVWriter لا تكتب العناصر داخل حاوية (أي إذا كانت مكتوبة على المستوى الأقصى للترميز)، ستعرض الطريقة kTLVType_NotSpecified.

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

GetLengthWrite

uint32_t GetLengthWritten(
  void
)

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

التفاصيل
المرتجعات
إجمالي عدد وحدات البايت المكتوبة منذ إعداد الكاتب

إنيت

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

أولاً، يتم إعداد عنصر TLVWriter للكتابة في ذاكرة تخزين مؤقت واحدة للمخرج.

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

إنيت

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

ويؤدي هذا إلى إعداد كائن TLVWriter للكتابة في PacketBuffer واحد.

تبدأ الكتابة مباشرةً بعد آخر بايت من البيانات الحالية في المخزن المؤقت المُقدّم.

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

إنيت

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

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

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

التفاصيل
المعلَمات
[in] buf
مؤشر إلى PacketBuffer يجب كتابة بيانات TLV فيه.
[in] maxLen
الحد الأقصى لعدد وحدات البايت التي يجب كتابتها في المخزن المؤقت للإخراج.
[in] allowDiscontiguousBuffers
في حال الضبط على "صحيح"، يمكنك كتابة البيانات في سلسلة من PacketBuffers، وتخصيص مخازن مؤقتة جديدة حسب الحاجة لتخزين البيانات المكتوبة. إذا كانت القيمة "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
العدد الأولي لوحدات البايت التي يجب تخصيصها للمخزن المؤقت.

حاوية مفتوحة

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

تعمل هذه السياسة على إعداد عنصر TLVWriter جديد لكتابة أعضاء عنصر TLV.

يتم استخدام الطريقة Opencontainer() لكتابة عناصر حاويات TLV (البنية أو المصفوفات أو المسارات) للترميز. تستخدم الطريقة نوعًا وعلامة (إن وُجدت) في الحاوية الجديدة ومرجعًا لعنصر كاتب جديد (كاتب الحاوية) سيتم إعداده لغرض كتابة عناصر الحاوية. وتكتب التطبيقات أعضاء الحاوية الجديدة باستخدام كاتب الحاوية، ثم تُطلب Closecontainer() لإكمال ترميز الحاوية.

أثناء فتح كاتب الحاوية، يجب ألا تجري التطبيقات عمليات استدعاء أو تغيير حالة الكاتب الرئيسي.

يكتسِب كاتب الحاوية خصائص الضبط المختلفة من الكاتب الرئيسي. وهي:

  • رقم تعريف الملف الضمني (ImplicitProfileId)
  • مؤشر بيانات التطبيق (AppData)
  • مؤشرا الوظائف GetGetBuffer وFinalizeBuffer

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

وضع

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

تعمل على ترميز قيمة صحيحة بعدد TLV.

هذه الوظيفة الزائدة عن الأعضاء مُقدَّمة من أجل الراحة. ويختلف عن الدالة المذكورة أعلاه فقط في الوسيطة التي تقبلها.

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

وضع

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

تعمل على ترميز قيمة صحيحة بعدد TLV.

هذه الوظيفة الزائدة عن الأعضاء مُقدَّمة من أجل الراحة. ويختلف عن الدالة المذكورة أعلاه فقط في الوسيطة التي تقبلها.

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

وضع منطقية

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

بايت

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

بوتنل

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

وضع PreEncodedcontainer

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

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

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

تعمل الطريقة على ترميز عنصر العنصر بالكامل في استدعاء واحد. عند رجوع PlacePreEncodedcontainer()، يمكن استخدام كائن الكاتب لكتابة عناصر 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
إذا كانت القيمة المحدّدة لـcontainerType غير صحيحة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
في حال تم فتح كاتب حاوية على الكاتب الحالي ولم يتم إغلاقها بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم كتابة القيمة فيه.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت القيمة ستتجاوز الحد الأقصى لعدد وحدات البايت التي تم تحديدها عند إعداد الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص المخزن المؤقت للمخرجات بسبب عدم توفّر مساحة كافية في الذاكرة.
other
أخطاء أخرى من Weave أو متعلقة بالأنظمة الأساسية والتي تعرضها دالة GetNewBuffer() أو FinalizeBuffer() التي تم ضبطها.

سلسلة

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

سلسلة

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

وضع سلسلة

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

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

وضع ذلك في السلسلة هو تناظري لـ sprintf حيث يتم تخزين المخرجات في عنصر TLV بدلاً من المخزن المؤقت للأحرف. عندما تتوفر وظيفة طباعة موسّعة، يمكن للدالة عرض سلسلة النتائج في مساحة تخزين أساسية غير متصلة. يتوافق التنفيذ مع التحسينات التالية على الصور المطبوعة:

وتوفّر المنصّة vcbprintf استنادًا إلى معاودة الاتصال، ما يتيح إمكانية استدعاء استدعاء مخصّص بدلاً من سمةcharchar.

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

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

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

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

حاوية حاوية

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
إذا كانت القيمة المحدّدة لـcontainerType غير صحيحة.
WEAVE_ERROR_TLV_CONTAINER_OPEN
في حال تم فتح كاتب حاوية على الكاتب الحالي ولم يتم إغلاقها بعد.
WEAVE_ERROR_INVALID_TLV_TAG
إذا كانت قيمة العلامة المحددة غير صالحة أو غير مناسبة في السياق الذي تتم كتابة القيمة فيه.
WEAVE_ERROR_BUFFER_TOO_SMALL
إذا كانت القيمة ستتجاوز الحد الأقصى لعدد وحدات البايت التي تم تحديدها عند إعداد الكاتب.
WEAVE_ERROR_NO_MEMORY
إذا فشلت محاولة تخصيص المخزن المؤقت للمخرجات بسبب عدم توفّر مساحة كافية في الذاكرة.
other
أخطاء أخرى من Weave أو متعلقة بالأنظمة الأساسية والتي تعرضها دالة GetNewBuffer() أو FinalizeBuffer() التي تم ضبطها.

StartStartBytes

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

لترميز سلسلة بايت بتنسيق TLV في أجزاء متعددة.

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

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

لعبة فيديو على الإنترنت

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

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

وضع ذلك في السلسلة هو تناظري لـ sprintf حيث يتم تخزين المخرجات في عنصر TLV بدلاً من المخزن المؤقت للأحرف. عندما تتوفر وظيفة طباعة موسّعة، يمكن للدالة عرض سلسلة النتائج في مساحة تخزين أساسية غير متصلة. يتوافق التنفيذ مع التحسينات التالية على الصور المطبوعة:

وتوفّر المنصّة vcbprintf استنادًا إلى معاودة الاتصال، ما يتيح إمكانية استدعاء استدعاء مخصّص بدلاً من سمةcharchar.

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

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

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

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

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

فيسكين باكيت بوفر

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

تنفيذ دالة TLVWriter.

تنفّذ الدالة 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().

الحصول على تخزين جديد

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

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

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

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

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

دوال محمية

محجوزة إغلاق

bool IsCloseContainerReserved(
  void
) const 

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

حاوية حاوية مفتوحة

bool IsContainerOpen(
  void
) const 

تم ضبط حاوية الإغلاق

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

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

SetcontainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

كتابة البيانات

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

نوع العنصر

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

كتابة عنصر مع بيانات

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