nl:: Weave:: System:: PacketBuffer
#include <src/system/SystemPacketBuffer.h>
คลาสบัฟเฟอร์ของแพ็กเก็ตเป็นโครงสร้างหลักที่ใช้สำหรับจัดการแพ็กเก็ตของข้อมูลซีเรียลออคเต็ต ซึ่งโดยปกติจะใช้ในบริบทของเครือข่ายการสื่อสารข้อมูล เช่น บลูทูธหรือโปรโตคอลอินเทอร์เน็ต
สรุป
ในสภาพแวดล้อมที่ใช้ LwIP คลาสนี้สร้างขึ้นจากโครงสร้าง pbuf ที่กำหนดไว้ในไลบรารีนั้น เมื่อไม่มี LwIP แล้ว Weave ก็จัดให้มีการติดตั้งใช้งานแบบ Malloc หรือการใช้งานแบบพูลที่ตอบสนองต่อปัญหาด้านหน่วยความจำของอุปกรณ์ที่ฝังอยู่ในเชิงลึกได้ใกล้เคียงเป็นอย่างมาก
คลาส PacketBuffer มีกลไกในการจองพื้นที่สำหรับส่วนหัวของโปรโตคอลในแต่ละเลเยอร์ของสแต็กการสื่อสารที่กำหนดค่าได้ เช่นเดียวกับโครงสร้างที่คล้ายกันจำนวนมากที่ใช้ในสแต็กเครือข่ายแบบเลเยอร์ ดูรายละเอียดได้ที่ PacketBuffer::New()
และเอกสาร LwIP
ออบเจ็กต์ PacketBuffer จะนับเป็นการอ้างอิง และโหมดการใช้งานทั่วไปภายใน Weave คือ "ยิงแล้วไม่ออก" เนื่องจากแพ็กเก็ต (และออบเจ็กต์ PacketBuffer ที่อยู่ด้านล่าง) มีการส่งผ่านเลเยอร์โปรโตคอลต่างๆ การเรียกอัปเซลหรือดาวน์ที่ประสบความสำเร็จระหว่างเลเยอร์จะหมายถึงการโอนการเป็นเจ้าของ และผู้ที่เรียกกลับมีหน้าที่ปลดบัฟเฟอร์ หากการโทรข้ามเลเยอร์ล้มเหลว หน้าที่รับผิดชอบในการเตรียมบัฟเฟอร์ให้ว่างจะขึ้นอยู่กับผู้โทร
ออบเจ็กต์ใหม่ของคลาส PacketBuffer จะเริ่มต้นที่จุดเริ่มต้นของการจัดสรรหน่วยความจำที่ได้รับจากสภาพแวดล้อมพื้นฐาน เช่น จากพูลเป้าหมาย LwIP pbuf, จากฮีปไลบรารี C มาตรฐานจากพูลบัฟเฟอร์ภายใน โดยทั่วไปแล้ว ขนาดของบัฟเฟอร์ข้อมูลคือ WEAVE_SYSTEM_PACKETBUFFER_SIZE มีคอมโพสเซอร์ที่อนุญาตให้ใช้บัฟเฟอร์ข้อมูลขนาดอื่นๆ
ออบเจ็กต์ PacketBuffer อาจผูกอยู่เพื่อรองรับเพย์โหลดที่มากขึ้น อย่างไรก็ตาม การทำเชนไม่โปร่งใส และผู้ใช้ในชั้นเรียนจะต้องตัดสินใจอย่างชัดเจนว่าจะรองรับการทำเชน ตัวอย่างชั้นเรียนที่เขียนขึ้นพร้อมด้วยการสนับสนุนแบบเชนมีดังนี้
@ref nl::Weave::WeaveTLVReader @ref nl::Weave::WeaveTLVWriter
การสืบทอด
รับค่าจาก: pbuf
ฟังก์ชันสาธารณะ |
|
---|---|
AddRef(void)
|
void
เพิ่มจำนวนการอ้างอิงของบัฟเฟอร์ปัจจุบัน
|
AddToEnd(PacketBuffer *aPacket)
|
void
เพิ่มบัฟเฟอร์แพ็กเก็ตที่ให้ไว้ที่ส่วนท้ายของห่วงโซ่บัฟเฟอร์ แล้วปรับความยาวรวมของบัฟเฟอร์แต่ละชุดในเชนให้สอดคล้องกัน
|
AlignPayload(uint16_t aAlignBytes)
|
bool
ปรับเพย์โหลดบัฟเฟอร์ในขอบเขตไบต์ที่ระบุ
|
AllocSize(void) const
|
size_t
แสดงขนาดของการจัดสรรซึ่งรวมถึงพื้นที่ข้อมูลที่สงวนไว้และเพย์โหลด แต่ไม่รวมพื้นที่ที่จัดสรรสำหรับโครงสร้าง PacketBuffer
|
AvailableDataLength(void) const
|
uint16_t
ดูจำนวนไบต์ของข้อมูลที่สามารถเพิ่มลงในบัฟเฟอร์ปัจจุบันได้ตามตำแหน่งเริ่มต้นปัจจุบันและความยาวของข้อมูล
|
CompactHead(void)
|
void
ย้ายข้อมูลจากบัฟเฟอร์ที่ตามมาในเชนไปยังบัฟเฟอร์ปัจจุบันจนกว่าจะเต็ม
|
Consume(uint16_t aConsumeLength)
|
ใช้ข้อมูลในเชนบัฟเฟอร์
|
ConsumeHead(uint16_t aConsumeLength)
|
void
ปรับบัฟเฟอร์ปัจจุบันเพื่อระบุปริมาณข้อมูลที่ใช้
|
DataLength(void) const
|
uint16_t
รับความยาวของข้อมูลในบัฟเฟอร์แพ็กเก็ตเป็นไบต์
|
DetachTail(void)
|
ถอดบัฟเฟอร์ปัจจุบันออกจากเชนและส่งตัวชี้ไปยังบัฟเฟอร์ที่เหลืออยู่
|
EnsureReservedSize(uint16_t aReservedSize)
|
bool
ตรวจสอบว่าบัฟเฟอร์มีพื้นที่ที่จองไว้อย่างน้อยเท่ากับจำนวนที่ระบุไว้
|
MaxDataLength(void) const
|
uint16_t
รับปริมาณข้อมูลสูงสุดในหน่วยไบต์ที่จะพอดีกับบัฟเฟอร์ตามตำแหน่งเริ่มต้นปัจจุบันและขนาดบัฟเฟอร์
|
Next(void) const
|
รับตัวชี้ไปยังบัฟเฟอร์ถัดไปในเชน
|
ReservedSize(void) const
|
uint16_t
ดูจำนวนไบต์ภายในบัฟเฟอร์ปัจจุบันระหว่างจุดเริ่มต้นของบัฟเฟอร์และตำแหน่งเริ่มต้นข้อมูลปัจจุบัน
|
SetDataLength(uint16_t aNewLen, PacketBuffer *aChainHead)
|
void
กำหนดความยาวเป็นไบต์ของข้อมูลในบัฟเฟอร์ และปรับความยาวรวมให้สอดคล้องกัน
|
SetStart(uint8_t *aNewStart)
|
void
กำหนดข้อมูลเริ่มต้นในบัฟเฟอร์ ปรับความยาวและความยาวรวมให้สอดคล้องกัน
|
Start(void) const
|
uint8_t *
รับตัวชี้ไปยังจุดเริ่มต้นข้อมูลในบัฟเฟอร์
|
TotalLength(void) const
|
uint16_t
รับข้อมูลความยาวรวมของข้อมูลแพ็กเก็ตในห่วงโซ่บัฟเฟอร์
|
ฟังก์ชันแบบคงที่แบบสาธารณะ |
|
---|---|
Free(PacketBuffer *aPacket)
|
void
ปล่อยบัฟเฟอร์แพ็กเก็ตทั้งหมดในเชน
|
FreeHead(PacketBuffer *aPacket)
|
ปล่อยบัฟเฟอร์แรกในเชนโดยส่งตัวชี้ไปยังบัฟเฟอร์ที่เหลือ
|
New(void)
|
จัดสรร PacketBuffer ของขนาดสูงสุดที่เป็นค่าเริ่มต้น (WEAVE_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX) ที่มีขนาดเริ่มต้นที่สงวนไว้ (WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE) ในเพย์โหลด
|
New(uint16_t aReservedSize)
|
จัดสรร PacketBuffer ที่มีขนาดโดยรวมสูงสุดรายการเดียวซึ่งมีขนาดการจองส่วนหัวที่เฉพาะเจาะจง
|
NewWithAvailableSize(size_t aAvailableSize)
|
จัดสรร PacketBuffer ที่มีขนาดเริ่มต้นที่สงวนไว้ (WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE) ในเพย์โหลดสำหรับส่วนหัว และมีพื้นที่ว่างอย่างน้อย
aAllocSize ไบต์สำหรับข้อมูลเพิ่มเติมหลังจากตัวชี้เคอร์เซอร์เริ่มต้น |
NewWithAvailableSize(uint16_t aReservedSize, size_t aAvailableSize)
|
จัดสรรออบเจ็กต์ PacketBuffer ที่สงวนไว้อย่างน้อย
aReservedSize ไบต์ในเพย์โหลดสำหรับส่วนหัว และมีพื้นที่ว่างอย่างน้อย aAllocSize ไบต์สำหรับข้อมูลเพิ่มเติมหลังจากตัวชี้เคอร์เซอร์เริ่มต้น |
RightSize(PacketBuffer *aPacket)
|
คัดลอกบัฟเฟอร์ที่ให้ไว้ไปยังบัฟเฟอร์ที่มีขนาดเหมาะสม (หากมี)
|
ฟังก์ชันสาธารณะ
AddRef
void AddRef( void )
เพิ่มจำนวนการอ้างอิงของบัฟเฟอร์ปัจจุบัน
AddToEnd
void AddToEnd( PacketBuffer *aPacket )
เพิ่มบัฟเฟอร์แพ็กเก็ตที่ให้ไว้ที่ส่วนท้ายของห่วงโซ่บัฟเฟอร์ แล้วปรับความยาวรวมของบัฟเฟอร์แต่ละชุดในเชนให้สอดคล้องกัน
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
AlignPayload
bool AlignPayload( uint16_t aAlignBytes )
ปรับเพย์โหลดบัฟเฟอร์ในขอบเขตไบต์ที่ระบุ
การย้ายเพย์โหลดในบัฟเฟอร์ไปข้างหน้าหากจำเป็น
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การส่งคืน |
true หากปรับตำแหน่งสำเร็จ false หากมีพื้นที่ว่างในบัฟเฟอร์ไม่เพียงพอ |
AllocSize
size_t AllocSize( void ) const
แสดงขนาดของการจัดสรรซึ่งรวมถึงพื้นที่ข้อมูลที่สงวนไว้และเพย์โหลด แต่ไม่รวมพื้นที่ที่จัดสรรสำหรับโครงสร้าง PacketBuffer
รายละเอียด | |
---|---|
การส่งคืน |
ขนาดของการจัดสรร
|
AvailableDataLength
uint16_t AvailableDataLength( void ) const
ดูจำนวนไบต์ของข้อมูลที่สามารถเพิ่มลงในบัฟเฟอร์ปัจจุบันได้ตามตำแหน่งเริ่มต้นปัจจุบันและความยาวของข้อมูล
รายละเอียด | |
---|---|
การส่งคืน |
ความยาวของข้อมูลในหน่วยไบต์ที่จะพอดีกับบัฟเฟอร์ปัจจุบัน โดยพิจารณาจากตำแหน่งเริ่มต้นปัจจุบันและความยาวของข้อมูล
|
CompactHead
void CompactHead( void )
ย้ายข้อมูลจากบัฟเฟอร์ที่ตามมาในเชนไปยังบัฟเฟอร์ปัจจุบันจนกว่าจะเต็ม
บีบอัดเฉพาะบัฟเฟอร์ปัจจุบันเท่านั้น: ข้อมูลภายในบัฟเฟอร์ปัจจุบันจะถูกย้ายไปยังหน้าบัฟเฟอร์ ทำให้มีพื้นที่ว่างที่สงวนไว้ พื้นที่ว่างที่เหลือจะได้รับการเติมด้วยข้อมูลที่ย้ายจากบัฟเฟอร์ครั้งต่อๆ ไปในเชน จนกว่าบัฟเฟอร์ปัจจุบันจะเต็ม หากมีการย้ายบัฟเฟอร์ที่ตามมาในเชนไปยังบัฟเฟอร์ปัจจุบันทั้งหมด ระบบจะนำบัฟเฟอร์นั้นออกจากเชนและปล่อยเป็นอิสระ เมธอดนี้ไม่ใช้พารามิเตอร์ ไม่แสดงผลลัพธ์ และไม่สามารถล้มเหลวได้
บริโภค
PacketBuffer * Consume( uint16_t aConsumeLength )
ใช้ข้อมูลในเชนบัฟเฟอร์
ใช้ข้อมูลในเชนบัฟเฟอร์โดยเริ่มจากบัฟเฟอร์ปัจจุบัน และดำเนินการผ่านบัฟเฟอร์ที่เหลืออยู่ในเชน บัฟเฟอร์แต่ละบัฟเฟอร์ที่ใช้ไปแล้วจะถูกปลดออกและฟังก์ชันจะแสดงผลบัฟเฟอร์แรก (หากมี) ที่มีข้อมูลที่เหลืออยู่ บัฟเฟอร์ปัจจุบันต้องเป็นส่วนหัวของห่วงโซ่บัฟเฟอร์
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การส่งคืน |
บัฟเฟอร์แรกจากเชนปัจจุบันที่มีข้อมูลที่เหลืออยู่ หากไม่มีข้อมูลเหลืออยู่ ระบบจะแสดงผล NULL
|
ConsumeHead
void ConsumeHead( uint16_t aConsumeLength )
ปรับบัฟเฟอร์ปัจจุบันเพื่อระบุปริมาณข้อมูลที่ใช้
เลื่อนตำแหน่งเริ่มต้นของข้อมูลในบัฟเฟอร์ปัจจุบันตามจำนวนที่ระบุเป็นไบต์จนถึงความยาวของข้อมูลในบัฟเฟอร์ ลดความยาวและความยาวรวมตามปริมาณที่ใช้
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
DataLength
uint16_t DataLength( void ) const
รับความยาวของข้อมูลในบัฟเฟอร์แพ็กเก็ตเป็นไบต์
รายละเอียด | |
---|---|
การส่งคืน |
ความยาวในหน่วยไบต์ (ความยาวเพย์โหลดปัจจุบัน)
|
DetachTail
PacketBuffer * DetachTail( void )
ถอดบัฟเฟอร์ปัจจุบันออกจากเชนและส่งตัวชี้ไปยังบัฟเฟอร์ที่เหลืออยู่
บัฟเฟอร์ปัจจุบันต้องเป็นส่วนหัวของเชน
รายละเอียด | |
---|---|
การส่งคืน |
หางของบัฟเฟอร์เชนปัจจุบันหรือ NULL หากบัฟเฟอร์ปัจจุบันเป็นบัฟเฟอร์เดียวในห่วงโซ่
|
EnsureReservedSize
bool EnsureReservedSize( uint16_t aReservedSize )
ตรวจสอบว่าบัฟเฟอร์มีพื้นที่ที่จองไว้อย่างน้อยเท่ากับจำนวนที่ระบุไว้
ตรวจสอบว่าบัฟเฟอร์มีพื้นที่ที่จองไว้อย่างน้อยเท่ากับจำนวนที่ระบุไว้ซึ่งย้ายข้อมูลในบัฟเฟอร์ไปด้านหน้าเพื่อเพิ่มพื้นที่หากจำเป็น
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การส่งคืน |
true หากมีขนาดที่จองไว้ตามที่ขอ false หากมีที่ว่างในบัฟเฟอร์ไม่เพียงพอ |
MaxDataLength
uint16_t MaxDataLength( void ) const
รับปริมาณข้อมูลสูงสุดในหน่วยไบต์ที่จะพอดีกับบัฟเฟอร์ตามตำแหน่งเริ่มต้นปัจจุบันและขนาดบัฟเฟอร์
รายละเอียด | |
---|---|
การส่งคืน |
จำนวนไบต์ที่พอดีกับบัฟเฟอร์ตามตำแหน่งเริ่มต้นปัจจุบัน
|
ถัดไป
PacketBuffer * Next( void ) const
รับตัวชี้ไปยังบัฟเฟอร์ถัดไปในเชน
รายละเอียด | |
---|---|
การส่งคืน |
ตัวชี้ไปยังบัฟเฟอร์ถัดไปในเชน ระบบจะแสดงผล
NULL เมื่อไม่มีบัฟเฟอร์ในเชน |
ReservedSize
uint16_t ReservedSize( void ) const
ดูจำนวนไบต์ภายในบัฟเฟอร์ปัจจุบันระหว่างจุดเริ่มต้นของบัฟเฟอร์และตำแหน่งเริ่มต้นข้อมูลปัจจุบัน
รายละเอียด | |
---|---|
การส่งคืน |
ปริมาณพื้นที่ระหว่างจุดเริ่มต้นของบัฟเฟอร์กับตำแหน่งเริ่มข้อมูลปัจจุบันเป็นจำนวนในหน่วยไบต์
|
SetDataLength
void SetDataLength( uint16_t aNewLen, PacketBuffer *aChainHead )
กำหนดความยาวเป็นไบต์ของข้อมูลในบัฟเฟอร์ และปรับความยาวรวมให้สอดคล้องกัน
ฟังก์ชันดังกล่าวจะกำหนดความยาวของข้อมูลในบัฟเฟอร์เป็นไบต์โดยปรับความยาวรวมอย่างเหมาะสม เมื่อบัฟเฟอร์ไม่ใช่ส่วนหัวของห่วงโซ่บัฟเฟอร์ (กรณีทั่วไปคือ ผู้โทรเพิ่มข้อมูลลงในบัฟเฟอร์สุดท้ายในห่วงโซ่ PacketBuffer ก่อนที่จะเรียกเลเยอร์ที่สูงขึ้น) มีการส่ง aChainHead ต้องเข้ามาเพื่อปรับความยาวรวมของบัฟเฟอร์แต่ละบัฟเฟอร์ก่อนบัฟเฟอร์ปัจจุบันอย่างเหมาะสม
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
SetStart
void SetStart( uint8_t *aNewStart )
กำหนดข้อมูลเริ่มต้นในบัฟเฟอร์ ปรับความยาวและความยาวรวมให้สอดคล้องกัน
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
เริ่ม
uint8_t * Start( void ) const
รับตัวชี้ไปยังจุดเริ่มต้นข้อมูลในบัฟเฟอร์
รายละเอียด | |
---|---|
การส่งคืน |
ตัวชี้ไปยังจุดเริ่มต้นของข้อมูล
|
TotalLength
uint16_t TotalLength( void ) const
รับข้อมูลความยาวรวมของข้อมูลแพ็กเก็ตในห่วงโซ่บัฟเฟอร์
รายละเอียด | |
---|---|
การส่งคืน |
ความยาวรวมเป็นอ็อกเท็ต
|
ฟังก์ชันแบบคงที่แบบสาธารณะ
ฟรี
void Free( PacketBuffer *aPacket )
ปล่อยบัฟเฟอร์แพ็กเก็ตทั้งหมดในเชน
ลดจำนวนการอ้างอิงเป็นบัฟเฟอร์ทั้งหมดในเชนปัจจุบัน หากจำนวนการอ้างอิงถึง 0 ระบบจะปล่อยบัฟเฟอร์ที่เกี่ยวข้องหรือกลับไปยังพูลที่จัดสรรตามความเหมาะสม ตามกฎ ผู้ใช้ควรถือว่าวิธีการนี้เทียบเท่ากับฟังก์ชัน free()
และไม่ใช้อาร์กิวเมนต์หลังการเรียกใช้
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
FreeHead
PacketBuffer * FreeHead( PacketBuffer *aPacket )
ปล่อยบัฟเฟอร์แรกในเชนโดยส่งตัวชี้ไปยังบัฟเฟอร์ที่เหลือ
* @note When the buffer chain is referenced by multiple callers,
FreeHead()` จะปลดส่วนหัวออก แต่จะไม่บังคับให้เก็บบัฟเฟอร์ส่วนหัว
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การส่งคืน |
ห่วงโซ่บัฟเฟอร์แพ็กเก็ตที่ประกอบด้วยหางของบัฟเฟอร์อินพุต (อาจเป็น
NULL ) |
ใหม่
PacketBuffer * New( void )
จัดสรร PacketBuffer ของขนาดสูงสุดที่เป็นค่าเริ่มต้น (WEAVE_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX) ที่มีขนาดเริ่มต้นที่สงวนไว้ (WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE) ในเพย์โหลด
ขนาดที่สงวนไว้ (WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE) นั้นใหญ่พอที่จะรองรับส่วนหัวของเลเยอร์การรับส่งข้อมูล รวมถึงส่วนหัวที่จำเป็นสำหรับ WeaveMessageLayer
และ WeaveExchangeLayer
ใหม่
PacketBuffer * New( uint16_t aReservedSize )
จัดสรร PacketBuffer ที่มีขนาดโดยรวมสูงสุดรายการเดียวซึ่งมีขนาดการจองส่วนหัวที่เฉพาะเจาะจง
พารามิเตอร์ที่ส่งคือขนาดที่สงวนไว้ก่อนเพย์โหลดเพื่อรองรับส่วนหัวของแพ็กเก็ตจากสแต็กเลเยอร์ต่างๆ ไม่ใช่ขนาดโดยรวมของบัฟเฟอร์ที่จะจัดสรร ขนาดของบัฟเฟอร์ WEAVE_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX ที่ไม่ได้ระบุไว้ในการเรียกใช้
PacketBuffer::New(0)
: เมื่อเรียกด้วยวิธีนี้ ระบบจะส่งคืนบัฟเฟอร์โดยไม่มีการสงวนส่วนหัวใดๆ ทำให้ผู้เรียกใช้สามารถใช้เพย์โหลดทั้งหมดได้ รูปแบบนี้มีประโยชน์อย่างยิ่งในสแต็กเครือข่ายระดับล่าง ในกรณีที่ผู้ใช้ทราบว่าเพย์โหลดจะถูกคัดลอกลงในข้อความสุดท้ายที่มีส่วนหัวที่เหมาะสม หรือสร้าง PacketBuffer ที่ต่อท้ายสายของ PacketBuffer ผ่านPacketBuffer::AddToEnd()
พารามิเตอร์[in] aReservedSize
จำนวนพื้นที่ส่วนหัวที่จะจองเมื่อประสบความสำเร็จ ตัวชี้ไปยัง PacketBuffer เมื่อล้มเหลวNULL
NewWithAvailableSize
PacketBuffer * NewWithAvailableSize( size_t aAvailableSize )
จัดสรร PacketBuffer ที่มีขนาดเริ่มต้นที่สงวนไว้ (WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE) ในเพย์โหลดสำหรับส่วนหัว และมีพื้นที่ว่างอย่างน้อย aAllocSize
ไบต์สำหรับข้อมูลเพิ่มเติมหลังจากตัวชี้เคอร์เซอร์เริ่มต้น
การใช้งานแบบนี้เหมาะสมที่สุดเมื่อจัดสรร PacketBuffer สำหรับข้อความในเลเยอร์ของแอปพลิเคชัน
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การส่งคืน |
เมื่อประสบความสำเร็จ ตัวชี้ไปที่ PacketBuffer ในบล็อกที่จัดสรร เมื่อล้มเหลว
NULL * |
NewWithAvailableSize
PacketBuffer * NewWithAvailableSize( uint16_t aReservedSize, size_t aAvailableSize )
จัดสรรออบเจ็กต์ PacketBuffer ที่สงวนไว้อย่างน้อย aReservedSize
ไบต์ในเพย์โหลดสำหรับส่วนหัว และมีพื้นที่ว่างอย่างน้อย aAllocSize
ไบต์สำหรับข้อมูลเพิ่มเติมหลังจากตัวชี้เคอร์เซอร์เริ่มต้น
รายละเอียด | |||||
---|---|---|---|---|---|
พารามิเตอร์ |
|
||||
การส่งคืน |
เมื่อประสบความสำเร็จ ตัวชี้ไปที่ PacketBuffer ในบล็อกที่จัดสรร เมื่อล้มเหลว
NULL |
RightSize
PacketBuffer * RightSize( PacketBuffer *aPacket )
คัดลอกบัฟเฟอร์ที่ให้ไว้ไปยังบัฟเฟอร์ที่มีขนาดเหมาะสม (หากมี)
ฟังก์ชันนี้ไม่มีการดำเนินการสำหรับซ็อกเก็ต
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การส่งคืน |
บัฟเฟอร์แพ็กเกตใหม่หรือบัฟเฟอร์เดิม
|