nl:: বুনা:: TLV:: TLVReader

#include <src/lib/core/WeaveTLV.h>

Weave TLV ফর্ম্যাটে এনকোড করা ডেটার জন্য একটি মেমরি দক্ষ পার্সার প্রদান করে।

সারসংক্ষেপ

TLVReader ওয়েভ TLV ডেটার জন্য শুধুমাত্র ফরওয়ার্ড, "পুল-স্টাইল" পার্সার প্রয়োগ করে। TLVReader অবজেক্ট একটি কার্সার হিসাবে কাজ করে যা TLV উপাদানগুলির একটি ক্রম পুনরাবৃত্তি করতে এবং তাদের বিষয়বস্তু ব্যাখ্যা করতে ব্যবহার করা যেতে পারে। যখন একটি উপাদানের উপর অবস্থান করা হয়, তখন অ্যাপ্লিকেশনগুলি বর্তমান উপাদানের ধরন এবং ট্যাগ অনুসন্ধান করতে এবং সংশ্লিষ্ট মান বের করতে পাঠকের Get() পদ্ধতিতে কল করতে পারে। পাঠকের নেক্সট() পদ্ধতিটি উপাদান থেকে উপাদানে অগ্রসর হতে ব্যবহৃত হয়।

একটি TLVReader অবজেক্ট সর্বদা একটি TLV উপাদানের আগে, উপর বা পরে অবস্থান করে। যখন প্রথম শুরু করা হয়, তখন একটি TLVReader এনকোডিংয়ের প্রথম উপাদানের ঠিক আগে অবস্থান করে। পড়া শুরু করার জন্য, একটি অ্যাপ্লিকেশানকে অবশ্যই নেক্সট() পদ্ধতিতে একটি প্রাথমিক কল করতে হবে যাতে প্রথম উপাদানটিতে পাঠককে অবস্থান করতে হয়। যখন একটি ধারক উপাদান একটি কাঠামোর সম্মুখীন হয়, একটি অ্যারে বা একটি পথ , OpenContainer() বা EnterContainer() পদ্ধতিগুলি কন্টেইনারের বিষয়বস্তুর মাধ্যমে পুনরাবৃত্তি করতে ব্যবহার করা যেতে পারে।

পাঠক যখন একটি TLV এনকোডিংয়ের শেষে বা একটি কন্টেইনারের মধ্যে শেষ উপাদানটিতে পৌঁছায়, তখন এটি Next() পদ্ধতি থেকে একটি WEAVE_END_OF_TLV ত্রুটি ফিরিয়ে দিয়ে অ্যাপ্লিকেশনটিকে সংকেত দেয়। পাঠক WEAVE_END_OF_TLV ফেরত দেওয়া চালিয়ে যাবে যতক্ষণ না এটি পুনরায় চালু করা হয়, বা বর্তমান ধারকটি প্রস্থান না হয় ( CloseContainer() / ExitContainer() এর মাধ্যমে)।

একটি TLVReader অবজেক্ট সরাসরি একটি নির্দিষ্ট ইনপুট বাফার থেকে বা এক বা একাধিক প্যাকেটবাফারের চেইন থেকে ডেটা পার্স করতে পারে। অতিরিক্তভাবে, অ্যাপ্লিকেশনগুলি একটি নির্বিচারে উত্স থেকে পাঠকের কাছে ডেটা ফিড করার জন্য একটি GetNextBuffer ফাংশন সরবরাহ করতে পারে, যেমন একটি সকেট বা সিরিয়াল পোর্ট।

উত্তরাধিকার

সরাসরি পরিচিত সাবক্লাস:
  nl::Weave::Profiles::DataManagement_Current::CircularEventReader
  nl::Weave::TLV::CircularTLVReader

পাবলিক প্রকার

