จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

nl::Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer มีพื้นที่เก็บข้อมูลแบบวงกลมสําหรับ nl::Weave::TLV::TLVWriter และ nl::Weave::TLVTLVReader

สรุป

nl::Weave::TLV::TLVWriter จะเขียนรายการ TLV แบบไม่จํากัดจํานวนไปยัง WeaveCircularTLVBuffer ได้ตราบใดที่รายการ TLV แต่ละรายการมีขนาดพอดีกับพื้นที่เก็บข้อมูลที่ระบุ nl::Weave::TLV::TLVReader จะอ่านขนาดของบัฟเฟอร์ได้มากสุด แต่จะรองรับการสรุปภายในบัฟเฟอร์

ตัวสร้างและตัวทําลาย

WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
เครื่องมือสร้าง WeaveCircularTLVBuffer
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
เครื่องมือสร้าง WeaveCircularTLVBuffer

ประเภทสาธารณะ

ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEWE_ERROR(*
ฟังก์ชันที่มีการเรียกให้ประมวลผลองค์ประกอบ TLV ก่อนที่จะขับออกจาก nl::Weave::TLV::WeaveCircularTLVBuffer

แอตทริบิวต์สาธารณะ

mAppData
void *
บริบทที่ผู้ใช้ระบุ (ไม่บังคับ) เพื่อใช้ร่วมกับการเรียกกลับสําหรับองค์ประกอบที่นําออก
mImplicitProfileId
uint32_t
mProcessEvictedElement
โค้ดเรียกกลับที่ไม่บังคับที่ผู้ใช้กรอก ซึ่งจะประมวลผลองค์ประกอบก่อนขับออกจากบัฟเฟอร์แบบวงกลม

ฟังก์ชันสาธารณะ

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
นําออกองค์ประกอบ TLV ระดับบนสุดที่เก่าที่สุดใน WeaveCircularTLVBuffer
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer จะปรับสถานะ WeaveCircularTLVBuffer เป็น "เอาต์พุตโดยสมบูรณ์" จาก TLVWriter
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
รับพื้นที่เพิ่มเติมสําหรับ TLVWriter
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
รับพื้นที่เพิ่มเติมสําหรับ TLVReader
GetQueue(void) const
uint8_t *
GetQueueSize(void) const
size_t
QueueHead(void) const
uint8_t *
QueueTail(void) const
uint8_t *
SetQueueHead(uint8_t *aQueueHead)
void
SetQueueLength(size_t aQueueLength)
void

ฟังก์ชันสาธารณะแบบคงที่

FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
แทรมโพลีนไปยัง WeaveCircularTLVBuffer::FinalizeBuffer
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
แทรมโพลีนเพื่อเรียกข้อมูลพื้นที่เพิ่มเติมสําหรับ TLVWriter
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
แทรมโพลีนไปยัง WeaveCircularTLVBuffer::GetNextBuffer

ประเภทสาธารณะ

องค์ประกอบที่ได้รับการประมวลผลกระบวนการ

WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)

ฟังก์ชันที่มีการเรียกให้ประมวลผลองค์ประกอบ TLV ก่อนที่จะขับออกจาก nl::Weave::TLV::WeaveCircularTLVBuffer

ฟังก์ชันประเภทนี้ใช้เพื่อประมวลผลองค์ประกอบ TLV ซึ่งกําลังถูกนําออกจากบัฟเฟอร์ ฟังก์ชันนี้จะแสดง nl::Weave::TLV::TLVReader ซึ่งอยู่ในตําแหน่งบนองค์ประกอบซึ่งกําลังจะถูกลบ อีกทั้งเป็นบริบท * ที่ไม่มีข้อมูลซึ่งผู้ใช้อาจให้สภาพแวดล้อมเพิ่มเติมสําหรับการเรียกกลับ หากฟังก์ชันประมวลผลองค์ประกอบเรียบร้อยแล้ว องค์ประกอบจะต้องแสดงผล WEhave_NO_ERROR ซึ่งเป็นการแสดงถึง WeaveCircularTLVBuffer ที่องค์ประกอบนั้นอาจนําออกได้อย่างปลอดภัย ค่าการแสดงผลอื่นๆ จะถือเป็นข้อผิดพลาดและจะป้องกันไม่ให้ WeaveCircularTLVBuffer นําองค์ประกอบออกภายใต้การพิจารณา

