Google is committed to advancing racial equity for Black communities. See how.

এনএল :: তাঁত :: পদ্ধতি:: প্যাকেটবাফার

#include <src/system/SystemPacketBuffer.h>

প্যাকেট বাফার ক্লাসটি সাধারণত কাঠামো বা ইন্টারনেট প্রোটোকলের মতো ডেটা যোগাযোগের নেটওয়ার্কের প্রসঙ্গে, অক্টেট-সিরিয়ালযুক্ত ডেটার প্যাকেটগুলি পরিচালনা করার জন্য ব্যবহৃত মূল কাঠামো।

সারসংক্ষেপ

এলডব্লিউআইপি-ভিত্তিক পরিবেশগুলিতে এই শ্রেণিটি সেই লাইব্রেরিতে সংজ্ঞায়িত পিবিফ কাঠামোর শীর্ষে নির্মিত। LwIP- এর অনুপস্থিতিতে, ওয়েভ হয় ম্যালোক-ভিত্তিক বাস্তবায়ন, বা একটি পুল-ভিত্তিক বাস্তবায়ন সরবরাহ করে যা গভীরভাবে এম্বেড থাকা ডিভাইসের মেমরির চ্যালেঞ্জগুলি ঘনিষ্ঠভাবে ঘনিষ্ঠ করে তোলে।

PacketBuffer বর্গ, অনেক অনুরূপ স্তরপূর্ণ নেটওয়ার্ক স্ট্যাকগুলি ব্যবহৃত কাঠামো মতো কনফিগার যোগাযোগ স্ট্যাকের প্রতিটি স্তরে এ প্রোটোকল হেডার জন্য রিজার্ভ স্থান থেকে একটি প্রক্রিয়া প্রদান। বিস্তারিত জানার জন্য দেখুন PacketBuffer::New() এবং সেইসাথে LwIP ডকুমেন্টেশন।

PacketBuffer বস্তু রেফারেন্স-গণনা, এবং বুনা মধ্যে বিরাজ ব্যবহার মোড "আগুন-এবং-ভুলে যাওয়া" হয়। হিসাবে প্যাকেট (এবং তার অন্তর্নিহিত PacketBuffer বস্তুর) বিভিন্ন প্রোটোকল স্তর মাধ্যমে প্রেষিত হয়, সফল upcall বা স্তরে মধ্যে downcall মালিকানা হস্তান্তর বোঝা, এবং callee বাফার freeing জন্য দায়ী। ক্রস-লেয়ার কল ব্যর্থ হওয়ার পরে, বাফারকে মুক্ত করার জন্য দায়বদ্ধতা কলারের সাথে থাকে।

নতুন বস্তু PacketBuffer বর্গ একটি অভ্যন্তরীণ বাফার পুকুর থেকে, LwIP pbuf লক্ষ্য পুল থেকে নিম্নাবস্থিত পরিবেশ, যেমন থেকে প্রাপ্ত মেমরির একটি বরাদ্দ শুরুতে সক্রিয়া করা হয় প্রমিত C লাইব্রেরি গাদা থেকে। সহজ যদি, ডাটা বাফারের আকার WEAVE_SYSTEM_PACKETBUFFER_SIZE । এমন একটি সুরকার সরবরাহ করা হয়েছে যা অন্য মাপের ডেটা বাফার ব্যবহারের অনুমতি দেয়।

PacketBuffer বস্তু বৃহত্তর প্লেলোডগুলি অন্তর্ভুক্ত শৃঙ্খলিত করা যেতে পারে। শৃঙ্খলা অবশ্য স্বচ্ছ নয় এবং শ্রেণীর ব্যবহারকারীদের অবশ্যই স্পষ্টতই চেইন সমর্থন করার সিদ্ধান্ত নিতে হবে। সমর্থন chaining সঙ্গে লিখিত ক্লাস উদাহরণ হিসাবে অনুসরণ করে আছেন:

