nl:: بافت:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
یک رمزگذار کارآمد حافظه برای نوشتن داده ها در قالب Weave TLV ارائه می دهد.
خلاصه
TLVWriter یک رمزگذار به سبک استریم رو به جلو برای داده های Weave TLV پیاده سازی می کند. برنامه ها با فراخوانی یکی از متدهای Put() نویسنده، ارسال برچسب و اطلاعات مربوط به مقدار در صورت لزوم، داده ها را در یک رمزگذاری می نویسند. به طور مشابه، برنامهها میتوانند انواع کانتینر TLV (ساختارها، آرایهها یا مسیرها) را با فراخوانی روشهای OpenContainer() یا EnterContainer()نویسنده کدگذاری کنند.
یک شی TLVWriter می تواند داده ها را مستقیماً در یک بافر خروجی ثابت یا در زنجیره ای از یک یا چند شیء PacketBuffer بنویسد. علاوه بر این، برنامه ها می توانند توابع GetNewBuffer
و FinalizeBuffer
خود را برای هدایت خروجی به یک مقصد دلخواه، به عنوان مثال یک سوکت یا یک صف رویداد، ارائه دهند.
وراثت
زیر کلاس های مستقیم شناخته شده: nl:: بافت::TLV::CircularTLVWriterانواع محافظت شده | |
---|---|
@72 { | شمارش |
انواع عمومی | |
---|---|
FinalizeBufferFunct )(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) | WEAVE_ERROR(*WEAVE_ERROR (* تابعی که برای انجام نهایی کردن خروجی از یک شی TLVWriter استفاده می شود. |
GetNewBufferFunct )(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) | WEAVE_ERROR(*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 را برای نوشتن در یک یا چند PacketBuffer راه اندازی می کند. |
InitMalloced (uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen) | void یک شی TLVWriter را برای نوشتن در یک بافر پویا راه اندازی می کند. |
OpenContainer (uint64_t tag, TLVType containerType, TLVWriter & containerWriter) | |
Put (uint64_t tag, int8_t v) | یک مقدار صحیح امضا شده TLV را رمزگذاری می کند. |
Put (uint64_t tag, int8_t v, bool preserveSize) | یک مقدار صحیح امضا شده TLV را رمزگذاری می کند. |
Put (uint64_t tag, int16_t v) | |
Put (uint64_t tag, int16_t v, bool preserveSize) | |
Put (uint64_t tag, int32_t v) | |
Put (uint64_t tag, int32_t v, bool preserveSize) | |
Put (uint64_t tag, int64_t v) | |
Put (uint64_t tag, int64_t v, bool preserveSize) | |
Put (uint64_t tag, uint8_t v) | یک مقدار صحیح بدون علامت TLV را رمزگذاری می کند. |
Put (uint64_t tag, uint8_t v, bool preserveSize) | یک مقدار صحیح بدون علامت TLV را رمزگذاری می کند. |
Put (uint64_t tag, uint16_t v) | |
Put (uint64_t tag, uint16_t v, bool preserveSize) | |
Put (uint64_t tag, uint32_t v) | |
Put (uint64_t tag, uint32_t v, bool preserveSize) | |
Put (uint64_t tag, uint64_t v) | |
Put (uint64_t tag, uint64_t v, bool preserveSize) | |
Put (uint64_t tag, float v) | |
Put (uint64_t tag, double v) | یک مقدار ممیز شناور TLV را رمزگذاری می کند. |
PutBoolean (uint64_t tag, bool v) | یک مقدار بولی TLV را رمزگذاری می کند. |
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len) | یک مقدار رشته بایت TLV را رمزگذاری می کند. |
PutNull (uint64_t tag) | یک مقدار تهی TLV را رمزگذاری می کند. |
PutPreEncodedContainer (uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen) | یک عنصر ظرف TLV را از مجموعه ای از عناصر عضو از پیش رمزگذاری شده رمزگذاری می کند. |
PutString (uint64_t tag, const char *buf) | یک مقدار رشته TLV UTF8 را رمزگذاری می کند. |
PutString (uint64_t tag, const char *buf, uint32_t len) | یک مقدار رشته TLV UTF8 را رمزگذاری می کند. |
PutStringF (uint64_t tag, const char *fmt, ...) | خروجی رشته فرمت شده بر اساس قالب موجود در عنصر TLV را رمزگذاری کنید. |
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType) | رمزگذاری یک عنصر ظرف TLV جدید را آغاز می کند. |
StartPutBytes (uint64_t tag, uint32_t totalLen) | یک رشته بایت TLV را در چند تکه رمزگذاری می کند. |
VPutStringF (uint64_t tag, const char *fmt, va_list ap) | خروجی رشته فرمت شده بر اساس قالب موجود در عنصر TLV را رمزگذاری کنید. |
توابع استاتیک عمومی | |
---|---|
FinalizePacketBuffer ( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen) | اجرای یک تابع FinalizeBuffer TLVWriter برای نوشتن در زنجیره ای از PacketBuffer. |
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 برای نوشتن در زنجیره ای از PacketBuffer. |
توابع محافظت شده | |
---|---|
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 فراخوانی شود. انتظار می رود که این تابع هرگونه پاکسازی یا نهایی سازی لازم مربوط به مصرف خروجی شی نویسنده را انجام دهد. نمونه هایی از این موارد شامل مواردی مانند ضبط طول نهایی رمزگذاری یا بستن یک توصیفگر فایل است.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||
ارزش های بازگشتی |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
تابعی که فضای بافر خروجی جدیدی را برای TLVWriter فراهم می کند.
توابع از این نوع برای آماده سازی فضای بافر جدید برای نوشتن در TLVWriter استفاده می شود. هنگام فراخوانی، انتظار می رود که این تابع یک اشاره گر را به یک مکان حافظه که در آن داده های جدید باید نوشته شود، همراه با حداکثر طول مربوطه بازگرداند. این تابع می تواند با اختصاص یک بافر جدید برای نگهداری داده ها یا با پاک کردن داده های نوشته شده قبلی از بافر موجود، فضای نوشتن را تامین کند.
جزئیات | |||||||||
---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||
ارزش های بازگشتی |
|
صفات عمومی
اطلاعات برنامه
void * AppData
یک فیلد اشاره گر که می تواند برای داده های خاص برنامه استفاده شود.
Finalize Buffer
FinalizeBufferFunct FinalizeBuffer
اشاره گر به تابعی که با نهایی شدن TLVWriter فراخوانی می شود.
یک شی TLVWriter هر زمان که متد Finalize() فراخوانی شود تابع FinalizeBuffer را فراخوانی می کند. برنامه ها می توانند نشانگر تابع را در هر نقطه ای قبل از فراخوانی Finalize () تنظیم کنند. به طور پیش فرض اشاره گر روی NULL تنظیم شده است که باعث می شود متد Finalize() از فراخوانی تابع صرف نظر کند.
برای اطلاعات بیشتر در مورد اجرای یک تابع FinalizeBuffer به تعریف نوع FinalizeBufferFunct مراجعه کنید.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
اشاره گر به تابعی که فضای بافر خروجی جدیدی را به TLVWriter می دهد.
یک شی TLVWriter تابع GetNewBuffer را هر زمان که تلاشی برای نوشتن دادهای بیشتر از اندازه بافر خروجی فعلی انجام شود، فراخوانی میکند. اگر روی NULL (مقدار پیشفرض) تنظیم شود، نویسنده یک WEAVE_ERROR_NO_MEMORY را برمیگرداند اگر دادههای خروجی از بافر جاری سرریز شود.
GetNewBuffer می تواند توسط یک برنامه در هر زمان تنظیم شود، اما معمولاً زمانی تنظیم می شود که رایتر مقدار دهی اولیه شود.
برای اطلاعات بیشتر در مورد اجرای تابع GetNewBuffer به تعریف نوع GetNewBufferFunct مراجعه کنید.
ImplicitProfileId
uint32_t ImplicitProfileId
شناسه پروفایل تگ هایی که باید به صورت ضمنی کدگذاری شوند.
هنگامی که از نویسنده خواسته می شود عنصر جدیدی را رمزگذاری کند، اگر شناسه نمایه تگ مرتبط با عنصر جدید با مقدار عضو ImplicitProfileId
مطابقت داشته باشد، نویسنده برچسب را به شکل ضمنی رمزگذاری می کند و شناسه نمایه را در این فرآیند حذف می کند.
به طور پیشفرض، ویژگی ImplicitProfileId
روی kProfileIdNotSpecified تنظیم شده است که به نویسنده دستور میدهد تگهای رمزگذاری شده ضمنی منتشر نکند. برنامهها میتوانند در هر زمانی ImplicitProfileId
را برای فعال کردن برچسبهای رمزگذاری به شکل ضمنی که از نقطه فعلی رمزگذاری شروع میشود، تنظیم کنند. شناسه نمایه مناسب برای تنظیم معمولاً به زمینه برنامه یا پروتکلی که گفته می شود بستگی دارد.
ویژگی های محافظت شده
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mContainerType
TLVType mContainerType
mLenWritten
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
mRemainingLen
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
توابع عمومی
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
نوشتن یک ظرف TLV را پس از تماس با OpenContainer() تکمیل می کند.
متد ()CloseContainer وضعیت یک شی TLVWriter والد را پس از فراخوانی OpenContainer () بازیابی می کند. برای هر فراخوانی به OpenContainer() برنامه ها باید یک فراخوانی متناظر با CloseContainer() داشته باشند و به هر دو متد ارجاع به همان Container writer ارسال کنند.
هنگامی که CloseContainer() برمی گردد، برنامه ها ممکن است به استفاده از نویسنده والد برای نوشتن عناصر TLV اضافی که بعد از عنصر کانتینر ظاهر می شوند، ادامه دهند. در این مرحله، کانتینرنویس عرضهشده باید «حداقل اولیه» در نظر گرفته شود و نباید بدون شروع مجدد استفاده شود.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
یک مقدار رشته بایت TLV را رمزگذاری می کند.
این باید با StartPutBytes استفاده شود.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
یک عنصر ظرف TLV را از شی TLVReader کپی می کند.
CopyContainer() یک عنصر کانتینر TLV جدید را با کپی کردن یک عنصر کانتینری از پیش کدگذاری شده که در موقعیت فعلی یک شی TLVReader قرار دارد، رمزگذاری می کند. این روش کل عنصر کانتینر جدید را در یک فراخوانی مینویسد و نوع، برچسب و عناصر ظرف را از کدگذاری منبع کپی میکند. هنگامی که متد برمی گردد، شی نویسنده می تواند برای نوشتن عناصر TLV اضافی به دنبال عنصر کانتینر استفاده شود.
جزئیات | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||||||||
ارزش های بازگشتی |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
یک عنصر ظرف TLV را از مجموعه ای از عناصر عضو از پیش رمزگذاری شده رمزگذاری می کند.
متد CopyContainer() یک عنصر محفظه TLV جدید (یک ساختار، آرایه یا مسیر) را رمزگذاری می کند که شامل مجموعه ای از عناصر عضو گرفته شده از یک شی TLVReader است. هنگامی که متد فراخوانی می شود، انتظار می رود که شی خواننده ارائه شده روی یک عنصر ظرف TLV قرار گیرد. ظرف تازه کدگذاری شده دارای همان نوع و اعضای محفظه ورودی خواهد بود. تگ ظرف جدید به عنوان پارامتر ورودی مشخص می شود.
هنگامی که متد برمی گردد، شی نویسنده می تواند برای نوشتن عناصر TLV اضافی به دنبال عنصر کانتینر استفاده شود.
جزئیات | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||||||||
ارزش های بازگشتی |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
یک عنصر ظرف TLV را رمزگذاری می کند که حاوی عناصر عضو از یک ظرف از پیش رمزگذاری شده است.
روش CopyContainer() یک عنصر محفظه TLV جدید (یک ساختار، آرایه یا مسیر) را رمزگذاری میکند که شامل مجموعهای از عناصر عضو است که از محتویات یک کانتینر از پیش کدگذاری شده ارائه شده است. هنگامی که متد فراخوانی می شود، داده ها در بافر ورودی ارائه شده به عنوان یک عنصر محفظه TLV تجزیه می شوند و یک ظرف جدید نوشته می شود که دارای همان نوع و اعضای محفظه ورودی است. تگ ظرف جدید به عنوان پارامتر ورودی مشخص می شود.
هنگامی که متد برمی گردد، شی نویسنده می تواند برای نوشتن عناصر TLV اضافی به دنبال عنصر کانتینر استفاده شود.
جزئیات | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||||||
ارزش های بازگشتی |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
یک عنصر TLV را از یک شی خواننده در رایتر کپی می کند.
متد CopyElement() یک عنصر TLV جدید را رمزگذاری می کند که نوع، تگ و مقدار آن از یک شی TLVReader گرفته شده است. هنگامی که متد فراخوانی می شود، انتظار می رود که شی خواننده ارائه شده روی عنصر TLV منبع قرار گیرد. عنصر رمزگذاری شده جدید دارای همان نوع، برچسب و محتویات محفظه ورودی خواهد بود. اگر عنصر ارائه شده یک ظرف TLV (ساختار، آرایه یا مسیر) باشد، کل محتویات ظرف کپی می شود.
جزئیات | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||||||||
ارزش های بازگشتی |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
رمزگذاری یک عنصر ظرف TLV را کامل می کند.
متد EndContainer() رمزگذاری یک عنصر ظرف TLV را تکمیل می کند و وضعیت یک شی TLVWrite را پس از فراخوانی قبلی به StartContainer() بازیابی می کند. برای هر تماس با ()StartContainer برنامهها باید یک فراخوانی متناظر با EndContainer() برقرار کنند و مقدار TLVType را که توسط فراخوان StartContainer() برگردانده شده است، ارسال کنند. هنگامی که EndContainer() برمی گردد، شی writer می تواند برای نوشتن عناصر TLV اضافی که از عنصر کانتینر پیروی می کنند استفاده شود.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
نهایی کردن
WEAVE_ERROR Finalize( void )
نوشتن رمزگذاری TLV را تمام کنید.
متد Finalize() فرآیند نوشتن رمزگذاری TLV در بافر خروجی زیرین را تکمیل میکند. متد باید قبل از استفاده از محتویات بافر توسط برنامه فراخوانی شود. Finalize() را فقط زمانی می توان فراخوانی کرد که هیچ کانتینری رایتر برای نویسنده فعلی باز نباشد. (به OpenContainer()
مراجعه کنید.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
ارزش های بازگشتی |
|
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 )
شروع کنید
void Init( PacketBuffer *buf, uint32_t maxLen )
شروع کنید
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
یک شی TLVWriter را برای نوشتن در یک یا چند PacketBuffer راه اندازی می کند.
نوشتن بلافاصله پس از آخرین بایت داده موجود در بافر مشخص شده شروع می شود. اگر allowDiscontiguousBuffers
درست باشد، PacketBuffer های اضافی تخصیص داده می شوند و در صورت نیاز به بافر عرضه شده زنجیر می شوند تا حجم داده های نوشته شده را در خود جای دهند. اگر بافر خروجی مشخص شده از قبل سر زنجیره ای از بافرها باشد، خروجی قبل از تخصیص بافرهای جدید در بافرهای بعدی در زنجیره نوشته می شود.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
یک شی TLVWriter را برای نوشتن در یک بافر پویا راه اندازی می کند.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
یک شی TLVWriter جدید را برای نوشتن اعضای یک عنصر ظرف TLV راه اندازی می کند.
روش OpenContainer() برای نوشتن عناصر کانتینر TLV (ساختار، آرایه ها یا مسیرها) در یک رمزگذاری استفاده می شود. این متد نوع و تگ (در صورت وجود) کانتینر جدید و ارجاع به یک شی نویسنده جدید ( نوشتن ظرف ) را می گیرد که برای نوشتن عناصر کانتینر مقداردهی اولیه می شود. برنامه ها اعضای کانتینر جدید را با استفاده از Container Writer می نویسند و سپس CloseContainer() را برای تکمیل رمزگذاری کانتینر فراخوانی می کنند.
در حالی که Container Writer باز است، برنامه ها نباید با آن تماس بگیرند یا وضعیت نویسنده والد را تغییر دهند.
Container writer خصوصیات پیکربندی مختلفی را از نویسنده والد به ارث می برد. اینها هستند:
- شناسه نمایه ضمنی (ImplicitProfileId)
- نشانگر داده برنامه (AppData)
- نشانگرهای تابع GetNewBuffer و FinalizeBuffer
جزئیات | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||||
ارزش های بازگشتی |
|
قرار دادن
WEAVE_ERROR Put( uint64_t tag, int8_t v )
یک مقدار صحیح امضا شده TLV را رمزگذاری می کند.
این یک تابع عضو اضافه بار است که برای راحتی ارائه شده است. تفاوت آن با تابع فوق تنها در مورد پذیرش (های) آن است.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
قرار دادن
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
یک مقدار صحیح امضا شده TLV را رمزگذاری می کند.
این یک تابع عضو اضافه بار است که برای راحتی ارائه شده است. تفاوت آن با تابع فوق تنها در مورد پذیرش (های) آن است.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
قرار دادن
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 را رمزگذاری می کند.
این یک تابع عضو اضافه بار است که برای راحتی ارائه شده است. تفاوت آن با تابع فوق تنها در مورد پذیرش (های) آن است.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
قرار دادن
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
یک مقدار صحیح بدون علامت TLV را رمزگذاری می کند.
این یک تابع عضو اضافه بار است که برای راحتی ارائه شده است. تفاوت آن با تابع فوق تنها در مورد پذیرش (های) آن است.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
قرار دادن
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 را رمزگذاری می کند.
این یک تابع عضو اضافه بار است که برای راحتی ارائه شده است. تفاوت آن با تابع فوق تنها در مورد پذیرش (های) آن است.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
یک مقدار بولی TLV را رمزگذاری می کند.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
یک مقدار رشته بایت TLV را رمزگذاری می کند.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
Encodes a TLV null value.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Encodes a TLV container element from a pre-encoded set of member elements.
The PutPreEncodedContainer() method encodes a new TLV container element (a structure, array or path) containing a set of member elements taken from a pre-encoded buffer. The input buffer is expected to contain zero or more full-encoded TLV elements, with tags that conform to the rules associated with the specified container type (eg structure members must have tags, while array members must not).
The method encodes the entirety of the container element in one call. When PutPreEncodedContainer() returns, the writer object can be used to write additional TLV elements following the container element.
جزئیات | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||||
ارزش های بازگشتی |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
Encodes a TLV UTF8 string value.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
Encodes a TLV UTF8 string value.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Encode the string output formatted according to the format in the TLV element.
PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:
The platform supplies a callback-based vcbprintf
that provides the ability to call a custom callback in place of putchar.
The platform supplies a variant of vsnprintf
called vsnprintf_ex
, that behaves exactly like vsnprintf except it has provisions for omitting the first n
characters of the output.
Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex
variety of functions will consume less stack.
If neither of the above is available, but platform provides malloc
the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Begins encoding a new TLV container element.
The StartContainer() method is used to write TLV container elements (structure, arrays or paths) to an encoding. The method takes the type and tag (if any) of the new container, and a reference to a TLVType value which will be used to save the current context of the writer while it is being used to write the container.
Once the StartContainer() method returns, the application should use the current TLVWriter object to write the elements of the container. When finish, the application must call the EndContainer() method to finish the encoding of the container.
جزئیات | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||||
ارزش های بازگشتی |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Encodes a TLV byte string in multiple chunks.
This should be used with ContinuePutBytes.
جزئیات | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
مولفه های |
| ||||||||||||
ارزش های بازگشتی |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Encode the string output formatted according to the format in the TLV element.
PutStringF is an analog of a sprintf where the output is stored in a TLV element as opposed to a character buffer. When extended printf functionality is available, the function is able to output the result string into a discontinuous underlying storage. The implementation supports the following printf enhancements:
The platform supplies a callback-based vcbprintf
that provides the ability to call a custom callback in place of putchar.
The platform supplies a variant of vsnprintf
called vsnprintf_ex
, that behaves exactly like vsnprintf except it has provisions for omitting the first n
characters of the output.
Note that while the callback-based function may be the simplest and use the least amount of code, the vsprintf_ex
variety of functions will consume less stack.
If neither of the above is available, but platform provides malloc
the function will allocate a temporary buffer to hold the output. When the platform supplies neither enhancement to the printf family nor malloc, the output is truncated such that it fits in the continuous state in the current TLV storage
جزئیات | |||||||
---|---|---|---|---|---|---|---|
مولفه های |
| ||||||
ارزش های بازگشتی |
|
توابع استاتیک عمومی
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
An implementation of a TLVWriter FinalizeBuffer function for writing to a chain of PacketBuffers.
The FinalizePacketBuffer() function performs the necessary finalization required when using a TLVWriter to write to a chain of PacketBuffers. The function is designed to be used in conjunction with the GetNewPacketBuffer() function.
See the FinalizeBufferFunct type definition for additional information on the API of the FinalizePacketBuffer() function.
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
An implementation of a TLVWriter GetNewBuffer function for writing to a dynamic buffer.
The GetNewBuffer_Malloced() function supplies new output space to a TLVWriter by doubling the size of the underlying dynamic buffer as needed to store the encoding. The function is designed to be assigned to the TLVWriter GetNewBuffer function pointer.
See the GetNewBufferFunct type definition for additional information on the API of the GetNewBuffer_Malloced() function.
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
An implementation of a TLVWriter GetNewBuffer function for writing to a chain of PacketBuffers.
The GetNewPacketBuffer() function supplies new output space to a TLVWriter by allocating a chain of one or more PacketBuffers as needed to store the encoding. The function is designed to be assigned to the TLVWriter GetNewBuffer function pointer.
Note that when using the GetNewPacketBuffer with a TLVWriter , the corresponding FinalizePacketBuffer() function (or an equivalent) should also be used to finalize the buffer chain.
See the GetNewBufferFunct type definition for additional information on the API of the GetNewPacketBuffer() function.
توابع محافظت شده
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Determine whether the container should reserve space for the CloseContainer symbol at the point of starting / opening the container.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Set whether the container should reserve the space for the CloseContainer symbol at the point of starting / opening the container.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
WriteData
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
WriteElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
WriteElementWithData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )
جز در مواردی که غیر از این ذکر شده باشد، محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است و نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است. Thread علامت تجاری ثبتشده Thread Group, Inc است.
تاریخ آخرین بهروزرسانی 2022-08-30 بهوقت ساعت هماهنگ جهانی.