หมายเหตุ: โค้ดเรียกกลับนี้อาจใช้เพื่อบังคับให้ WeaveCircularTLVBuffer ไม่แสดงผลองค์ประกอบ วิธีการนี้เป็นประโยชน์ในหลายๆ สถานการณ์ ในกรณีที่ต้องการมีบัฟเฟอร์แบบวงกลมพื้นฐาน แต่ไม่ให้ลบล้างองค์ประกอบใดๆ ในนั้น

รายละเอียด
พารามิเตอร์
[in] inBuffer
การอ้างอิงไปยังบัฟเฟอร์การระเบิด
[in] inAppData
ตัวชี้ไปยังโครงสร้างที่ผู้ใช้ให้ไว้ มีบริบทเพิ่มเติมสําหรับการเรียกกลับ
[in] inReader
TLVReader ที่ตําแหน่งองค์ประกอบที่จะนําออก
มูลค่าการคืนสินค้า
WEAVE_NO_ERROR
เพื่อความสําเร็จ องค์ประกอบจะถูกคัดออก
other
เกิดข้อผิดพลาดระหว่างการประมวลผลเหตุการณ์ องค์ประกอบยังคงอยู่ในบัฟเฟอร์ ฟังก์ชันการเขียนที่ทริกเกอร์องค์ประกอบองค์ประกอบนี้จะล้มเหลว

แอตทริบิวต์สาธารณะ

แอปบนอุปกรณ์เคลื่อนที่

void * mAppData

บริบทที่ผู้ใช้ระบุ (ไม่บังคับ) เพื่อใช้ร่วมกับการเรียกกลับสําหรับองค์ประกอบที่นําออก

mimplicitProfileId

uint32_t mImplicitProfileId

องค์ประกอบที่ได้รับการประมวลผล

ProcessEvictedElementFunct mProcessEvictedElement

โค้ดเรียกกลับที่ไม่บังคับที่ผู้ใช้กรอก ซึ่งจะประมวลผลองค์ประกอบก่อนขับออกจากบัฟเฟอร์แบบวงกลม

ดูคําจํากัดความของประเภท ProcessEvictedElementFunct เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ฟังก์ชัน mProcessEvictedElement

ฟังก์ชันสาธารณะ

ความยาวของข้อมูลที่ใช้ได้

size_t AvailableDataLength(
  void
) const 

ความยาวของข้อมูล

size_t DataLength(
  void
) const 

หัวออก

WEAVE_ERROR EvictHead(
  void
)

นําออกองค์ประกอบ TLV ระดับบนสุดที่เก่าที่สุดใน WeaveCircularTLVBuffer

ฟังก์ชันนี้จะนําองค์ประกอบ TLV ระดับบนสุดที่เก่าที่สุดออกจากบัฟเฟอร์ ฟังก์ชันนี้จะเรียกใช้โค้ดเรียกกลับที่ลงทะเบียนไว้ที่ mProcessEvictedElement เพื่อประมวลผลองค์ประกอบก่อนการนําออก หากโค้ดเรียกกลับแสดงผลแต่ WEhave_NO_ERROR ระบบจะไม่นําองค์ประกอบออก ในทํานองเดียวกัน หากข้อผิดพลาดอื่นๆ ไม่มีองค์ประกอบใดๆ ในบัฟเฟอร์ ฯลฯ WeaveCircularTLVBuffer จะไม่เปลี่ยนแปลง