@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
বর্তমান প্রারম্ভিক অবস্থান এবং বাফার আকারের সাথে বাফারে ফিট হবে এমন ডেটা সর্বাধিক পরিমাণ পান data
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
একটি চেইনে সমস্ত প্যাকেট বাফার বিনামূল্যে করুন Free
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)
যদি প্রযোজ্য হয় তবে প্রদত্ত বাফারটি একটি ডান আকারের বাফারে অনুলিপি করুন।

পাবলিক ফাংশন

অ্যাডরেফ

void AddRef(
  void
)

বর্তমান বাফার এর রেফারেন্স গণনা বৃদ্ধি করুন।

অ্যাডটোএন্ড

void AddToEnd(
  PacketBuffer *aPacket
)

বাফার চেইনের শেষে প্রদত্ত প্যাকেট বাফারটি যুক্ত করুন, সেই অনুসারে চেইনে প্রতিটি বাফারের মোট দৈর্ঘ্য সামঞ্জস্য করুন।

বিশদ
পরামিতি
[in] aPacket
- প্যাকেট বাফারটি বর্তমান চেইনের শেষে যুক্ত করা হবে।

AlignPayload

bool AlignPayload(
  uint16_t aAlignBytes
)

নির্দিষ্ট বাইটস সীমানায় বাফার পেইড সারিবদ্ধ করুন।

প্রয়োজনে পেফেলটি এগিয়ে বাফারে সরানো।

বিশদ
পরামিতি
[in] aAlignBytes
- পে-লোড শুরুর পয়েন্টারটির জন্য সংখ্যা বাইট প্রান্তিককরণ নির্দিষ্ট করে।
ফিরে আসে
true যদি প্রান্তিককরণ সফল হয়, false যদি না বাফারে অনেক ক্ষেত্র আছে।

বরাদ্দ

size_t AllocSize(
  void
) const 

সংরক্ষিত এবং পে লোড ডেটা ফাঁকা জায়গা সমেত বরাদ্দ আকার ফিরুন কিন্তু বরাদ্দ স্থান সহ না PacketBuffer কাঠামো।

বিশদ
ফিরে আসে
বরাদ্দ আকার

উপলভ্যডেটলাংথ

uint16_t AvailableDataLength(
  void
) const 

বর্তমান আরম্ভের অবস্থান এবং ডেটা দৈর্ঘ্যের ভিত্তিতে বর্তমানের বাফারে যোগ করা যেতে পারে এমন ডেটা বাইটের সংখ্যা পান।

বিশদ
ফিরে আসে
বর্তমান প্রারম্ভিক অবস্থান এবং ডেটা দৈর্ঘ্য প্রদত্ত দৈর্ঘ্য, বাইটে, ডেটা যা বর্তমান বাফারে উপযুক্ত হবে।

কমপ্যাকহিড

void CompactHead(
  void
)

শৃঙ্খলার পরবর্তী বাফারগুলি থেকে ডেটাটি সম্পূর্ণ বাফার হওয়া পর্যন্ত চলমান বাফারে সরান।

কেবলমাত্র বর্তমান বাফারকেই কমপ্যাক্ট করা হয়েছে: বর্তমান বাফারের মধ্যে থাকা ডেটা বাফারের সামনের দিকে সরানো হয়, কোনও সংরক্ষিত স্থান মুছে ফেলে। বর্তমান উপলব্ধ বাফারটি পূর্ণ না হওয়া পর্যন্ত অবশিষ্ট উপলব্ধ স্থানটি পরবর্তী বাফারগুলি থেকে চেইনে স্থানান্তরিত ডেটা দিয়ে পূর্ণ। যদি শৃঙ্খলে পরবর্তী বাফারটিকে পুরো বাফারটিতে বর্তমান বাফারে স্থানান্তরিত করা হয় তবে এটি চেইন থেকে সরানো হয় এবং মুক্ত হয়। পদ্ধতিটি কোনও পরামিতি নেয় না, কোনও ফলাফল দেয় না এবং ব্যর্থ হতে পারে না।

