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