ไม่มี:: สาน:: ทีแอลวี:: TLVUpdater
#include <src/lib/core/WeaveTLV.h>
มีอินเตอร์เฟซอ่าน / เขียนแบบครบวงจรสำหรับการแก้ไข / เพิ่ม / ลบองค์ประกอบใน TLV เข้ารหัส
สรุป
TLVUpdater เป็นสหภาพของTLVReader และTLVWriter วัตถุและมีวิธีการอินเตอร์เฟซสำหรับการแก้ไข / ลบข้อมูลในการเข้ารหัสเช่นเดียวกับการเพิ่มองค์ประกอบใหม่ใน TLV เข้ารหัส TLVUpdater วัตถุเป็นหลักทำหน้าที่เหมือนสองเคอร์เซอร์หนึ่งสำหรับการอ่านการเข้ารหัสที่มีอยู่และอื่น ๆ สำหรับการเขียน (ทั้งสำหรับการคัดลอกมากกว่าข้อมูลที่มีอยู่หรือการเขียนข้อมูลใหม่)
ความหมายที่ TLVUpdater ฟังก์ชั่นวัตถุที่ต้องการของสหภาพที่TLVReader และTLVWriter TLVUpdater วิธีการที่มีความหมายมากขึ้นหรือน้อยที่คล้ายกันเป็นคู่ชื่อในทำนองเดียวกันใน TLVReader / TLVWriter ในกรณีที่มีความแตกต่างในความหมายที่แตกต่างกันที่มีการบันทึกไว้อย่างชัดเจนในส่วนความคิดเห็นของฟังก์ชันใน WeaveTLVUpdater.cpp
หนึ่งหมายเหตุสำคัญโดยเฉพาะอย่างยิ่งเกี่ยวกับ TLVUpdater 's PutBytes () และ PutString () วิธีก็คือว่ามันสามารถออกจากการเข้ารหัสในรัฐเสียหายมีเพียงส่วนหัวขององค์ประกอบที่เขียนเมื่อล้นเกิดขึ้น การประยุกต์ใช้งานสามารถเรียก GetRemainingFreeLength () เพื่อให้แน่ใจว่ามีพื้นที่ว่างประมาณพอที่จะเขียนเข้ารหัส โปรดทราบว่า GetRemainingFreeLength () เท่านั้นที่จะบอกคุณไบต์ใช้ได้ฟรีและมีวิธีการสำหรับการประยุกต์ใช้ที่จะรู้ว่าความยาวของข้อมูลการเข้ารหัสที่ได้รับการเขียนไม่มี ในกรณีโอเวอร์โฟลว์ ทั้ง PutBytes() และ PutString() จะส่งกลับ WEAVE_ERROR_BUFFER_TOO_SMALL ให้กับผู้โทร
นอกจากนี้ทราบว่า ถัดไป () วิธีการมากเกินไปทั้งข้ามองค์ประกอบปัจจุบันและความก้าวหน้าของผู้อ่านภายในองค์ประกอบถัดไป เพราะข้ามองค์ประกอบที่เข้ารหัสแล้วต้องเปลี่ยนสถานะตัวแปรพื้นที่ว่างนักเขียนภายในไปยังบัญชีสำหรับพื้นที่อิสระใหม่ (ทำใช้ได้โดยการกระโดดข้าม) แอพลิเคชันที่คาดว่าจะเรียก ถัดไป () ในการอัพเดทหลังจากที่ได้รับ () วิธีการที่มีค่ามัน doesn ไม่ต้องการเขียนกลับ (ซึ่งเทียบเท่ากับการข้ามองค์ประกอบปัจจุบัน)
งานสาธารณะ | |
---|---|
CopyElement (TLVReader & reader) | |
CopyElement (uint64_t tag,TLVReader & reader) | |
DupBytes (uint8_t *& buf, uint32_t & dataLen) | |
DupString (char *& buf) | |
EndContainer ( TLVType outerContainerType) | |
EnterContainer ( TLVType & outerContainerType) | เตรียม TLVUpdater วัตถุสำหรับการอ่านองค์ประกอบของภาชนะ |
ExitContainer ( TLVType outerContainerType) | |
Finalize (void) | |
Get (bool & v) | |
Get (int8_t & v) | |
Get (int16_t & v) | |
Get (int32_t & v) | |
Get (int64_t & v) | |
Get (uint8_t & v) | |
Get (uint16_t & v) | |
Get (uint32_t & v) | |
Get (uint64_t & v) | |
Get (float & v) | |
Get (double & v) | |
GetBytes (uint8_t *buf, uint32_t bufSize) | |
GetContainerType (void) const | |
GetDataPtr (const uint8_t *& data) | |
GetImplicitProfileId (void) | uint32_t |
GetLength (void) const | uint32_t |
GetLengthRead (void) const | uint32_t |
GetLengthWritten (void) | uint32_t |
GetReader (TLVReader & containerReader) | void |
GetRemainingFreeLength (void) | uint32_t |
GetRemainingLength (void) const | uint32_t |
GetString (char *buf, uint32_t bufSize) | |
GetTag (void) const | uint64_t |
GetType (void) const | |
Init (uint8_t *buf, uint32_t dataLen, uint32_t maxLen) | เริ่มต้น TLVUpdater วัตถุแก้ไขบัฟเฟอร์เดียว |
Init (TLVReader & aReader, uint32_t freeLen) | เริ่มต้น TLVUpdater วัตถุโดยใช้TLVReader |
Move (void) | |
MoveUntilEnd (void) | void ย้ายทุกอย่างจาก TLVUpdater จุดอ่าน 's ปัจจุบันจนถึงสิ้นการป้อนข้อมูล TLV buffer มากกว่าการส่งออก |
Next (void) | ข้ามองค์ประกอบปัจจุบันและความก้าวหน้าของ TLVUpdater วัตถุองค์ประกอบถัดไปในการป้อนข้อมูล TLV |
Put (uint64_t tag, int8_t v) | |
Put (uint64_t tag, int16_t v) | |
Put (uint64_t tag, int32_t v) | |
Put (uint64_t tag, int64_t v) | |
Put (uint64_t tag, uint8_t v) | |
Put (uint64_t tag, uint16_t v) | |
Put (uint64_t tag, uint32_t v) | |
Put (uint64_t tag, uint64_t v) | |
Put (uint64_t tag, int8_t v, bool preserveSize) | |
Put (uint64_t tag, int16_t v, bool preserveSize) | |
Put (uint64_t tag, int32_t v, bool preserveSize) | |
Put (uint64_t tag, int64_t v, bool preserveSize) | |
Put (uint64_t tag, uint8_t v, bool preserveSize) | |
Put (uint64_t tag, uint16_t v, bool preserveSize) | |
Put (uint64_t tag, uint32_t v, bool preserveSize) | |
Put (uint64_t tag, uint64_t v, bool preserveSize) | |
Put (uint64_t tag, float v) | |
Put (uint64_t tag, double v) | |
PutBoolean (uint64_t tag, bool v) | |
PutBytes (uint64_t tag, const uint8_t *buf, uint32_t len) | |
PutNull (uint64_t tag) | |
PutString (uint64_t tag, const char *buf) | |
PutString (uint64_t tag, const char *buf, uint32_t len) | |
SetImplicitProfileId (uint32_t profileId) | void ตั้งรหัสส่วนตัวโดยปริยายสำหรับ TLVUpdater วัตถุ |
StartContainer (uint64_t tag, TLVType containerType, TLVType & outerContainerType) | |
VerifyEndOfContainer (void) |
งานสาธารณะ
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
DupString
WEAVE_ERROR DupString( char *& buf )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
EnterContainer
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
เตรียม TLVUpdater วัตถุสำหรับการอ่านองค์ประกอบของภาชนะ
นอกจากนี้ยัง encodes เริ่มต้นของวัตถุภาชนะในการส่งออก TLV
EnterContainer () วิธีการเตรียมความพร้อมในปัจจุบัน TLVUpdater วัตถุที่จะเริ่มต้นการอ่านองค์ประกอบสมาชิกของ TLV ภาชนะ (โครงสร้างอาร์เรย์หรือเส้นทาง) สำหรับการเรียกร้องให้ทุก EnterContainer () การใช้งานจะต้องทำให้การเรียกร้องที่สอดคล้องกับ ExitContainer ()
เมื่อ EnterContainer () เรียกว่า TLVUpdater ผู้อ่านจะต้องวางอยู่บนองค์ประกอบภาชนะ เมธอดนี้ใช้เป็นอาร์กิวเมนต์ในการอ้างอิงถึงค่า TLVType ซึ่งจะใช้เพื่อบันทึกบริบทของตัวอัปเดตในขณะที่กำลังอ่านคอนเทนเนอร์
เมื่อ EnterContainer () วิธีการผลตอบแทนที่อัพเดทอยู่ในตำแหน่งทันทีก่อนที่จะเป็นสมาชิกคนแรกของภาชนะ ซ้ำแล้วซ้ำอีกเรียก ถัดไป () จะได้เลื่อนอัพเดทผ่านสมาชิกของคอลเลกชันจนจบถึงจุดที่อัพเดทจะกลับ WEAVE_END_OF_TLV
เมื่อใบสมัครได้เสร็จสิ้นการอ่านภาชนะก็สามารถอ่านต่อองค์ประกอบหลังจากภาชนะโดยการเรียก ExitContainer () วิธีการ
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||
ส่งกลับค่า |
|
ทางออกคอนเทนเนอร์
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
เสร็จสิ้นการอ่านที่ TLV องค์ประกอบภาชนะและถอดรหัสท้ายของ TLV องค์ประกอบในการส่งออก TLV
ExitContainer () วิธีการเรียกคืนสถานะของที่ TLVUpdater วัตถุหลังจากที่โทรไป EnterContainer () สำหรับการโทรทุก EnterContainer () การใช้งานจะต้องทำให้การเรียกร้องที่สอดคล้องกับ ExitContainer () ผ่านค่าบริบทส่งกลับโดย EnterContainer () วิธีการ
เมื่อ ExitContainer () ผลตอบแทนที่ TLVUpdater ผู้อ่านอยู่ในตำแหน่งทันทีก่อนองค์ประกอบแรกที่เป็นไปตามภาชนะในการป้อนข้อมูล TLV จากจุดนี้การใช้งานสามารถเรียก ถัดไป () ล่วงหน้าผ่านองค์ประกอบใด ๆ ที่เหลือ
เมื่อ EnterContainer () ได้รับการเรียกการใช้งานสามารถเรียก ExitContainer () ในการอัพเดทที่จุดใด ๆ ในเวลาไม่คำนึงถึงว่าทุกองค์ประกอบในภาชนะพื้นฐานได้รับการอ่าน นอกจากนี้ทราบว่าโทร ExitContainer () ก่อนที่จะอ่านทุกองค์ประกอบในภาชนะที่จะส่งผลในภาชนะที่อัปเดตได้รับการตัดทอนในการส่งออก TLV
รายละเอียด | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||||||
ส่งกลับค่า |
|
จบ
WEAVE_ERROR Finalize( void )
รับ
WEAVE_ERROR Get( bool & v )
รับ
WEAVE_ERROR Get( int8_t & v )
รับ
WEAVE_ERROR Get( int16_t & v )
รับ
WEAVE_ERROR Get( int32_t & v )
รับ
WEAVE_ERROR Get( int64_t & v )
รับ
WEAVE_ERROR Get( uint8_t & v )
รับ
WEAVE_ERROR Get( uint16_t & v )
รับ
WEAVE_ERROR Get( uint32_t & v )
รับ
WEAVE_ERROR Get( uint64_t & v )
รับ
WEAVE_ERROR Get( float & v )
รับ
WEAVE_ERROR Get( double & v )
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
GetContainerType
TLVType GetContainerType( void ) const
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
GetImplicitProfileId
uint32_t GetImplicitProfileId( void )
GetLength
uint32_t GetLength( void ) const
GetLengthRead
uint32_t GetLengthRead( void ) const
GetLengthWritten
uint32_t GetLengthWritten( void )
GetReader
void GetReader( TLVReader & containerReader )
GetRemainingFreeLength
uint32_t GetRemainingFreeLength( void )
GetRemainingLength
uint32_t GetRemainingLength( void ) const
GetString
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
GetTag
uint64_t GetTag( void ) const
GetType
TLVType GetType( void ) const
ในนั้น
WEAVE_ERROR Init( uint8_t *buf, uint32_t dataLen, uint32_t maxLen )
เริ่มต้น TLVUpdater วัตถุแก้ไขบัฟเฟอร์เดียว
เมื่อวันที่เรียกวิธีการนี้ TLV ข้อมูลในบัฟเฟอร์ถูกย้ายไปยังจุดสิ้นสุดของบัฟเฟอร์และเอกชนTLVReader วัตถุจะเริ่มต้นในบัฟเฟอร์สมุนนี้ ส่วนตัวTLVWriter วัตถุยังจะเริ่มต้นบนพื้นที่ว่างที่มีอยู่ที่จุดเริ่มต้น การประยุกต์ใช้งานสามารถใช้ TLVUpdater วัตถุแยก TLV ข้อมูลและการแก้ไข / ลบองค์ประกอบที่มีอยู่หรือเพิ่มองค์ประกอบใหม่ในการเข้ารหัส
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||
ส่งกลับค่า |
|
ในนั้น
WEAVE_ERROR Init( TLVReader & aReader, uint32_t freeLen )
เริ่มต้น TLVUpdater วัตถุโดยใช้TLVReader
เมื่อวันที่เรียกวิธีการนี้ TLV ข้อมูลในบัฟเฟอร์ชี้ไปตามTLVReader ถูกย้ายจากจุดอ่านในปัจจุบันที่ส่วนท้ายของบัฟเฟอร์ ใหม่ส่วนตัวTLVReader วัตถุจะเริ่มต้นได้อ่านจากตำแหน่งใหม่นี้ในขณะที่ส่วนตัวใหม่TLVWriter วัตถุจะเริ่มต้นที่จะเขียนถึงอิสระขึ้นพื้นที่กันชน
โปรดทราบว่าถ้าTLVReader อยู่ในตำแหน่งที่มีอยู่แล้ว "กับ" องค์ประกอบก็จะได้รับการสนับสนุนออกคนแรกที่จะเริ่มต้นขององค์ประกอบว่า นอกจากนี้ทราบว่าการสนับสนุนออกนี้ทำงานได้ดีกับองค์ประกอบภาชนะเช่นถ้าTLVReader ถูกนำมาใช้แล้วจะเรียก EnterContainer () แล้วมีอะไรที่จะกลับออกไป แต่ถ้าTLVReader เป็นตำแหน่งในองค์ประกอบภาชนะและ EnterContainer () ยังไม่ได้เรียกแล้วTLVReader วัตถุได้รับการสนับสนุนออกไปยังจุดเริ่มต้นของหัวภาชนะ
อินพุตTLVReader วัตถุจะถูกทำลายก่อนที่จะกลับและการประยุกต์ใช้จะต้องไม่ทำให้การใช้งานเดียวกันกับผลตอบแทน
รายละเอียด | |||||||
---|---|---|---|---|---|---|---|
พารามิเตอร์ |
| ||||||
ส่งกลับค่า |
|
ย้าย
WEAVE_ERROR Move( void )
สำเนาองค์ประกอบปัจจุบันจากการป้อนข้อมูล TLV การส่งออก TLV
ย้าย () วิธีการสำเนาองค์ประกอบปัจจุบันซึ่งมีการ TLVUpdater 'ผู้อ่านอยู่ในตำแหน่งเพื่อ TLVUpdater ' s นักเขียน โปรแกรมประยุกต์ที่ควรจะเรียก ถัดไป () และตำแหน่ง TLVUpdater 's อ่านบนองค์ประกอบก่อนที่จะเรียกวิธีการนี้ เช่นเดียวกับ TLVReader :: ถัดไป () วิธีการนี้หากผู้อ่านที่อยู่ในตำแหน่งในองค์ประกอบภาชนะที่เวลาของการโทรที่สมาชิกทุกคนในภาชนะที่จะถูกคัดลอก หากผู้อ่านไม่ได้วางตำแหน่งบนองค์ประกอบใด ๆ จะไม่มีอะไรเปลี่ยนแปลงในการเรียกวิธีนี้
รายละเอียด | |||||||||
---|---|---|---|---|---|---|---|---|---|
ส่งกลับค่า |
|
MoveUntilEnd
void MoveUntilEnd( void )
ย้ายทุกอย่างจาก TLVUpdater จุดอ่าน 's ปัจจุบันจนถึงสิ้นการป้อนข้อมูล TLV buffer มากกว่าการส่งออก
วิธีการนี้จะสนับสนุนการเคลื่อนย้ายทุกอย่างจาก TLVUpdater จุดอ่านในปัจจุบันจนถึงสิ้นของผู้อ่าน buffer ไป TLVUpdater 's นักเขียน
ต่อไป
WEAVE_ERROR Next( void )
ข้ามองค์ประกอบปัจจุบันและความก้าวหน้าของ TLVUpdater วัตถุองค์ประกอบถัดไปในการป้อนข้อมูล TLV
ถัดไป () วิธีการข้ามองค์ประกอบปัจจุบันในการป้อนข้อมูล TLV และก้าวหน้า TLVUpdater 's ผู้อ่านไปยังองค์ประกอบถัดไปที่อยู่ในบริบทบรรจุเดียวกัน โดยเฉพาะอย่างยิ่งถ้าผู้อ่านที่อยู่ในตำแหน่งในระดับมากที่สุดด้านนอกของ TLV เข้ารหัสเรียก ถัดไป () จะเลื่อนไปยังถัดไปด้านบนองค์ประกอบที่สุด หากผู้อ่านที่อยู่ในตำแหน่งภายใน TLV องค์ประกอบภาชนะ (โครงสร้างอาร์เรย์หรือเส้นทาง) เรียก ถัดไป () จะเลื่อนไปยังองค์ประกอบสมาชิกต่อไปของภาชนะ
ตั้งแต่ ถัดไป () จำกัด การเคลื่อนไหวอ่านบริบทบรรจุปัจจุบันเรียก ถัดไป () เมื่อผู้อ่านอยู่ในตำแหน่งในองค์ประกอบภาชนะที่จะได้เลื่อนมากกว่าภาชนะข้ามองค์ประกอบสมาชิก (และสมาชิกของตู้คอนเทนเนอร์ซ้อนกันใด ๆ ) จนกว่าจะถึงครั้งแรก องค์ประกอบหลังภาชนะ
เมื่อไม่มีองค์ประกอบต่อไปในบริบทการบรรจุโดยเฉพาะ ถัดไป () วิธีการจะกลับ WEAVE_END_OF_TLV ข้อผิดพลาดและตำแหน่งของผู้อ่านจะยังคงไม่เปลี่ยนแปลง
รายละเอียด | |||||
---|---|---|---|---|---|
ส่งกลับค่า |
|
พุท
WEAVE_ERROR Put( uint64_t tag, int8_t v )
พุท
WEAVE_ERROR Put( uint64_t tag, int16_t v )
พุท
WEAVE_ERROR Put( uint64_t tag, int32_t v )
พุท
WEAVE_ERROR Put( uint64_t tag, int64_t v )
พุท
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
พุท
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
พุท
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
พุท
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
พุท
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
พุท
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
พุท
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
พุท
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
พุท
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
พุท
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
พุท
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
พุท
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 )
พุทบูลีน
l10n-placeholder=56PutBytes
l10n-placeholder=57PutNull
l10n-placeholder=58PutString
l10n-placeholder=59PutString
l10n-placeholder=60SetImplicitProfileId
l10n-placeholder=61ตั้งรหัสส่วนตัวโดยปริยายสำหรับวัตถุ TLVUpdater
วิธีการนี้จะกำหนดรหัสโปรไฟล์โดยปริยายสำหรับวัตถุ TLVUpdater เมื่ออัพเดทจะถูกขอให้เข้ารหัสองค์ประกอบใหม่ถ้า ID รายละเอียดของแท็กที่เกี่ยวข้องกับองค์ประกอบใหม่ตรงกับค่าของ profileId ที่อัพเดทจะเข้ารหัสในรูปแบบแท็กนัยจึงไม่ใส่รหัสโปรไฟล์ในกระบวนการ
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|