গ্রাস করা

PacketBuffer * Consume(
  uint16_t aConsumeLength
)

বাফারের একটি শৃঙ্খলে ডেটা গ্রহণ করুন।

বর্তমান বাফার দিয়ে শুরু করে এবং চেইনের অবশিষ্ট বাফারগুলির মধ্য দিয়ে এগিয়ে যাওয়া বাফারের একটি শৃঙ্খলে ডেটা গ্রহণ করুন। সম্পূর্ণরূপে গ্রাস করা প্রতিটি বাফার মুক্ত হয় এবং ফাংশনটি বাকী ডেটাযুক্ত প্রথম বাফার (যদি থাকে) প্রদান করে। বর্তমান বাফার অবশ্যই বাফার চেইনের প্রধান হতে হবে।

বিশদ
পরামিতি
[in] aConsumeLength
- বর্তমান চেইন থেকে ব্যবহার করতে বাইট সংখ্যা।
ফিরে আসে
বর্তমান চেইন থেকে প্রথম বাফার যা কোনও অবশিষ্ট ডেটা রয়েছে। যদি কোনও ডেটা না থেকে যায়, তবে একটি ন্যূনল ফিরিয়ে দেওয়া হবে।

কনজুমহিড

void ConsumeHead(
  uint16_t aConsumeLength
)

খরচ হওয়া ডেটার পরিমাণ নির্দেশ করতে বর্তমান বাফারটি সামঞ্জস্য করুন।

বাফারে ডেটার দৈর্ঘ্য অবধি নির্দিষ্ট পরিমাণ, বাইটে নির্দিষ্ট পরিমাণ দ্বারা বর্তমান বাফারের ডেটা শুরুর অবস্থানটি অগ্রসর করুন। ব্যয় করা পরিমাণের দ্বারা দৈর্ঘ্য এবং মোট দৈর্ঘ্য হ্রাস করুন।

বিশদ
পরামিতি
[in] aConsumeLen
- বর্তমান বাফার থেকে গ্রহণ করতে বাইট সংখ্যা।

ডাটালেন্থ th

uint16_t DataLength(
  void
) const 

প্যাকেট বাফারে ডেটার দৈর্ঘ্য, বাইটে পান।

বিশদ
ফিরে আসে
দৈর্ঘ্য, বাইটে (বর্তমান পেডলোড দৈর্ঘ্য)।

বিচ্ছিন্ন টেইল

PacketBuffer * DetachTail(
  void
)

বর্তমান বাফারটিকে তার চেইন থেকে আলাদা করুন এবং বাকী বাফারগুলিতে একটি পয়েন্টার ফিরিয়ে দিন।

বর্তমান বাফার অবশ্যই চেইনের প্রধান হতে হবে।

বিশদ
ফিরে আসে
বর্তমান বাফার চেইনের লেজ বা NULL যদি বর্তমান বাফার চেইনের একমাত্র বাফার হয়।

নিশ্চিত করুন

bool EnsureReservedSize(
  uint16_t aReservedSize
)

নিশ্চিত হয়ে নিন যে বাফারের কমপক্ষে নির্দিষ্ট পরিমাণ সংরক্ষিত জায়গার রয়েছে।

নিশ্চিত হয়ে নিন যে বাফারের কমপক্ষে নির্দিষ্ট পরিমাণ সংরক্ষিত জায়গার ডেফারটি বাফারে ডেটাটি সরানোর জন্য প্রয়োজনীয় প্রয়োজনে ঘর তৈরি করার জন্য রয়েছে।

বিশদ
পরামিতি
[in] aReservedSize
- শিরোনামগুলির জন্য পছন্দসই বাইট সংখ্যা।
ফিরে আসে
true যদি অনুরোধ সংরক্ষিত আকার পাওয়া যায়, false যদি না বাফারে অনেক ক্ষেত্র আছে।

ম্যাক্সডাটালেংথ

uint16_t MaxDataLength(
  void
) const 

