nl:: বুনা:: পদ্ধতি:: প্যাকেটবাফার

#include <src/system/SystemPacketBuffer.h>

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

সারসংক্ষেপ

LwIP-ভিত্তিক পরিবেশে, এই ক্লাসটি সেই লাইব্রেরিতে সংজ্ঞায়িত pbuf কাঠামোর উপরে নির্মিত। LwIP-এর অনুপস্থিতিতে, Weave হয় একটি malloc-ভিত্তিক বাস্তবায়ন, অথবা একটি পুল-ভিত্তিক বাস্তবায়ন প্রদান করে যা গভীরভাবে এম্বেড করা ডিভাইসগুলির মেমরি চ্যালেঞ্জগুলির কাছাকাছি আনুমানিকভাবে অনুমান করে।

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

প্যাকেটবাফার অবজেক্টগুলি রেফারেন্স-গণনা করা হয় এবং উইভ-এর মধ্যে প্রচলিত ব্যবহার মোড হল "ফায়ার-এন্ড-ফোরগেট"। যেহেতু প্যাকেট (এবং এর অন্তর্নিহিত প্যাকেটবাফার অবজেক্ট) বিভিন্ন প্রোটোকল স্তরের মাধ্যমে প্রেরণ করা হয়, স্তরগুলির মধ্যে সফল আপকল বা ডাউনকল মানে মালিকানা স্থানান্তর, এবং বাফারটি মুক্ত করার জন্য কলী দায়ী। একটি ক্রস-লেয়ার কল ব্যর্থ হলে, বাফার মুক্ত করার দায়িত্ব কলারের উপর বর্তায়।

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
সংরক্ষিত এবং পেলোড ডেটা স্পেস সহ বরাদ্দের আকার ফেরত দিন কিন্তু প্যাকেটবাফার কাঠামোর জন্য বরাদ্দ করা স্থান অন্তর্ভুক্ত নয়।
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)
পেলোডে ডিফল্ট সংরক্ষিত আকার ( WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE ) সহ ডিফল্ট সর্বাধিক আকারের ( WEAVE_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX ) একটি একক প্যাকেটবাফার বরাদ্দ করে৷
New (uint16_t aReservedSize)
একটি নির্দিষ্ট হেডার রিজার্ভ আকার সহ সর্বাধিক মোট আকারের একটি একক প্যাকেটবাফার বরাদ্দ করে।
NewWithAvailableSize (size_t aAvailableSize)
শিরোনামগুলির জন্য পেলোডে ডিফল্ট সংরক্ষিত আকার ( WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE ) সহ একটি প্যাকেটবাফার বরাদ্দ করে এবং প্রাথমিক কার্সার পয়েন্টারের পরে অতিরিক্ত ডেটার জন্য কমপক্ষে একটি aAllocSize বাইট স্থান।
NewWithAvailableSize (uint16_t aReservedSize, size_t aAvailableSize)
শিরোনামগুলির জন্য পেলোডে সংরক্ষিত কমপক্ষে aReservedSize বাইট সহ একটি PacketBuffer অবজেক্ট বরাদ্দ করে, এবং প্রাথমিক কার্সার পয়েন্টারের পরে অতিরিক্ত ডেটার জন্য কমপক্ষে একটি aAllocSize বাইট স্থান।
RightSize ( PacketBuffer *aPacket)
প্রযোজ্য হলে প্রদত্ত বাফারটি একটি ডান-আকারের বাফারে অনুলিপি করুন।

পাবলিক ফাংশন

AddRef

void AddRef(
  void
)

বর্তমান বাফারের রেফারেন্স কাউন্ট বৃদ্ধি করুন।

AddToEnd

void AddToEnd(
  PacketBuffer *aPacket
)

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

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

সারিবদ্ধ পেলোড

bool AlignPayload(
  uint16_t aAlignBytes
)

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

প্রয়োজনে বাফারে পেলোডকে এগিয়ে নিয়ে যাওয়া।

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

AllocSize

size_t AllocSize(
  void
) const 

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

বিস্তারিত
রিটার্নস
বরাদ্দের আকার

উপলভ্য ডেটা দৈর্ঘ্য

uint16_t AvailableDataLength(
  void
) const 

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

বিস্তারিত
রিটার্নস
বর্তমান স্টার্ট পজিশন এবং ডাটার দৈর্ঘ্য বিবেচনা করে বর্তমান বাফারে ফিট করা ডেটার দৈর্ঘ্য, বাইটে।

কমপ্যাক্টহেড

void CompactHead(
  void
)

চেইনের পরবর্তী বাফার থেকে ডেটা বর্তমান বাফারে সরান যতক্ষণ না এটি পূর্ণ হয়।

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

গ্রাস করা

PacketBuffer * Consume(
  uint16_t aConsumeLength
)

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

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

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

কনজিউমহেড

void ConsumeHead(
  uint16_t aConsumeLength
)

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

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

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

ডেটা দৈর্ঘ্য