รายละเอียด
มูลค่าการคืนสินค้า
WEAVE_NO_ERROR
เพื่อความสําเร็จ
other
สําหรับข้อผิดพลาดอื่นๆ ที่แสดงผลโดยโค้ดเรียกกลับหรือ TLVReader

สรุปสุดท้าย

WEAVE_ERROR FinalizeBuffer(
  TLVWriter & ioWriter,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

FinalizeBuffer จะปรับสถานะ WeaveCircularTLVBuffer เป็น "เอาต์พุตโดยสมบูรณ์" จาก TLVWriter

ฟังก์ชันนี้จะส่งผลต่อตําแหน่งหางคิว

รายละเอียด
พารามิเตอร์
[in,out] ioWriter
TLVWriter เรียกฟังก์ชันนี้
[in] inBufStart
ชี้ไปยังจุดเริ่มต้นข้อมูล (จากมุมมอง TLVWriter)
[in] inBufLen
ความยาวของข้อมูลในบัฟเฟอร์ที่ชี้โดย inbufStart
มูลค่าการคืนสินค้า
WEAVE_NO_ERROR
ไม่มีเงื่อนไข

รับบัฟเฟอร์ใหม่

WEAVE_ERROR GetNewBuffer(
  TLVWriter & ioWriter,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

รับพื้นที่เพิ่มเติมสําหรับ TLVWriter

ในความเป็นจริง ฟังก์ชันจะเอาองค์ประกอบออกจากบัฟเฟอร์แบบวงกลมและปรับส่วนหัวของคิวบัฟเฟอร์นี้

รายละเอียด
พารามิเตอร์
[in,out] ioWriter
TLVWriter เรียกฟังก์ชันนี้
[out] outBufStart
ตัวชี้ไปยังบัฟเฟอร์ใหม่
[out] outBufLen
ความยาวที่ใช้ได้สําหรับการเขียน
มูลค่าการคืนสินค้า
WEAVE_NO_ERROR
เพื่อความสําเร็จ
other
หากฟังก์ชันไม่สามารถเลือกองค์ประกอบ TLV ระดับบนสุดที่สมบูรณ์ได้

ดาวน์โหลด NextBuffer

WEAVE_ERROR GetNextBuffer(
  TLVReader & ioReader,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

รับพื้นที่เพิ่มเติมสําหรับ TLVReader

พื้นที่เก็บข้อมูลที่มาจาก WeaveCircularTLVBuffer อาจอยู่ในบัฟเฟอร์ ฟังก์ชันนี้ช่วยให้เราจับคู่บัฟเฟอร์ที่บัฟเฟอร์กับข้อจํากัด TLVReader ได้ เครื่องอ่านจะอ่านได้ไม่เกิน mQueueSize ไบต์จากบัฟเฟอร์

รายละเอียด
พารามิเตอร์
[in] ioReader
TLVReader กําลังเรียกฟังก์ชันนี้
[in,out] outBufStart
การอ้างอิงไปยังบัฟเฟอร์ข้อมูล และจะแสดงค่าภายในบัฟเฟอร์นี้เมื่อคืนสินค้า
[out] outBufLen
เมื่อกลับมา ให้กําหนดจํานวนไบต์ต่อเนื่องที่อ่านออกจากบัฟเฟอร์ได้
มูลค่าการคืนสินค้า
WEAVE_NO_ERROR
ประสบความสําเร็จโดยไม่มีเงื่อนไข

รับคิว

uint8_t * GetQueue(
  void
) const 

ขนาดในคิว

size_t GetQueueSize(
  void
) const 

หัวคิว

uint8_t * QueueHead(
  void
) const 

คิวคิว

uint8_t * QueueTail(
  void
) const 

ตั้งค่าคิวส่วนหัว

void SetQueueHead(
  uint8_t *aQueueHead
)

ตั้งค่าความยาวของคิว

void SetQueueLength(
  size_t aQueueLength
)

วงเวียน Weave CircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength
)

เครื่องมือสร้าง WeaveCircularTLVBuffer

รายละเอียด
พารามิเตอร์
[in] inBuffer
ตัวชี้ไปยังร้านที่ต่อคิวของคิว
[in] inBufferLength
ความยาวในหน่วยไบต์ของร้านสํารองข้อมูล

วงเวียน Weave CircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength,
  uint8_t *inHead
)

เครื่องมือสร้าง WeaveCircularTLVBuffer

รายละเอียด
พารามิเตอร์
[in] inBuffer
ตัวชี้ไปยังร้านที่ต่อคิวของคิว
[in] inBufferLength
ความยาวในหน่วยไบต์ของร้านสํารองข้อมูล
[in] inHead
จุดเริ่มต้นของส่วนหัว เคอร์เซอร์ inHEAD ต้องอยู่ภายในร้านสํารองข้อมูลสําหรับบัฟเฟอร์แบบวงกลม กล่าวคือ ภายใน inBuffer และ &(inBuffer[inBufferLength])

ฟังก์ชันสาธารณะแบบคงที่

สรุปฟังก์ชันบัฟเฟอร์

WEAVE_ERROR FinalizeBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t inBufHandle,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

แทรมโพลีนไปยัง WeaveCircularTLVBuffer::FinalizeBuffer

รายละเอียด
พารามิเตอร์
[in,out] ioWriter
TLVWriter เรียกฟังก์ชันนี้
[in,out] inBufHandle
แฮนเดิลในออบเจ็กต์ CircularTLVWriter
[in] inBufStart
ชี้ไปยังจุดเริ่มต้นข้อมูล (จากมุมมอง TLVWriter)
[in] inBufLen
ความยาวของข้อมูลในบัฟเฟอร์ที่ชี้โดย inbufStart
มูลค่าการคืนสินค้า
WEAVE_NO_ERROR
ไม่มีเงื่อนไข

รับบัฟเฟอร์ใหม่

WEAVE_ERROR GetNewBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t & inBufHandle,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

แทรมโพลีนเพื่อเรียกข้อมูลพื้นที่เพิ่มเติมสําหรับ TLVWriter

รายละเอียด
พารามิเตอร์
[in,out] ioWriter
TLVWriter เรียกฟังก์ชันนี้
[in,out] inBufHandle
แฮนเดิลในออบเจ็กต์ CircularTLVWriter
[out] outBufStart
ตัวชี้ไปยังบัฟเฟอร์ใหม่
[out] outBufLen
ความยาวที่ใช้ได้สําหรับการเขียน
มูลค่าการคืนสินค้า
WEAVE_NO_ERROR
เพื่อความสําเร็จ
other
หากฟังก์ชันไม่สามารถเลือกองค์ประกอบ TLV ระดับบนสุดที่สมบูรณ์ได้

รับ NextBufferFunct

WEAVE_ERROR GetNextBufferFunct(
  TLVReader & ioReader,
  uintptr_t & inBufHandle,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

แทรมโพลีนไปยัง WeaveCircularTLVBuffer::GetNextBuffer

รายละเอียด
พารามิเตอร์
[in,out] ioReader
TLVReader กําลังเรียกฟังก์ชันนี้
[in,out] inBufHandle
แฮนเดิลในออบเจ็กต์ CircularTLVWriter
[in,out] outBufStart
การอ้างอิงไปยังบัฟเฟอร์ข้อมูล และจะแสดงค่าภายในบัฟเฟอร์นี้เมื่อคืนสินค้า
[out] outBufLen
เมื่อกลับมา ให้กําหนดจํานวนไบต์ต่อเนื่องที่อ่านออกจากบัฟเฟอร์ได้
มูลค่าการคืนสินค้า
WEAVE_NO_ERROR
ประสบความสําเร็จโดยไม่มีเงื่อนไข