বর্তমান প্রারম্ভিক অবস্থান এবং বাফার আকারের সাথে বাফারে ফিট হবে এমন ডেটা সর্বাধিক পরিমাণ পান data

বিশদ
ফিরে আসে
বর্তমান শুরু অবস্থানের ভিত্তিতে বাফারে ফিট হওয়া বাইটের সংখ্যা।

পরবর্তী

PacketBuffer * Next(
  void
) const 

চেইনে পরবর্তী বাফারের পয়েন্টার পান।

বিশদ
ফিরে আসে
চেইনের পরবর্তী বাফারের পয়েন্টার। NULL যখন সেখানে শৃঙ্খল কোন বাফার ফিরিয়ে দেওয়া হয়।

রিজার্ভড সাইজ

uint16_t ReservedSize(
  void
) const 

বাফারের শুরু এবং বর্তমান ডেটা শুরুর অবস্থানের মধ্যে বর্তমান বাফারের মধ্যে বাইটের সংখ্যা পান।

বিশদ
ফিরে আসে
বাফার শুরু এবং বর্তমান ডেটা শুরুর অবস্থানের মধ্যে স্থানের পরিমাণ by

সেটডাটা লেন্থ

void SetDataLength(
  uint16_t aNewLen,
  PacketBuffer *aChainHead
)

বাফারে ডেটার দৈর্ঘ্য, বাইটে সেট করুন, সেই অনুযায়ী মোট দৈর্ঘ্য সামঞ্জস্য করুন।

ফাংশনটি বাফারে ডেটার দৈর্ঘ্য, বাইটে, মোট দৈর্ঘ্য যথাযথভাবে সামঞ্জস্য করে। যখন বাফার বাফার শৃঙ্খল প্রধান (সাধারণ মামলা: আহ্বানকারী গত বাফার তথ্য যোগ নয় PacketBuffer পূর্বে উচ্চতর স্তর কলিং করতে শৃঙ্খল), aChainHead মধ্যে সঠিকভাবে প্রতিটি বাফার এগিয়ে মোট লেন্থ সমন্বয় প্রেরণ করা আবশ্যক বর্তমান বাফার

বিশদ
পরামিতি
[in] aNewLen
- এই বাফারের নতুন দৈর্ঘ্য, বাইটে।
[in,out] aChainHead
- বর্তমান বাফারটি বাফার চেইনের প্রধান। বর্তমান বাফার বাফার শৃঙ্খলের প্রধান হলে নুল হতে পারে।

সেটস্টার্ট

void SetStart(
  uint8_t *aNewStart
)

বাফারে প্রারম্ভিক ডেটা সেট করুন, সেই অনুযায়ী দৈর্ঘ্য এবং মোট দৈর্ঘ্য সামঞ্জস্য করুন।

বিশদ
পরামিতি
[in] aNewStart
- যেখানে নতুন পেডলোড শুরু হওয়া উচিত সেখানে একটি পয়েন্টার। newStart প্রথম বাফার সীমানা মধ্যে পড়া অভ্যন্তরীণভাবে সমন্বয় করা হবে PacketBuffer শৃঙ্খল।

শুরু করুন

uint8_t * Start(
  void
) const 

বাফারে ডেটা শুরু করার জন্য পয়েন্টার পান।

বিশদ
ফিরে আসে
ডেটা শুরুর দিকে পয়েন্টার।

মোট দৈর্ঘ্য

uint16_t TotalLength(
  void
) const 

বাফার চেইনে মোট প্যাকেট ডেটার দৈর্ঘ্য পান।

বিশদ
ফিরে আসে
মোট দৈর্ঘ্য, অক্টেটে।

পাবলিক স্ট্যাটিক ফাংশন

ফ্রি

void Free(
  PacketBuffer *aPacket
)

একটি চেইনে সমস্ত প্যাকেট বাফার বিনামূল্যে করুন Free