GetNextBufferFunct )(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
একটি ফাংশন যা পার্স করার জন্য অতিরিক্ত TLV ডেটা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে।

পাবলিক বৈশিষ্ট্য

AppData
void *
একটি পয়েন্টার ক্ষেত্র যা অ্যাপ্লিকেশন-নির্দিষ্ট ডেটার জন্য ব্যবহার করা যেতে পারে।
GetNextBuffer
একটি ফাংশনের একটি পয়েন্টার যা TLVReader অবজেক্টের জন্য ইনপুট ডেটা তৈরি করবে।
ImplicitProfileId
uint32_t
অন্তর্নিহিত আকারে এনকোড করা প্রোফাইল ট্যাগের জন্য ব্যবহৃত প্রোফাইল আইডি।

সুরক্ষিত বৈশিষ্ট্য

mBufEnd
const uint8_t *
mBufHandle
uintptr_t
mContainerType
mControlByte
uint16_t
mElemLenOrVal
uint64_t
mElemTag
uint64_t
mLenRead
uint32_t
mMaxLen
uint32_t
mReadPoint
const uint8_t *

পাবলিক ফাংশন

CloseContainer ( TLVReader & containerReader)
OpenContainer() এ কল করার পর একটি TLV কন্টেইনারের পড়া সম্পূর্ণ করে।
DupBytes (uint8_t *& buf, uint32_t & dataLen)
বর্তমান বাইট বা UTF8 স্ট্রিং এর মান ধারণকারী একটি বাফার বরাদ্দ করে এবং ফেরত দেয়।
DupString (char *& buf)
বর্তমান বাইট বা UTF8 স্ট্রিং এর নাল-টার্মিনেটেড মান ধারণকারী একটি বাফার বরাদ্দ করে এবং ফেরত দেয়।
EnterContainer ( TLVType & outerContainerType)
TLV কন্টেইনার উপাদানের সদস্যদের পড়ার জন্য একটি TLVReader অবজেক্ট প্রস্তুত করে।
ExitContainer ( TLVType outerContainerType)
একটি TLV কন্টেইনারের পড়া সম্পূর্ণ করে এবং কন্টেইনারের পরে উপাদানগুলি পড়ার জন্য একটি TLVReader অবজেক্ট প্রস্তুত করে।
Get (bool & v)
একটি bool টাইপ হিসাবে বর্তমান উপাদানের মান পান।
Get (int8_t & v)
একটি 8-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
Get (int16_t & v)
একটি 16-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
Get (int32_t & v)
একটি 32-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
Get (int64_t & v)
একটি 64-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
Get (uint8_t & v)
একটি 8-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
Get (uint16_t & v)
একটি 16-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
Get (uint32_t & v)
একটি 32-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
Get (uint64_t & v)
একটি 64-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
Get (float & v)
Get (double & v)
একটি দ্বিগুণ-নির্ভুল ফ্লোটিং পয়েন্ট সংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
GetBufHandle (void) const
uintptr_t
GetBytes (uint8_t *buf, uint32_t bufSize)
বর্তমান বাইট বা UTF8 স্ট্রিং উপাদানের মান পান।
GetContainerType (void) const
TLVReader বর্তমানে যে কন্টেইনারটি পড়ছে তার ধরন প্রদান করে।
GetControlByte (void) const
uint16_t
বর্তমান TLV উপাদানের সাথে সম্পর্কিত নিয়ন্ত্রণ বাইট প্রদান করে।
GetDataPtr (const uint8_t *& data)
একটি TLV বাইট বা UTF8 স্ট্রিং উপাদানের প্রাথমিক এনকোড করা বাইটের জন্য একটি পয়েন্টার পান।
GetLength (void) const
uint32_t
বর্তমান TLV উপাদানের সাথে যুক্ত ডেটার দৈর্ঘ্য প্রদান করে।
GetLengthRead (void) const
uint32_t
পাঠক শুরু হওয়ার পর থেকে পড়া মোট বাইট সংখ্যা প্রদান করে।
GetReadPoint (void) const
const uint8_t *
পাঠকের বর্তমান অবস্থানের সাথে সঙ্গতিপূর্ণ অন্তর্নিহিত ইনপুট বাফারে পয়েন্ট পায়।
GetRemainingLength (void) const
uint32_t
সর্বাধিক পঠিত দৈর্ঘ্য না পৌঁছানো পর্যন্ত মোট বাইটের সংখ্যা প্রদান করে।
GetString (char *buf, uint32_t bufSize)
একটি নাল টার্মিনেটেড স্ট্রিং হিসাবে বর্তমান বাইট বা UTF8 স্ট্রিং উপাদানের মান পান।
GetTag (void) const
uint64_t
বর্তমান TLV উপাদানের সাথে যুক্ত ট্যাগ প্রদান করে।
GetType (void) const
বর্তমান TLV উপাদানের ধরন প্রদান করে।
Init (const TLVReader & aReader)
void
অন্য TLVReader অবজেক্ট থেকে একটি TLVReader অবজেক্ট শুরু করে।
Init (const uint8_t *data, uint32_t dataLen)
void
একটি একক ইনপুট বাফার থেকে পড়ার জন্য একটি TLVReader অবজেক্ট শুরু করে।
Init ( PacketBuffer *buf, uint32_t maxLen)
void
একটি একক প্যাকেটবাফার থেকে পড়ার জন্য একটি TLVReader অবজেক্ট শুরু করে।
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
এক বা একাধিক প্যাকেটবাফার থেকে পড়ার জন্য একটি TLVReader অবজেক্ট শুরু করে।
Next (void)
TLVReader অবজেক্টকে পরবর্তী TLV এলিমেন্টে অগ্রসর করে যা পড়তে হবে।
Next ( TLVType expectedType, uint64_t expectedTag)
TLVReader অবজেক্টকে পরবর্তী TLV এলিমেন্টের দিকে অগ্রসর করে, নতুন এলিমেন্টের ধরন এবং ট্যাগ নিশ্চিত করে।
OpenContainer ( TLVReader & containerReader)
একটি TLV কন্টেইনার উপাদানের সদস্যদের পড়ার জন্য একটি নতুন TLVReader অবজেক্ট শুরু করে।
Skip (void)
TLVReader অবজেক্টকে বর্তমান TLV উপাদানের পরপরই অগ্রসর করে।
VerifyEndOfContainer (void)
TVLReader অবজেক্টটি একটি TLV কন্টেইনারের শেষে রয়েছে তা যাচাই করে।

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

ClearElementState (void)
void
TLVReader এর অবস্থা সাফ করুন।
ElementType (void) const
TLVElementType
এটি একটি ব্যক্তিগত পদ্ধতি যা mControlByte থেকে TLVElementType প্রদান করে।
EnsureData ( WEAVE_ERROR noDataErr)
GetElementHeadLength (uint8_t & elemHeadBytes) const
এটি একটি ব্যক্তিগত পদ্ধতি যা একটি TLV উপাদান মাথার দৈর্ঘ্য গণনা করতে ব্যবহৃত হয়।
IsContainerOpen (void) const
bool
ReadData (uint8_t *buf, uint32_t len)
ReadElement (void)
ReadTag (TLVTagControl tagControl, const uint8_t *& p)
uint64_t
SetContainerOpen (bool aContainerOpen)
void
SkipData (void)
কোনো গন্তব্য বাফার ছাড়াই এটি পড়ে বর্তমান TLV- তে থাকা যেকোনো ডেটা এড়িয়ে যান।
SkipToEndOfContainer (void)
VerifyElement (void)

সুরক্ষিত স্ট্যাটিক ফাংশন

FailGetNextBuffer ( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
GetNextPacketBuffer ( TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)

পাবলিক প্রকার

GetNextBufferFunct

WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)

একটি ফাংশন যা পার্স করার জন্য অতিরিক্ত TLV ডেটা পুনরুদ্ধার করতে ব্যবহার করা যেতে পারে।

এই ধরনের ফাংশন একটি TLVReader ইনপুট ডেটা ফিড করতে ব্যবহৃত হয়। যখন কল করা হয়, ফাংশনটি পাঠককে পার্স করতে বা পাঠককে সংকেত দেওয়ার জন্য অতিরিক্ত ডেটা তৈরি করবে বলে আশা করা হয় যে আর কোনও ডেটা উপলব্ধ নেই৷

বিস্তারিত
পরামিতি
[in] reader
TLVReader অবজেক্টের একটি রেফারেন্স যা ইনপুট ডেটার অনুরোধ করছে।
[in,out] bufHandle
একটি uintptr_t মানের একটি রেফারেন্স যা ফাংশনটি কলগুলির মধ্যে প্রসঙ্গ ডেটা সংরক্ষণ করতে ব্যবহার করতে পারে। এই মানটি প্রথম কলের আগে 0 তে আরম্ভ করা হয়।
[in,out] bufStart
একটি তথ্য পয়েন্টার একটি রেফারেন্স. ফাংশনে প্রবেশ করার সময়, bufStart রিডার দ্বারা গ্রাস করা শেষ TLV ডেটা বাইটের বাইরে একটি বাইট নির্দেশ করে। প্রস্থান করার সময়, bufStart পার্স করার জন্য নতুন TLV ডেটার প্রথম বাইট নির্দেশ করবে বলে আশা করা হচ্ছে। নতুন পয়েন্টার মান পূর্বে ব্যবহৃত ডেটার মতো একই বাফারের মধ্যে হতে পারে বা এটি সম্পূর্ণ নতুন বাফারের দিকে নির্দেশ করতে পারে।
[out] bufLen
একটি স্বাক্ষরবিহীন পূর্ণসংখ্যার একটি রেফারেন্স যেটি ফাংশনটিকে অবশ্যই TLV ডেটা বাইটের সংখ্যায় সেট করতে হবে। যদি ইনপুট TLV ডেটা শেষ হয়ে যায়, ফাংশনটি এই মানটি 0 এ সেট করা উচিত।
রিটার্ন মান
WEAVE_NO_ERROR
যদি ফাংশনটি সফলভাবে আরও TLV ডেটা তৈরি করে, বা ইনপুট ডেটা শেষ হয়ে যায় ( এই ক্ষেত্রে bufLen 0 এ সেট করা উচিত)।
other
অন্যান্য ওয়েভ বা প্ল্যাটফর্ম-নির্দিষ্ট ত্রুটি কোডগুলি নির্দেশ করে যে অনুরোধ করা ডেটা তৈরি করতে ফাংশনটিকে বাধা দিতে একটি ত্রুটি ঘটেছে৷

পাবলিক বৈশিষ্ট্য

অ্যাপ্লিকেশন তথ্য

void * AppData

একটি পয়েন্টার ক্ষেত্র যা অ্যাপ্লিকেশন-নির্দিষ্ট ডেটার জন্য ব্যবহার করা যেতে পারে।

GetNextBuffer

GetNextBufferFunct GetNextBuffer

একটি ফাংশনের একটি পয়েন্টার যা TLVReader অবজেক্টের জন্য ইনপুট ডেটা তৈরি করবে।

NULL (ডিফল্ট মান) তে সেট করা হলে, পাঠক অনুমান করবে যে আর কোন ইনপুট ডেটা উপলব্ধ নেই।

GetNextBuffer যে কোনো সময়ে একটি অ্যাপ্লিকেশন দ্বারা সেট করা যেতে পারে, কিন্তু সাধারণত যখন পাঠক শুরু হয় তখন সেট করা হয়।

একটি GetNextBuffer ফাংশন বাস্তবায়নের অতিরিক্ত তথ্যের জন্য GetNextBufferFunct প্রকারের সংজ্ঞা দেখুন।

অন্তর্নিহিত প্রোফাইল আইডি

uint32_t ImplicitProfileId

অন্তর্নিহিত আকারে এনকোড করা প্রোফাইল ট্যাগের জন্য ব্যবহৃত প্রোফাইল আইডি।

পাঠক যখন একটি প্রোফাইল-নির্দিষ্ট ট্যাগের মুখোমুখি হয় যা অন্তর্নিহিত আকারে এনকোড করা হয়েছে, তখন এটি ট্যাগের জন্য অনুমান করা প্রোফাইল আইডি হিসাবে ImplicitProfileId সম্পত্তির মান ব্যবহার করে।

ডিফল্টরূপে, ImplicitProfileId বৈশিষ্ট্য kProfileIdNotSpecified এ সেট করা আছে। TLV ডিকোড করার সময় যাতে অন্তর্নিহিত-এনকোড করা ট্যাগ থাকে, অ্যাপ্লিকেশনগুলিকে অবশ্যই ImplicitProfileId সেট করতে হবে এই ধরনের ট্যাগ থাকা কোনো TLV উপাদান পড়ার আগে। উপযুক্ত প্রোফাইল আইডি সাধারণত অ্যাপ্লিকেশন বা প্রোটোকলের প্রেক্ষাপটের উপর নির্ভর করে।

ImplicitProfileId kProfileIdNotSpecified এ সেট করার সময় যদি একটি অন্তর্নিহিত-এনকোডেড ট্যাগের সম্মুখীন হয়, তাহলে পাঠক একটি WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG ত্রুটি ফিরিয়ে দেবে।

সুরক্ষিত বৈশিষ্ট্য

mBufEnd

const uint8_t * mBufEnd

mBufHandle

uintptr_t mBufHandle

mContainerType

TLVType mContainerType

mControlByte

uint16_t mControlByte

mElemLenOrVal

uint64_t mElemLenOrVal

mElemTag

uint64_t mElemTag

mLenRead

uint32_t mLenRead

mMaxLen

uint32_t mMaxLen

mReadPoint

const uint8_t * mReadPoint

পাবলিক ফাংশন

ক্লোজ কনটেইনার

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

OpenContainer() এ কল করার পর একটি TLV কন্টেইনারের পড়া সম্পূর্ণ করে।

CloseContainer() পদ্ধতি OpenContainer() এ কল করার পরে একটি প্যারেন্ট TLVReader অবজেক্টের অবস্থা পুনরুদ্ধার করে। OpenContainer() অ্যাপ্লিকেশানগুলিতে প্রতিটি কলের জন্য অবশ্যই CloseContainer() এ একটি অনুরূপ কল করতে হবে, উভয় পদ্ধতিতে একই কন্টেইনার রিডারের একটি রেফারেন্স পাস করে।

যখন CloseContainer() ফিরে আসে, তখন প্যারেন্ট রিডারটি কন্টেইনার অনুসরণকারী প্রথম উপাদানটির ঠিক আগে অবস্থান করে। এই বিন্দু থেকে একটি অ্যাপ্লিকেশন পরবর্তী () পদ্ধতি ব্যবহার করে অবশিষ্ট উপাদানগুলির মাধ্যমে অগ্রসর হতে পারে।

অন্তর্নিহিত কন্টেইনারের সমস্ত উপাদান পড়া হয়েছে কিনা তা নির্বিশেষে, অ্যাপ্লিকেশনগুলি যে কোনও সময়ে একটি অভিভাবক পাঠকের কাছে ক্লোজ কন্টেইনার() কল করতে পারে৷ CloseContainer() কল করার পরে, অ্যাপ্লিকেশনটিকে কন্টেইনার রিডারকে 'ডি-ইনিশিয়ালাইজড' বিবেচনা করা উচিত এবং এটিকে পুনরায় আরম্ভ না করে ব্যবহার করা উচিত নয়।

বিস্তারিত
পরামিতি
[in] containerReader
TLVReader অবজেক্টের একটি রেফারেন্স যা OpenContainer() পদ্ধতিতে সরবরাহ করা হয়েছিল।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_INCORRECT_STATE
যদি OpenContainer() রিডারে কল করা না হয়, অথবা যদি কন্টেইনার রিডার OpenContainer() পদ্ধতিতে পাস করা একটির সাথে মেলে না।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
WEAVE_ERROR_INVALID_TLV_ELEMENT
যদি পাঠক একটি অবৈধ বা অসমর্থিত TLV উপাদান প্রকারের সম্মুখীন হয়।
WEAVE_ERROR_INVALID_TLV_TAG
যদি পাঠক একটি অবৈধ প্রসঙ্গে একটি TLV ট্যাগের সম্মুখীন হন।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

ডুপবাইটস

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

বর্তমান বাইট বা UTF8 স্ট্রিং এর মান ধারণকারী একটি বাফার বরাদ্দ করে এবং ফেরত দেয়।

এই পদ্ধতিটি একটি বাফার তৈরি করে এবং বর্তমান অবস্থানে বাইট বা UTF-8 স্ট্রিং উপাদানের সাথে সম্পর্কিত ডেটার একটি অনুলিপি প্রদান করে। বাফারের জন্য মেমরি malloc() দিয়ে প্রাপ্ত করা হয় এবং যখন আর প্রয়োজন হয় না তখন কলার দ্বারা free() দিয়ে মুক্ত করা উচিত।

বিস্তারিত
পরামিতি
[out] buf
একটি পয়েন্টারের একটি রেফারেন্স যেখানে dataLen বাইটের একটি হিপ-বরাদ্দ বাফার সাফল্যের উপর বরাদ্দ করা হবে।
[out] dataLen
সাফল্যের উপর buf এর আকার, বাইটে, স্টোরেজের একটি রেফারেন্স।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV বাইট বা UTF8 স্ট্রিং না হয়, অথবা পাঠক একটি উপাদানে অবস্থান না করে।
WEAVE_ERROR_NO_MEMORY
যদি আউটপুট বাফারের জন্য মেমরি বরাদ্দ করা যায় না।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
যদি লক্ষ্য প্ল্যাটফর্ম malloc() এবং free() সমর্থন না করে।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

ডুপস্ট্রিং

WEAVE_ERROR DupString(
  char *& buf
)

বর্তমান বাইট বা UTF8 স্ট্রিং এর নাল-টার্মিনেটেড মান ধারণকারী একটি বাফার বরাদ্দ করে এবং ফেরত দেয়।

এই পদ্ধতিটি একটি বাফার তৈরি করে এবং বর্তমান অবস্থানে বাইট বা UTF-8 স্ট্রিং উপাদানের সাথে যুক্ত ডেটার একটি নাল-টার্মিনেটেড কপি ফেরত দেয়। বাফারের জন্য মেমরি malloc() দিয়ে প্রাপ্ত করা হয় এবং যখন আর প্রয়োজন হয় না তখন কলার দ্বারা free() দিয়ে মুক্ত করা উচিত।

বিস্তারিত
পরামিতি
[out] buf
একটি পয়েন্টারের একটি রেফারেন্স যেখানে সাফল্যের উপর একটি হিপ-বরাদ্দ বাফার বরাদ্দ করা হবে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV বাইট বা UTF8 স্ট্রিং না হয়, অথবা পাঠক একটি উপাদানে অবস্থান না করে।
WEAVE_ERROR_NO_MEMORY
যদি আউটপুট বাফারের জন্য মেমরি বরাদ্দ করা যায় না।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
যদি লক্ষ্য প্ল্যাটফর্ম malloc() এবং free() সমর্থন না করে।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

এন্টার কন্টেইনার

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

TLV কন্টেইনার উপাদানের সদস্যদের পড়ার জন্য একটি TLVReader অবজেক্ট প্রস্তুত করে।

EnterContainer() পদ্ধতিটি বর্তমান TLVReader অবজেক্টকে একটি TLV ধারক (একটি কাঠামো, অ্যারে বা পথ) এর সদস্য উপাদানগুলি পড়তে শুরু করে। EnterContainer() অ্যাপ্লিকেশনে প্রতিটি কলের জন্য ExitContainer() এ একটি সংশ্লিষ্ট কল করতে হবে।

যখন EnterContainer() বলা হয় তখন TLVReader অবজেক্টকে অবশ্যই কন্টেইনার এলিমেন্টে পঠিত হতে হবে। পদ্ধতিটি একটি যুক্তি হিসাবে একটি TLVType মানের একটি রেফারেন্স নেয় যা কন্টেইনার পড়ার সময় পাঠকের প্রসঙ্গ সংরক্ষণ করতে ব্যবহৃত হবে।

যখন EnterContainer() পদ্ধতিটি ফিরে আসে, তখন পাঠকটি কন্টেইনারের প্রথম সদস্যের ঠিক আগে অবস্থান করে। বারবার Next() কল করা পাঠককে সংগ্রহের সদস্যদের মাধ্যমে শেষ না হওয়া পর্যন্ত এগিয়ে নিয়ে যাবে, এই সময়ে পাঠক WEAVE_END_OF_TLV ফিরে আসবে।

একবার অ্যাপ্লিকেশনটি একটি কন্টেইনার পড়া শেষ করলে এটি ExitContainer() পদ্ধতিতে কল করে কন্টেইনারের পরে উপাদানগুলি পড়া চালিয়ে যেতে পারে।

বিস্তারিত
পরামিতি
[out] outerContainerType
একটি TLVType মানের একটি রেফারেন্স যা পাঠকের প্রসঙ্গটি পাবে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_INCORRECT_STATE
যদি বর্তমান উপাদানটি একটি ধারক উপাদানের উপর অবস্থিত না হয়।

প্রস্থান কন্টেইনার

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

একটি TLV কন্টেইনারের পড়া সম্পূর্ণ করে এবং কন্টেইনারের পরে উপাদানগুলি পড়ার জন্য একটি TLVReader অবজেক্ট প্রস্তুত করে।

ExitContainer() পদ্ধতি EnterContainer() এ কল করার পরে একটি TLVReader অবজেক্টের অবস্থা পুনরুদ্ধার করে। EnterContainer() অ্যাপ্লিকেশনে প্রতিটি কলের জন্য অবশ্যই ExitContainer() এ একটি সংশ্লিষ্ট কল করতে হবে, EnterContainer() পদ্ধতি দ্বারা প্রত্যাবর্তিত প্রসঙ্গ মানটি পাস করে।

যখন ExitContainer() ফিরে আসে, তখন পাঠকটি কন্টেইনার অনুসরণকারী প্রথম উপাদানটির ঠিক আগে অবস্থান করে। এই বিন্দু থেকে একটি অ্যাপ্লিকেশন পরবর্তী () পদ্ধতি ব্যবহার করে অবশিষ্ট উপাদানগুলির মাধ্যমে অগ্রসর হতে পারে।

একবার EnterContainer() কল করা হলে, অন্তর্নিহিত কন্টেইনারের সমস্ত উপাদান পড়া হয়েছে কিনা তা নির্বিশেষে অ্যাপ্লিকেশনগুলি যেকোনো সময়ে পাঠককে ExitContainer() কল করতে পারে।

বিস্তারিত
পরামিতি
[in] outerContainerType
TLVType মান যা EnterContainer() পদ্ধতি দ্বারা ফেরত দেওয়া হয়েছিল।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_INCORRECT_STATE
যদি OpenContainer() রিডারে কল করা না হয়, অথবা যদি কন্টেইনার রিডার OpenContainer() পদ্ধতিতে পাস করা একটির সাথে মেলে না।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
WEAVE_ERROR_INVALID_TLV_ELEMENT
যদি পাঠক একটি অবৈধ বা অসমর্থিত TLV উপাদান প্রকারের সম্মুখীন হয়।
WEAVE_ERROR_INVALID_TLV_TAG
যদি পাঠক একটি অবৈধ প্রসঙ্গে একটি TLV ট্যাগের সম্মুখীন হন।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

পাওয়া

WEAVE_ERROR Get(
  bool & v
)

একটি bool টাইপ হিসাবে বর্তমান উপাদানের মান পান।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV বুলিয়ান টাইপ না হয়, বা পাঠক একটি উপাদানে অবস্থান না করে।

পাওয়া

WEAVE_ERROR Get(
  int8_t & v
)

একটি 8-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV পূর্ণসংখ্যার প্রকার না হয় (স্বাক্ষরিত বা স্বাক্ষরবিহীন), বা পাঠক একটি উপাদানের উপর অবস্থিত না হয়।

পাওয়া

WEAVE_ERROR Get(
  int16_t & v
)

একটি 16-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV পূর্ণসংখ্যার প্রকার না হয় (স্বাক্ষরিত বা স্বাক্ষরবিহীন), বা পাঠক একটি উপাদানের উপর অবস্থিত না হয়।

পাওয়া

WEAVE_ERROR Get(
  int32_t & v
)

একটি 32-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV পূর্ণসংখ্যার প্রকার না হয় (স্বাক্ষরিত বা স্বাক্ষরবিহীন), বা পাঠক একটি উপাদানের উপর অবস্থিত না হয়।

পাওয়া

WEAVE_ERROR Get(
  int64_t & v
)

একটি 64-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV পূর্ণসংখ্যার প্রকার না হয় (স্বাক্ষরিত বা স্বাক্ষরবিহীন), বা পাঠক একটি উপাদানের উপর অবস্থিত না হয়।

পাওয়া

WEAVE_ERROR Get(
  uint8_t & v
)

একটি 8-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে। একইভাবে, যদি এনকোড করা পূর্ণসংখ্যার মান ঋণাত্মক হয়, তাহলে মানটি স্বাক্ষরবিহীন তে রূপান্তরিত হবে।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV পূর্ণসংখ্যার প্রকার না হয় (স্বাক্ষরিত বা স্বাক্ষরবিহীন), বা পাঠক একটি উপাদানের উপর অবস্থিত না হয়।

পাওয়া

WEAVE_ERROR Get(
  uint16_t & v
)

একটি 16-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে। একইভাবে, যদি এনকোড করা পূর্ণসংখ্যার মান ঋণাত্মক হয়, তাহলে মানটি স্বাক্ষরবিহীন তে রূপান্তরিত হবে।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV পূর্ণসংখ্যার প্রকার না হয় (স্বাক্ষরিত বা স্বাক্ষরবিহীন), বা পাঠক একটি উপাদানের উপর অবস্থিত না হয়।

পাওয়া

WEAVE_ERROR Get(
  uint32_t & v
)

একটি 32-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে। একইভাবে, যদি এনকোড করা পূর্ণসংখ্যার মান ঋণাত্মক হয়, তাহলে মানটি স্বাক্ষরবিহীন তে রূপান্তরিত হবে।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV পূর্ণসংখ্যার প্রকার না হয় (স্বাক্ষরিত বা স্বাক্ষরবিহীন), বা পাঠক একটি উপাদানের উপর অবস্থিত না হয়।

পাওয়া

WEAVE_ERROR Get(
  uint64_t & v
)

একটি 64-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

যদি এনকোড করা পূর্ণসংখ্যার মান ঋণাত্মক হয়, তাহলে মানটিকে স্বাক্ষরবিহীন তে রূপান্তর করা হবে।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV পূর্ণসংখ্যার প্রকার না হয় (স্বাক্ষরিত বা স্বাক্ষরবিহীন), বা পাঠক একটি উপাদানের উপর অবস্থিত না হয়।

পাওয়া

WEAVE_ERROR Get(
  float & v
)

পাওয়া

WEAVE_ERROR Get(
  double & v
)

একটি দ্বিগুণ-নির্ভুল ফ্লোটিং পয়েন্ট সংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।

বিস্তারিত
পরামিতি
[out] v
বর্তমান TLV উপাদানের সাথে সম্পর্কিত মান গ্রহণ করে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV ফ্লোটিং পয়েন্ট টাইপ না হয়, বা পাঠক একটি উপাদানে অবস্থান না করে।

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

বর্তমান বাইট বা UTF8 স্ট্রিং উপাদানের মান পান।

প্রয়োজনীয় ইনপুট বাফার আকার নির্ধারণ করতে, GetBytes( ) কল করার আগে GetLength() পদ্ধতিতে কল করুন।

বিস্তারিত
পরামিতি
[in] buf
স্ট্রিং ডেটা গ্রহণের জন্য একটি বাফারে একটি পয়েন্টার।
[in] bufSize
বাফারের বাইটের আকার buf দ্বারা নির্দেশিত।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV বাইট বা UTF8 স্ট্রিং না হয়, অথবা পাঠক একটি উপাদানে অবস্থান না করে।
WEAVE_ERROR_BUFFER_TOO_SMALL
যদি সরবরাহ করা বাফারটি বর্তমান উপাদানের সাথে সম্পর্কিত ডেটা ধরে রাখতে খুব ছোট হয়।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

GetContainerType

TLVType GetContainerType(
  void
) const 

TLVReader বর্তমানে যে কন্টেইনারটি পড়ছে তার ধরন প্রদান করে।

GetContainerType() পদ্ধতি TLV কন্টেইনারের ধরন প্রদান করে যার মধ্যে TLVReader পড়ছে। যদি TLVReader একটি TLV এনকোডিংয়ের বাইরের-সবচেয়ে স্তরে অবস্থান করে (যেমন বাইরের-সবচেয়ে TLV উপাদানের আগে, উপর বা পরে), পদ্ধতিটি kTLVType_NotSpecified ফেরত দেবে।

বিস্তারিত
রিটার্নস
বর্তমান ধারকটির TLVType, অথবা kTLVType_NotSpecified যদি TLVReader একটি কন্টেইনারের মধ্যে অবস্থান না করে থাকে।

GetControlByte

uint16_t GetControlByte(
  void
) const 

বর্তমান TLV উপাদানের সাথে সম্পর্কিত নিয়ন্ত্রণ বাইট প্রদান করে।

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

বিস্তারিত
রিটার্নস
বর্তমান TLV উপাদানের সাথে যুক্ত কন্ট্রোল বাইট ধারণকারী একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা। kTLVControlByte_NotSpecified ফেরত দেওয়া হয় যদি পাঠক একটি উপাদানে অবস্থান না করে।

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

একটি TLV বাইট বা UTF8 স্ট্রিং উপাদানের প্রাথমিক এনকোড করা বাইটের জন্য একটি পয়েন্টার পান।

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

বিস্তারিত
পরামিতি
[out] data
একটি কনস্ট পয়েন্টারের একটি রেফারেন্স যা অন্তর্নিহিত স্ট্রিং ডেটাতে একটি পয়েন্টার পাবে।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV বাইট বা UTF8 স্ট্রিং না হয়, অথবা পাঠক একটি উপাদানে অবস্থান না করে।
WEAVE_ERROR_TLV_UNDERRUN
যদি অন্তর্নিহিত TLV এনকোডিং সময়ের আগে শেষ হয়ে যায় বা বর্তমান স্ট্রিং উপাদানের মান একটি একক সংলগ্ন বাফারের মধ্যে না থাকে।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

দৈর্ঘ্য পান

uint32_t GetLength(
  void
) const 

বর্তমান TLV উপাদানের সাথে যুক্ত ডেটার দৈর্ঘ্য প্রদান করে।

ডেটা দৈর্ঘ্য শুধুমাত্র UTF8 স্ট্রিং বা বাইট স্ট্রিং টাইপের উপাদানগুলিতে প্রযোজ্য। UTF8 স্ট্রিং-এর জন্য, ফেরত দেওয়া মান হল স্ট্রিং-এ বাইটের সংখ্যা, অক্ষরের সংখ্যা নয়।

বিস্তারিত
রিটার্নস
বর্তমান TLV উপাদানের সাথে যুক্ত ডেটার দৈর্ঘ্য (বাইটে), অথবা বর্তমান উপাদানটি যদি UTF8 স্ট্রিং বা বাইট স্ট্রিং না হয়, অথবা যদি পাঠক কোনো উপাদানে অবস্থান না করে থাকে।

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

পাঠক শুরু হওয়ার পর থেকে পড়া মোট বাইট সংখ্যা প্রদান করে।

বিস্তারিত
রিটার্নস
পাঠক শুরু হওয়ার পর থেকে মোট পঠিত বাইট সংখ্যা।

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

পাঠকের বর্তমান অবস্থানের সাথে সঙ্গতিপূর্ণ অন্তর্নিহিত ইনপুট বাফারে পয়েন্ট পায়।

বিস্তারিত
রিটার্নস
অন্তর্নিহিত ইনপুট বাফারে একটি পয়েন্টার যা পাঠকের বর্তমান অবস্থানের সাথে মিলে যায়।

অবশিষ্ট দৈর্ঘ্য পান

uint32_t GetRemainingLength(
  void
) const 

সর্বাধিক পঠিত দৈর্ঘ্য না পৌঁছানো পর্যন্ত মোট বাইটের সংখ্যা প্রদান করে।

বিস্তারিত
রিটার্নস
সর্বাধিক পঠিত দৈর্ঘ্য না পৌঁছানো পর্যন্ত মোট বাইটের সংখ্যা।

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

একটি নাল টার্মিনেটেড স্ট্রিং হিসাবে বর্তমান বাইট বা UTF8 স্ট্রিং উপাদানের মান পান।

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

বিস্তারিত
পরামিতি
[in] buf
বাইট স্ট্রিং ডেটা গ্রহণ করার জন্য একটি বাফারে একটি পয়েন্টার।
[in] bufSize
বাফারের বাইটের আকার buf দ্বারা নির্দেশিত।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি বর্তমান উপাদানটি একটি TLV বাইট বা UTF8 স্ট্রিং না হয়, অথবা পাঠক একটি উপাদানে অবস্থান না করে।
WEAVE_ERROR_BUFFER_TOO_SMALL
যদি সরবরাহ করা বাফারটি বর্তমান উপাদানের সাথে সম্পর্কিত ডেটা ধরে রাখতে খুব ছোট হয়।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

GetTag

uint64_t GetTag(
  void
) const 

বর্তমান TLV উপাদানের সাথে যুক্ত ট্যাগ প্রদান করে।

GetTag() দ্বারা প্রত্যাবর্তিত মান ট্যাগের ধরন নির্ধারণ করতে এবং বিভিন্ন ট্যাগ ক্ষেত্রের মান বের করতে ট্যাগ ইউটিলিটি ফাংশন ( IsProfileTag() , IsContextTag() , ProfileIdFromTag() ইত্যাদির সাথে ব্যবহার করা যেতে পারে।

বিস্তারিত
রিটার্নস
বর্তমান TLV উপাদানের সাথে যুক্ত ট্যাগ সম্পর্কে তথ্য ধারণকারী একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা।

GetType

TLVType GetType(
  void
) const 

বর্তমান TLV উপাদানের ধরন প্রদান করে।

বিস্তারিত
রিটার্নস
একটি TLVType মান বর্তমান TLV উপাদানের ডেটা টাইপ বর্ণনা করে। যদি পাঠক একটি TLV উপাদানে অবস্থান না করে, তাহলে রিটার্ন মান হবে kTLVType_NotSpecified।

এটা

void Init(
  const TLVReader & aReader
)

অন্য TLVReader অবজেক্ট থেকে একটি TLVReader অবজেক্ট শুরু করে।

বিস্তারিত
পরামিতি
[in] aReader
এটি থেকে শুরু করার জন্য TLVReader- এর একটি পঠনযোগ্য রেফারেন্স।

এটা

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

একটি একক ইনপুট বাফার থেকে পড়ার জন্য একটি TLVReader অবজেক্ট শুরু করে।

বিস্তারিত
পরামিতি
[in] data
পার্স করার জন্য TLV ডেটা ধারণকারী একটি বাফারের একটি পয়েন্টার।
[in] dataLen
TLV ডেটার দৈর্ঘ্য পার্স করা হবে।

এটা

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

একটি একক প্যাকেটবাফার থেকে পড়ার জন্য একটি TLVReader অবজেক্ট শুরু করে।

পার্সিং বাফারের স্টার্ট পজিশনে শুরু হয় (buf->DataStart()) এবং বাফারের ডেটা শেষ না হওয়া পর্যন্ত চলতে থাকে (যেমন buf->Datalen() দ্বারা চিহ্নিত করা হয়েছে), অথবা maxLen বাইট পার্স করা হয়েছে।

বিস্তারিত
পরামিতি
[in] buf
পার্স করার জন্য TLV ডেটা ধারণকারী প্যাকেটবাফারের একটি পয়েন্টার।
[in] maxLen
পার্স করার জন্য সর্বাধিক বাইট। ইনপুট বাফারে ডেটার পরিমাণে ডিফল্ট।

এটা

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

এক বা একাধিক প্যাকেটবাফার থেকে পড়ার জন্য একটি TLVReader অবজেক্ট শুরু করে।

পার্সিং প্রাথমিক বাফারের স্টার্ট পজিশনে শুরু হয় ( buf->DataStart())। যদি allowDiscontiguousBuffers সত্য হয়, পাঠক তাদের নেক্সট() পয়েন্টার দ্বারা সংযুক্ত বাফারের শৃঙ্খলের মাধ্যমে অগ্রসর হবে। পার্সিং চলতে থাকে যতক্ষণ না বাফার চেইনের সমস্ত ডেটা গ্রাস করা না হয় (যেমন buf->Datalen() দ্বারা বোঝানো হয়), অথবা maxLen বাইট পার্স করা না হয়।

বিস্তারিত
পরামিতি
[in] buf
পার্স করার জন্য TLV ডেটা ধারণকারী প্যাকেটবাফারের একটি পয়েন্টার।
[in] maxLen
পার্স করার জন্য সর্বাধিক বাইট। ইনপুট বাফার শৃঙ্খলে ডেটার মোট পরিমাণে ডিফল্ট।
[in] allowDiscontiguousBuffers
সত্য হলে, বর্তমান বাফারের সমস্ত ডেটা ব্যবহার হয়ে গেলে চেইনের পরবর্তী বাফারে যান। মিথ্যা হলে, প্রাথমিক বাফারের শেষে পার্সিং বন্ধ করুন।

পরবর্তী

WEAVE_ERROR Next(
  void
)

TLVReader অবজেক্টকে পরবর্তী TLV এলিমেন্টে অগ্রসর করে যা পড়তে হবে।

নেক্সট() পদ্ধতি টিএলভি এনকোডিং-এ রিডার অবজেক্টকে পরবর্তী উপাদানে অবস্থান করে যা একই কনটেইন্টমেন্ট প্রসঙ্গে থাকে। বিশেষ করে, যদি পাঠককে একটি TLV এনকোডিংয়ের বাইরের-সবচেয়ে স্তরে অবস্থান করা হয়, তাহলে Next() কল করা পাঠককে পরবর্তী, শীর্ষ-সর্বাধিক উপাদানে নিয়ে যাবে। যদি পাঠককে একটি TLV কন্টেইনার উপাদানের (একটি কাঠামো, অ্যারে বা পথ) মধ্যে অবস্থান করা হয়, তাহলে Next() কল করা পাঠককে কন্টেইনারের পরবর্তী সদস্য উপাদানে নিয়ে যাবে।

যেহেতু নেক্সট() রিডারের গতিকে বর্তমান কন্টেইনমেন্ট প্রেক্ষাপটে সীমাবদ্ধ করে, তাই যখন রিডার একটি কন্টেইনার এলিমেন্টে অবস্থান করে তখন নেক্সট() কল করলে কন্টেইনারের উপরে অগ্রসর হবে, এর সদস্য উপাদানগুলি (এবং নেস্টেড কন্টেইনারের সদস্যদের) এড়িয়ে যাবে যতক্ষণ না এটি প্রথমটিতে পৌঁছায়। ধারক পরে উপাদান.

যখন একটি নির্দিষ্ট কন্টেনমেন্ট প্রেক্ষাপটে আর কোনো উপাদান থাকে না তখন Next() পদ্ধতিটি একটি WEAVE_END_OF_TLV ত্রুটি ফিরিয়ে দেবে এবং পাঠকের অবস্থান অপরিবর্তিত থাকবে।

বিস্তারিত
রিটার্ন মান
WEAVE_NO_ERROR
যদি পাঠক সফলভাবে একটি নতুন উপাদানের উপর অবস্থান করে।
WEAVE_END_OF_TLV
যদি আর কোন উপাদান পাওয়া না যায়।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
WEAVE_ERROR_INVALID_TLV_ELEMENT
যদি পাঠক একটি অবৈধ বা অসমর্থিত TLV উপাদান প্রকারের সম্মুখীন হয়।
WEAVE_ERROR_INVALID_TLV_TAG
যদি পাঠক একটি অবৈধ প্রসঙ্গে একটি TLV ট্যাগের সম্মুখীন হন।
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
যদি পাঠক একটি অন্তর্নিহিত-এনকোড করা TLV ট্যাগের সম্মুখীন হয় যার জন্য সংশ্লিষ্ট প্রোফাইল আইডি অজানা।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

পরবর্তী

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

TLVReader অবজেক্টকে পরবর্তী TLV এলিমেন্টের দিকে অগ্রসর করে, নতুন এলিমেন্টের ধরন এবং ট্যাগ নিশ্চিত করে।

Next(TLVType expectedType, uint64_t expectTag) পদ্ধতি হল একটি সুবিধার পদ্ধতি যা Next() এর মতো একই আচরণ করে, কিন্তু নতুন TLV উপাদানের ধরন এবং ট্যাগ সরবরাহকৃত আর্গুমেন্টের সাথে মেলে কিনা তাও যাচাই করে।

বিস্তারিত
পরামিতি
[in] expectedType
পরবর্তী উপাদানের জন্য প্রত্যাশিত ডেটা টাইপ।
[in] expectedTag
পরবর্তী উপাদানের জন্য প্রত্যাশিত ট্যাগ।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পাঠক সফলভাবে একটি নতুন উপাদানের উপর অবস্থান করে।
WEAVE_END_OF_TLV
যদি আর কোন উপাদান পাওয়া না যায়।
WEAVE_ERROR_WRONG_TLV_TYPE
যদি নতুন উপাদানের ধরন expectedType আর্গুমেন্টের মানের সাথে মেলে না।
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
যদি নতুন উপাদানের সাথে যুক্ত ট্যাগ expectedTag আর্গুমেন্টের মানের সাথে মেলে না।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
WEAVE_ERROR_INVALID_TLV_ELEMENT
যদি পাঠক একটি অবৈধ বা অসমর্থিত TLV উপাদান প্রকারের সম্মুখীন হয়।
WEAVE_ERROR_INVALID_TLV_TAG
যদি পাঠক একটি অবৈধ প্রসঙ্গে একটি TLV ট্যাগের সম্মুখীন হন।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

ওপেন কনটেইনার

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

একটি TLV কন্টেইনার উপাদানের সদস্যদের পড়ার জন্য একটি নতুন TLVReader অবজেক্ট শুরু করে।

OpenContainer() পদ্ধতিটি একটি TLV ধারক (একটি কাঠামো, অ্যারে বা পথ) এর সদস্য উপাদানগুলি পড়ার জন্য একটি নতুন TLVReader অবজেক্ট শুরু করে। যখন OpenContainer() কল করা হয়, তখন বর্তমান TLVReader অবজেক্টটি পড়ার জন্য কন্টেইনার এলিমেন্টে অবস্থান করা আবশ্যক। পদ্ধতিটি তার একমাত্র যুক্তি হিসাবে একটি নতুন পাঠকের একটি রেফারেন্স হিসাবে নেয় যা ধারকটি পড়ার জন্য আরম্ভ করা হবে। এই রিডারটিকে কন্টেইনার রিডার বলা হয় যখন যে রিডারে OpenContainer() বলা হয় তাকে প্যারেন্ট রিডার বলা হয়।

যখন OpenContainer() পদ্ধতিটি ফিরে আসে, তখন কন্টেইনার রিডারটি কন্টেইনারের প্রথম সদস্যের ঠিক আগে অবস্থান করে। কন্টেইনার রিডারে নেক্সট() কল করা সংগ্রহের সদস্যদের মাধ্যমে শেষ না হওয়া পর্যন্ত অগ্রসর হবে, এই সময়ে পাঠক WEAVE_END_OF_TLV ফিরে আসবে।

কন্টেইনার রিডার খোলা থাকাকালীন, অ্যাপ্লিকেশনগুলিকে কল করা বা অন্যথায় অভিভাবক পাঠকের অবস্থা পরিবর্তন করা উচিত নয়৷ একবার একটি অ্যাপ্লিকেশন কন্টেইনার রিডার ব্যবহার করা শেষ হয়ে গেলে, এটি অবশ্যই প্যারেন্ট রিডারে CloseContainer() কল করে, কন্টেইনার রিডারকে একটি যুক্তি হিসাবে পাস করে এটি বন্ধ করতে হবে। অ্যাপ্লিকেশনগুলি অন্তর্নিহিত কন্টেইনারে থাকা সমস্ত উপাদানগুলি পড়া সহ বা না পড়ে যে কোনও সময়ে কন্টেইনার রিডার বন্ধ করতে পারে৷ কন্টেইনার রিডার বন্ধ হওয়ার পরে, অ্যাপ্লিকেশনগুলি তাদের প্যারেন্ট রিডারের ব্যবহার চালিয়ে যেতে পারে।

কন্টেইনার রিডার প্যারেন্ট রিডার থেকে বিভিন্ন কনফিগারেশন বৈশিষ্ট্য উত্তরাধিকার সূত্রে প্রাপ্ত। এইগুলো:

  • অন্তর্নিহিত প্রোফাইল আইডি (ImplicitProfileId)
  • অ্যাপ্লিকেশন ডেটা পয়েন্টার (AppData)
  • GetNextBuffer ফাংশন পয়েন্টার

বিস্তারিত
পরামিতি
[out] containerReader
একটি TLVReader অবজেক্টের একটি রেফারেন্স যা বর্তমান কন্টেইনার উপাদানের সদস্যদের পড়ার জন্য আরম্ভ করা হবে। সরবরাহকৃত বস্তুর সাথে যুক্ত কোনো তথ্য ওভাররাইট করা হয়।
রিটার্ন মান
WEAVE_NO_ERROR
যদি পদ্ধতি সফল হয়।
WEAVE_ERROR_INCORRECT_STATE
যদি বর্তমান উপাদানটি একটি ধারক উপাদানের উপর অবস্থিত না হয়।

এড়িয়ে যান

WEAVE_ERROR Skip(
  void
)

TLVReader অবজেক্টকে বর্তমান TLV উপাদানের পরপরই অগ্রসর করে।

বাদ দিন _ _ নেক্সট() এর মতো, যদি পাঠক কলের সময় একটি কন্টেইনার উপাদানের উপর অবস্থান করে, তবে কন্টেইনারের সদস্যদের এড়িয়ে যাওয়া হবে। পাঠক কোনো উপাদানে অবস্থান না করলে তার অবস্থান অপরিবর্তিত থাকে।

বিস্তারিত
রিটার্ন মান
WEAVE_NO_ERROR
যদি পাঠক সফলভাবে একটি নতুন উপাদানের উপর অবস্থান করে।
WEAVE_END_OF_TLV
যদি আর কোন উপাদান পাওয়া না যায়।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
WEAVE_ERROR_INVALID_TLV_ELEMENT
যদি পাঠক একটি অবৈধ বা অসমর্থিত TLV উপাদান প্রকারের সম্মুখীন হয়।
WEAVE_ERROR_INVALID_TLV_TAG
যদি পাঠক একটি অবৈধ প্রসঙ্গে একটি TLV ট্যাগের সম্মুখীন হন।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

EndOfContainer যাচাই করুন

WEAVE_ERROR VerifyEndOfContainer(
  void
)

TVLReader অবজেক্টটি একটি TLV কন্টেইনারের শেষে রয়েছে তা যাচাই করে।

VerifyEndOfContainer() পদ্ধতিটি যাচাই করে যে বর্তমান TLV কন্টেইনারের মধ্যে পড়ার জন্য আর কোন TLV উপাদান নেই। এটি একটি সুবিধার পদ্ধতি যা নেক্সট() কে কল করা এবং WEAVE_END_OF_TLV এর রিটার্ন মান পরীক্ষা করার সমতুল্য।

বিস্তারিত
রিটার্ন মান
WEAVE_NO_ERROR
আর কোন TLV উপাদান না থাকলে পড়তে হবে।
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
সংগ্রহে যদি আরেকটি TLV উপাদান পাওয়া যায়।
WEAVE_ERROR_TLV_UNDERRUN
অন্তর্নিহিত TLV এনকোডিং যদি সময়ের আগেই শেষ হয়ে যায়।
WEAVE_ERROR_INVALID_TLV_ELEMENT
যদি পাঠক একটি অবৈধ বা অসমর্থিত TLV উপাদান প্রকারের সম্মুখীন হয়।
WEAVE_ERROR_INVALID_TLV_TAG
যদি পাঠক একটি অবৈধ প্রসঙ্গে একটি TLV ট্যাগের সম্মুখীন হন।
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

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

ClearElementState

void ClearElementState(
  void
)

TLVReader এর অবস্থা সাফ করুন।

এই পদ্ধতিটি প্রথম TLV- এর আগে, TLV-এর মধ্যে বা শেষ TLV- এর পরে পাঠককে অবস্থান করতে ব্যবহৃত হয়।

এলিমেন্ট টাইপ

TLVElementType ElementType(
  void
) const 

এটি একটি ব্যক্তিগত পদ্ধতি যা mControlByte থেকে TLVElementType প্রদান করে।

ডেটা নিশ্চিত করুন

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

এটি একটি ব্যক্তিগত পদ্ধতি যা একটি TLV উপাদান মাথার দৈর্ঘ্য গণনা করতে ব্যবহৃত হয়।

IsContainerOpen

bool IsContainerOpen(
  void
) const 

ডেটা পড়ুন

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

ReadElement

WEAVE_ERROR ReadElement(
  void
)

রিডট্যাগ

uint64_t ReadTag(
  TLVTagControl tagControl,
  const uint8_t *& p
)

সেট কন্টেইনার খুলুন

void SetContainerOpen(
  bool aContainerOpen
)

SkipData

WEAVE_ERROR SkipData(
  void
)

কোনো গন্তব্য বাফার ছাড়াই এটি পড়ে বর্তমান TLV- তে থাকা যেকোনো ডেটা এড়িয়ে যান।

বিস্তারিত
রিটার্ন মান
WEAVE_NO_ERROR
পাঠক সফলভাবে ডেটা শেষে অবস্থান করা হলে.
other
কনফিগার করা GetNextBuffer() ফাংশন দ্বারা ফেরত অন্যান্য বুনা বা প্ল্যাটফর্ম ত্রুটি কোড। শুধুমাত্র তখনই সম্ভব যখন GetNextBuffer নন-নাল হয়।

স্কিপটেনডোফকন্টেনার

WEAVE_ERROR SkipToEndOfContainer(
  void
)

যাচাইকরণ

WEAVE_ERROR VerifyElement(
  void
)

সুরক্ষিত স্ট্যাটিক ফাংশন

Failgetnextbuffer

WEAVE_ERROR FailGetNextBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)

Getnextpacketbuffer

WEAVE_ERROR GetNextPacketBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)