uint16_t DataLength(
  void
) const 

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

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

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

PacketBuffer * DetachTail(
  void
)

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

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

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

সংরক্ষিত আকার নিশ্চিত করুন

bool EnsureReservedSize(
  uint16_t aReservedSize
)

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

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

বিস্তারিত
পরামিতি
[in] 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
)

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

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

বিস্তারিত
পরামিতি
[in] aNewLen
- নতুন দৈর্ঘ্য, বাইটে, এই বাফারের।
[in,out] aChainHead
- বর্তমান বাফারের অন্তর্গত বাফার চেইনের প্রধান। বর্তমান বাফার যদি বাফার চেইনের প্রধান হয় তাহলে NULL হতে পারে।

সেট স্টার্ট

void SetStart(
  uint8_t *aNewStart
)

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

বিস্তারিত
পরামিতি
[in] aNewStart
- একটি পয়েন্টার যেখানে নতুন পেলোড শুরু করা উচিত। NewStart প্যাকেটবাফার চেইনের প্রথম বাফারের সীমানার মধ্যে পড়ার জন্য অভ্যন্তরীণভাবে সামঞ্জস্য করা হবে।

শুরু করুন

uint8_t * Start(
  void
) const 

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

বিস্তারিত
রিটার্নস
তথ্যের শুরুতে নির্দেশক।

মোট দৈর্ঘ্য

uint16_t TotalLength(
  void
) const 

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

বিস্তারিত
রিটার্নস
মোট দৈর্ঘ্য, অক্টেটে।

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

বিনামূল্যে

void Free(
  PacketBuffer *aPacket
)

একটি শৃঙ্খলে সমস্ত প্যাকেট বাফার বিনামূল্যে.

বর্তমান চেইনের সমস্ত বাফারে রেফারেন্স গণনা হ্রাস করুন। রেফারেন্স গণনা 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
)

পেলোডে ডিফল্ট সংরক্ষিত আকার ( WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE ) সহ ডিফল্ট সর্বাধিক আকারের ( WEAVE_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX ) একটি একক প্যাকেটবাফার বরাদ্দ করে৷

সংরক্ষিত আকার ( WEAVE_SYSTEM_CONFIG_HEADER_RESERVE_SIZE ) ট্রান্সপোর্ট লেয়ার হেডারের পাশাপাশি WeaveMessageLayer এবং WeaveExchangeLayer এর জন্য প্রয়োজনীয় শিরোনামগুলি ধরে রাখার জন্য যথেষ্ট বড়।

নতুন

PacketBuffer * New(
  uint16_t aReservedSize
)

একটি নির্দিষ্ট হেডার রিজার্ভ আকার সহ সর্বাধিক মোট আকারের একটি একক প্যাকেটবাফার বরাদ্দ করে।

যে প্যারামিটারটি পাস করা হয়েছে তা হল বিভিন্ন স্ট্যাক স্তর থেকে প্যাকেট শিরোনামগুলিকে সামঞ্জস্য করার জন্য পেলোডের আগে সংরক্ষিত আকার, বরাদ্দ করার জন্য বাফারের সামগ্রিক আকার নয় । বাফারের আকার WEAVE_SYSTEM_CONFIG_PACKETBUFFER_CAPACITY_MAX এবং নয়, কলে নির্দিষ্ট করা আছে৷

  • PacketBuffer::New(0) : এই পদ্ধতিতে কল করা হলে, কোনো হেডার সংরক্ষিত ছাড়াই বাফারটি ফেরত দেওয়া হবে, ফলস্বরূপ পুরো পেলোডটি কলারের দ্বারা ব্যবহারযোগ্য। এই প্যাটার্নটি নেটওয়ার্কিং স্ট্যাকের নীচের স্তরগুলিতে বিশেষভাবে উপযোগী, যেখানে ব্যবহারকারী জানেন যে পেলোডটি উপযুক্ত হেডার রিজার্ভ সহ চূড়ান্ত বার্তায় অনুলিপি করা হবে বা PacketBuffer তৈরি করতে যা PacketBuffer::AddToEnd() এর মাধ্যমে PacketBuffer- এর একটি শৃঙ্খলে সংযুক্ত করা হয়। PacketBuffer::AddToEnd() পরামিতি
    [in] aReservedSize
    রিজার্ভ করার জন্য হেডার স্পেসের পরিমাণ।
    রিটার্নস
    সাফল্যের উপর, প্যাকেটবাফারে একটি নির্দেশক, ব্যর্থতার উপর NULL

NewWithAvailableSize

PacketBuffer * NewWithAvailableSize(
  size_t aAvailableSize
)

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

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

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

NewWithAvailableSize

PacketBuffer * NewWithAvailableSize(
  uint16_t aReservedSize,
  size_t aAvailableSize
)

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

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

সঠিক আকার

PacketBuffer * RightSize(
  PacketBuffer *aPacket
)

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

এই ফাংশন সকেট জন্য একটি নো-অপ.

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