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 ขนาดเริ่มต้นสูงสุด 1 ขนาด (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 )
ใช้ข้อมูลในเชนบัฟเฟอร์
ใช้ข้อมูลในเชนของบัฟเฟอร์ที่เริ่มต้นด้วยบัฟเฟอร์ปัจจุบันและดำเนินการต่อผ่านบัฟเฟอร์ที่เหลืออยู่ในห่วงโซ่ บัฟเฟอร์แต่ละรายการที่ใช้จนหมดจะถูกเพิ่มพื้นที่ว่าง และฟังก์ชันจะแสดงผลบัฟเฟอร์แรก (หากมี) ที่มีข้อมูลที่เหลืออยู่ บัฟเฟอร์ปัจจุบันต้องเป็นส่วนหัวของบัฟเฟอร์เชน
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การคืนสินค้า |
บัฟเฟอร์แรกจากห่วงโซ่ปัจจุบันที่มีข้อมูลเหลืออยู่ หากไม่มีข้อมูลเหลืออยู่ ระบบจะแสดงผลค่าว่าง
|
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 ขนาดเริ่มต้นสูงสุด 1 ขนาด (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 )
คัดลอกบัฟเฟอร์ที่ให้ไว้ไปยังบัฟเฟอร์ขนาดที่ถูกต้อง หากมี
ฟังก์ชันนี้ไม่มีการดำเนินการสำหรับซ็อกเก็ต
รายละเอียด | |||
---|---|---|---|
พารามิเตอร์ |
|
||
การคืนสินค้า |
บัฟเฟอร์แพ็กเก็ตใหม่หรือบัฟเฟอร์เดิม
|