বর্তমান চেইনের সমস্ত বাফারগুলিতে রেফারেন্স গণনা হ্রাস করুন। যদি রেফারেন্স গণনা 0-এ পৌঁছে যায় তবে সংশ্লিষ্ট বাফারগুলি উপযুক্ত হিসাবে বরাদ্দ পুলগুলিতে মুক্তি দেওয়া বা ফিরে দেওয়া হয়। একটি নিয়ম হিসাবে, ব্যবহারকারীদের একটি সমতুল্য হিসাবে এই পদ্ধতি আচরণ করা উচিত free() ফাংশন এবং কল পর যুক্তি ব্যবহার করবেন না।

বিশদ
পরামিতি
[in] aPacket
- প্যাকেট বাফার মুক্ত করা হবে।

ফ্রিহিড

PacketBuffer * FreeHead(
  PacketBuffer *aPacket
)

প্রথম বাফারটিকে একটি শৃঙ্খলে মুক্ত করুন, বাকি বাফারগুলিতে একটি পয়েন্টার ফিরিয়ে দিন।

* @note When the buffer chain is referenced by multiple callers, FreeHead () `মাথা বিচ্ছিন্ন হবে, কিন্তু জোর করে মাথা বাফার ডি-এলোকেট করা হবে না।

বিশদ
পরামিতি
[in] aPacket
- বাফার চেইন
ফিরে আসে
প্যাকেট বাফার শৃঙ্খল ইনপুট বাফার লেজ নিয়ে গঠিত (হতে পারে 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

NewWithAv উপলভ্যত আকার

PacketBuffer * NewWithAvailableSize(
  size_t aAvailableSize
)

বরাদ্দ একটি PacketBuffer ডিফল্ট সংরক্ষিত আকার (সঙ্গে WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE হেডার জন্য পে লোড মধ্যে), এবং অন্তত aAllocSize প্রাথমিক কার্সার পয়েন্টার পর অতিরিক্ত ডেটা জায়গা সমাপ্ত বাইট।

এই ব্যবহারটি সবচেয়ে উপযুক্ত একটি বণ্টন করা হয় PacketBuffer একটি অ্যাপ্লিকেশন-স্তর বার্তাটির জন্য।

বিশদ
পরামিতি
[in] aAvailableSize
কার্সারের পরে বরাদ্দ করার জন্য অক্টেটের সংখ্যা।
ফিরে আসে
সাফল্য তারিখে, একটি পয়েন্টার PacketBuffer বরাদ্দ ব্লক হবে। উপর ব্যর্থ NULL । *

NewWithAv উপলভ্যত আকার

PacketBuffer * NewWithAvailableSize(
  uint16_t aReservedSize,
  size_t aAvailableSize
)

বরাদ্দ একটি PacketBuffer অন্তত সঙ্গে বস্তুর aReservedSize হেডার জন্য পে লোড সংরক্ষিত বাইট, এবং অন্তত aAllocSize প্রাথমিক কার্সার পয়েন্টার পর অতিরিক্ত ডেটা জায়গা সমাপ্ত বাইট।

বিশদ
পরামিতি
[in] aReservedSize
কার্সারের পিছনে সংরক্ষণ করার জন্য অক্টেটের সংখ্যা।
[in] aAvailableSize
কার্সারের পরে বরাদ্দ করার জন্য অক্টেটের সংখ্যা।
ফিরে আসে
সাফল্য তারিখে, একটি পয়েন্টার PacketBuffer বরাদ্দ ব্লক হবে। উপর ব্যর্থ NULL

সঠিক মাপ

PacketBuffer * RightSize(
  PacketBuffer *aPacket
)

যদি প্রযোজ্য হয় তবে প্রদত্ত বাফারটি একটি ডান আকারের বাফারে অনুলিপি করুন।

এই ফাংশনটি সকেটের জন্য কোনও বিকল্প নয়।

বিশদ
পরামিতি
[in] aPacket
- বাফার বা বাফার চেইন।
ফিরে আসে
নতুন প্যাকেট বাফার বা আসল বাফার