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(*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) | |
ExitContainer ( TLVType outerContainerType) | |
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 |
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) | |
Next ( TLVType expectedType, uint64_t expectedTag) | |
OpenContainer ( TLVReader & containerReader) | |
Skip (void) | |
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 ইনপুট ডেটা ফিড করতে ব্যবহৃত হয়। যখন কল করা হয়, ফাংশনটি পাঠককে পার্স করতে বা পাঠককে সংকেত দেওয়ার জন্য অতিরিক্ত ডেটা তৈরি করবে বলে আশা করা হয় যে আর কোনও ডেটা উপলব্ধ নেই৷
বিস্তারিত | |||||||||
---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||
রিটার্ন মান |
|
পাবলিক বৈশিষ্ট্য
অ্যাপডেটা
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() কল করার পরে, অ্যাপ্লিকেশনটিকে কন্টেইনার রিডারকে 'ডি-ইনিশিয়ালাইজড' বিবেচনা করা উচিত এবং এটিকে পুনরায় আরম্ভ না করে ব্যবহার করা উচিত নয়।
বিস্তারিত | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||||||
রিটার্ন মান |
|
ডুপবাইটস
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
বর্তমান বাইট বা UTF8 স্ট্রিং এর মান ধারণকারী একটি বাফার বরাদ্দ করে এবং ফেরত দেয়।
এই পদ্ধতিটি একটি বাফার তৈরি করে এবং বর্তমান অবস্থানে বাইট বা UTF-8 স্ট্রিং উপাদানের সাথে সম্পর্কিত ডেটার একটি অনুলিপি প্রদান করে। বাফারের জন্য মেমরি malloc() দিয়ে প্রাপ্ত করা হয় এবং যখন আর প্রয়োজন হয় না তখন কলার দ্বারা free() দিয়ে মুক্ত করা উচিত।
বিস্তারিত | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||||||
রিটার্ন মান |
|
ডুপস্ট্রিং
WEAVE_ERROR DupString( char *& buf )
বর্তমান বাইট বা UTF8 স্ট্রিং এর নাল-টার্মিনেটেড মান ধারণকারী একটি বাফার বরাদ্দ করে এবং ফেরত দেয়।
এই পদ্ধতিটি একটি বাফার তৈরি করে এবং বর্তমান অবস্থানে বাইট বা UTF-8 স্ট্রিং উপাদানের সাথে যুক্ত ডেটার একটি নাল-টার্মিনেটেড কপি ফেরত দেয়। বাফারের জন্য মেমরি malloc() দিয়ে প্রাপ্ত করা হয় এবং যখন আর প্রয়োজন হয় না তখন কলার দ্বারা free() দিয়ে মুক্ত করা উচিত।
বিস্তারিত | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||||||
রিটার্ন মান |
|
এন্টার কন্টেইনার
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
TLV কন্টেইনার উপাদানের সদস্যদের পড়ার জন্য একটি TLVReader অবজেক্ট প্রস্তুত করে।
EnterContainer() পদ্ধতিটি বর্তমান TLVReader অবজেক্টকে একটি TLV ধারক (একটি কাঠামো, অ্যারে বা পথ) এর সদস্য উপাদানগুলি পড়তে শুরু করে। EnterContainer() অ্যাপ্লিকেশনে প্রতিটি কলের জন্য ExitContainer() এ একটি সংশ্লিষ্ট কল করতে হবে।
যখন EnterContainer() বলা হয় তখন TLVReader অবজেক্টকে অবশ্যই কন্টেইনার এলিমেন্টে পঠিত হতে হবে। পদ্ধতিটি একটি যুক্তি হিসাবে একটি TLVType মানের একটি রেফারেন্স নেয় যা কন্টেইনার পড়ার সময় পাঠকের প্রসঙ্গ সংরক্ষণ করতে ব্যবহৃত হবে।
যখন EnterContainer() পদ্ধতিটি ফিরে আসে, তখন পাঠকটি কন্টেইনারের প্রথম সদস্যের ঠিক আগে অবস্থান করে। বারবার Next() কল করা পাঠককে সংগ্রহের সদস্যদের মাধ্যমে শেষ না হওয়া পর্যন্ত এগিয়ে নিয়ে যাবে, এই সময়ে পাঠক WEAVE_END_OF_TLV ফিরে আসবে।
একবার অ্যাপ্লিকেশনটি একটি কন্টেইনার পড়া শেষ করলে এটি ExitContainer() পদ্ধতিতে কল করে কন্টেইনারের পরে উপাদানগুলি পড়া চালিয়ে যেতে পারে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
প্রস্থান কন্টেইনার
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
একটি TLV কন্টেইনারের পড়া সম্পূর্ণ করে এবং কন্টেইনারের পরে উপাদানগুলি পড়ার জন্য একটি TLVReader অবজেক্ট প্রস্তুত করে।
ExitContainer() পদ্ধতি EnterContainer() এ কল করার পরে একটি TLVReader অবজেক্টের অবস্থা পুনরুদ্ধার করে। EnterContainer() অ্যাপ্লিকেশনে প্রতিটি কলের জন্য অবশ্যই ExitContainer() এ একটি সংশ্লিষ্ট কল করতে হবে, EnterContainer() পদ্ধতি দ্বারা প্রত্যাবর্তিত প্রসঙ্গ মানটি পাস করে।
যখন ExitContainer() ফিরে আসে, তখন পাঠকটি কন্টেইনার অনুসরণকারী প্রথম উপাদানটির ঠিক আগে অবস্থান করে। এই বিন্দু থেকে একটি অ্যাপ্লিকেশন পরবর্তী () পদ্ধতি ব্যবহার করে অবশিষ্ট উপাদানগুলির মাধ্যমে অগ্রসর হতে পারে।
একবার EnterContainer() কল করা হলে, অন্তর্নিহিত কন্টেইনারের সমস্ত উপাদান পড়া হয়েছে কিনা তা নির্বিশেষে অ্যাপ্লিকেশনগুলি যেকোনো সময়ে পাঠককে ExitContainer() কল করতে পারে।
বিস্তারিত | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( bool & v )
পান
WEAVE_ERROR Get( int8_t & v )
একটি 8-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( int16_t & v )
একটি 16-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( int32_t & v )
একটি 32-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( int64_t & v )
একটি 64-বিট স্বাক্ষরিত পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( uint8_t & v )
একটি 8-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে। একইভাবে, যদি এনকোড করা পূর্ণসংখ্যার মান ঋণাত্মক হয়, তাহলে মানটি স্বাক্ষরবিহীন তে রূপান্তরিত হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( uint16_t & v )
একটি 16-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে। একইভাবে, যদি এনকোড করা পূর্ণসংখ্যার মান ঋণাত্মক হয়, তাহলে মানটি স্বাক্ষরবিহীন তে রূপান্তরিত হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( uint32_t & v )
একটি 32-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
যদি এনকোড করা পূর্ণসংখ্যার মানটি আউটপুট ডেটা টাইপের থেকে বড় হয় তাহলে ফলাফলের মানটি কাটা হবে। একইভাবে, যদি এনকোড করা পূর্ণসংখ্যার মান ঋণাত্মক হয়, তাহলে মানটি স্বাক্ষরবিহীন তে রূপান্তরিত হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( uint64_t & v )
একটি 64-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
যদি এনকোড করা পূর্ণসংখ্যার মান ঋণাত্মক হয়, তাহলে মানটিকে স্বাক্ষরবিহীন তে রূপান্তর করা হবে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
পান
WEAVE_ERROR Get( float & v )
পান
WEAVE_ERROR Get( double & v )
একটি দ্বিগুণ-নির্ভুল ফ্লোটিং পয়েন্ট সংখ্যা হিসাবে বর্তমান উপাদানটির মান পান।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
GetBufHandle
uintptr_t GetBufHandle( void ) const
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
বর্তমান বাইট বা UTF8 স্ট্রিং উপাদানের মান পান।
প্রয়োজনীয় ইনপুট বাফার আকার নির্ধারণ করতে, GetBytes() কল করার আগে GetLength() পদ্ধতিতে কল করুন।
বিস্তারিত | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||||
রিটার্ন মান |
|
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 প্রদান করে। এটি একাধিক বিচ্ছিন্ন বাফার থেকে ডেটা পড়ার সময় সীমিত ব্যবহারের পদ্ধতি তৈরি করে।
বিস্তারিত | |||||||||
---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||
রিটার্ন মান |
|
দৈর্ঘ্য পান
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() পদ্ধতিতে কল করুন। ইনপুট বাফার নাল অক্ষর মিটমাট করার জন্য স্ট্রিং দৈর্ঘ্যের থেকে কমপক্ষে এক বাইট বড় হওয়া উচিত।
বিস্তারিত | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||||
রিটার্ন মান |
|
GetTag
uint64_t GetTag( void ) const
বর্তমান TLV উপাদানের সাথে যুক্ত ট্যাগ প্রদান করে।
GetTag() দ্বারা প্রত্যাবর্তিত মান ট্যাগের ধরন নির্ধারণ করতে এবং বিভিন্ন ট্যাগ ক্ষেত্রের মান বের করতে ট্যাগ ইউটিলিটি ফাংশন ( IsProfileTag() , IsContextTag() , ProfileIdFromTag() ইত্যাদির সাথে ব্যবহার করা যেতে পারে।
বিস্তারিত | |
---|---|
রিটার্নস | বর্তমান TLV উপাদানের সাথে যুক্ত ট্যাগ সম্পর্কে তথ্য ধারণকারী একটি স্বাক্ষরবিহীন পূর্ণসংখ্যা। |
GetType
TLVType GetType( void ) const
ইনিট
void Init( const TLVReader & aReader )
অন্য TLVReader অবজেক্ট থেকে একটি TLVReader অবজেক্ট শুরু করে।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
|
ইনিট
void Init( const uint8_t *data, uint32_t dataLen )
ইনিট
void Init( PacketBuffer *buf, uint32_t maxLen )
একটি একক প্যাকেটবাফার থেকে পড়ার জন্য একটি TLVReader অবজেক্ট শুরু করে।
পার্সিং বাফারের স্টার্ট পজিশনে শুরু হয় (buf->DataStart()) এবং বাফারে ডেটা শেষ না হওয়া পর্যন্ত চলতে থাকে (যেমন buf->Datalen() দ্বারা চিহ্নিত করা হয়েছে), অথবা maxLen বাইট পার্স করা হয়েছে।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
|
ইনিট
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
এক বা একাধিক প্যাকেটবাফার থেকে পড়ার জন্য একটি TLVReader অবজেক্ট শুরু করে।
পার্সিং প্রাথমিক বাফারের স্টার্ট পজিশনে শুরু হয় ( buf->DataStart())। যদি allowDiscontiguousBuffers সত্য হয়, পাঠক তাদের নেক্সট() পয়েন্টার দ্বারা সংযুক্ত বাফারের শৃঙ্খলের মাধ্যমে অগ্রসর হবে। পার্সিং চলতে থাকে যতক্ষণ না বাফার চেইনের সমস্ত ডেটা গ্রাস করা না হয় (যেমন buf->Datalen() দ্বারা বোঝানো হয়), অথবা maxLen বাইট পার্স করা না হয়।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
|
পরবর্তী
WEAVE_ERROR Next( void )
TLVReader অবজেক্টকে পরবর্তী TLV এলিমেন্টে অগ্রসর করে যা পড়তে হবে।
নেক্সট() পদ্ধতি টিএলভি এনকোডিং-এ রিডার অবজেক্টকে পরবর্তী উপাদানে অবস্থান করে যা একই কনটেইন্টমেন্ট প্রসঙ্গে থাকে। বিশেষ করে, যদি পাঠক একটি TLV এনকোডিং-এর বাইরের-সবচেয়ে বেশি স্তরে অবস্থান করে, তাহলে Next() কল করা পাঠককে পরবর্তী, শীর্ষ-সর্বাধিক উপাদানে নিয়ে যাবে। যদি পাঠককে একটি TLV কন্টেইনার উপাদানের (একটি কাঠামো, অ্যারে বা পথ) মধ্যে অবস্থান করা হয়, তাহলে Next() কল করা পাঠককে কন্টেইনারের পরবর্তী সদস্য উপাদানে নিয়ে যাবে।
যেহেতু নেক্সট() রিডারের গতিকে বর্তমান কন্টেইনমেন্ট প্রেক্ষাপটে সীমাবদ্ধ করে, তাই যখন রিডার একটি কন্টেইনার এলিমেন্টে অবস্থান করে তখন নেক্সট() কল করলে কন্টেইনারের উপরে অগ্রসর হবে, এর সদস্য উপাদানগুলি (এবং নেস্টেড কন্টেইনারের সদস্যদের) এড়িয়ে যাবে যতক্ষণ না এটি প্রথমটিতে পৌঁছায়। ধারক পরে উপাদান.
যখন একটি নির্দিষ্ট কন্টেনমেন্ট প্রেক্ষাপটে আর কোনো উপাদান থাকে না তখন Next() পদ্ধতিটি একটি WEAVE_END_OF_TLV ত্রুটি ফিরিয়ে দেবে এবং পাঠকের অবস্থান অপরিবর্তিত থাকবে।
বিস্তারিত | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
রিটার্ন মান |
|
পরবর্তী
WEAVE_ERROR Next( TLVType expectedType, uint64_t expectedTag )
TLVReader অবজেক্টকে পরবর্তী TLV এলিমেন্টের দিকে অগ্রসর করে, নতুন এলিমেন্টের ধরন এবং ট্যাগ নিশ্চিত করে।
Next(TLVType expectedType, uint64_t expectTag) পদ্ধতি হল একটি সুবিধার পদ্ধতি যা Next() এর মতো একই আচরণ করে, কিন্তু নতুন TLV উপাদানের ধরন এবং ট্যাগ সরবরাহকৃত আর্গুমেন্টের সাথে মেলে কিনা তাও যাচাই করে।
বিস্তারিত | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||||||||||
রিটার্ন মান |
|
ওপেন কনটেইনার
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
একটি TLV কন্টেইনার উপাদানের সদস্যদের পড়ার জন্য একটি নতুন TLVReader অবজেক্ট শুরু করে।
OpenContainer() পদ্ধতিটি একটি TLV ধারক (একটি কাঠামো, অ্যারে বা পথ) এর সদস্য উপাদানগুলি পড়ার জন্য একটি নতুন TLVReader অবজেক্ট শুরু করে। যখন OpenContainer() কল করা হয়, তখন বর্তমান TLVReader অবজেক্টটি পড়ার জন্য কন্টেইনার এলিমেন্টে অবস্থান করা আবশ্যক। পদ্ধতিটি তার একমাত্র যুক্তি হিসাবে একটি নতুন পাঠকের একটি রেফারেন্স হিসাবে নেয় যা ধারকটি পড়ার জন্য আরম্ভ করা হবে। এই রিডারটিকে কন্টেইনার রিডার বলা হয় যখন যে রিডারে OpenContainer() বলা হয় তাকে প্যারেন্ট রিডার বলা হয়।
যখন OpenContainer() পদ্ধতিটি ফিরে আসে, তখন কন্টেইনার রিডারটি কন্টেইনারের প্রথম সদস্যের ঠিক আগে অবস্থান করে। কন্টেইনার রিডারে নেক্সট() কল করা সংগ্রহের সদস্যদের মাধ্যমে শেষ না হওয়া পর্যন্ত অগ্রসর হবে, এই সময়ে পাঠক WEAVE_END_OF_TLV ফিরে আসবে।
কন্টেইনার রিডার খোলা থাকাকালীন, অ্যাপ্লিকেশনগুলিকে কল করা বা অন্যথায় অভিভাবক পাঠকের অবস্থা পরিবর্তন করা উচিত নয়৷ একবার একটি অ্যাপ্লিকেশন কন্টেইনার রিডার ব্যবহার করা শেষ হয়ে গেলে, এটি অবশ্যই প্যারেন্ট রিডারে CloseContainer() কল করে, কন্টেইনার রিডারকে একটি যুক্তি হিসাবে পাস করে এটি বন্ধ করতে হবে। অ্যাপ্লিকেশনগুলি অন্তর্নিহিত কন্টেইনারে থাকা সমস্ত উপাদানগুলি পড়া সহ বা না পড়ে যে কোনও সময়ে কন্টেইনার রিডার বন্ধ করতে পারে৷ কন্টেইনার রিডার বন্ধ হওয়ার পরে, অ্যাপ্লিকেশনগুলি তাদের প্যারেন্ট রিডারের ব্যবহার চালিয়ে যেতে পারে।
কন্টেইনার রিডার প্যারেন্ট রিডার থেকে বিভিন্ন কনফিগারেশন বৈশিষ্ট্য উত্তরাধিকার সূত্রে প্রাপ্ত। এগুলো হলঃ
- অন্তর্নিহিত প্রোফাইল আইডি (ImplicitProfileId)
- অ্যাপ্লিকেশন ডেটা পয়েন্টার (AppData)
- GetNextBuffer ফাংশন পয়েন্টার
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
এড়িয়ে যান
WEAVE_ERROR Skip( void )
TLVReader অবজেক্টকে বর্তমান TLV উপাদানের পরপরই অগ্রসর করে।
বাদ দিন নেক্সট() এর মতো, যদি পাঠক কলের সময় একটি কন্টেইনার উপাদানের উপর অবস্থান করে, তবে কন্টেইনারের সদস্যদের এড়িয়ে যাওয়া হবে। পাঠক কোনো উপাদানে অবস্থান না করলে তার অবস্থান অপরিবর্তিত থাকে।
বিস্তারিত | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
রিটার্ন মান |
|
EndOfContainer যাচাই করুন
WEAVE_ERROR VerifyEndOfContainer( void )
TVLReader অবজেক্টটি একটি TLV কন্টেইনারের শেষে রয়েছে তা যাচাই করে।
VerifyEndOfContainer() পদ্ধতিটি যাচাই করে যে বর্তমান TLV কন্টেইনারের মধ্যে পড়ার জন্য আর কোন TLV উপাদান নেই। এটি একটি সুবিধার পদ্ধতি যা নেক্সট() কে কল করা এবং WEAVE_END_OF_TLV এর রিটার্ন মান পরীক্ষা করার সমতুল্য।
বিস্তারিত | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
রিটার্ন মান |
|
সুরক্ষিত ফাংশন
ক্লিয়ারিমেন্টস্টেট
void ClearElementState( void )
এলিমেন্ট টাইপ
TLVElementType ElementType( void ) const
এটি একটি ব্যক্তিগত পদ্ধতি যা ম্যাকন্ট্রোলবাইট থেকে টিএলভেলিমেন্ট টাইপটি ফিরিয়ে দেয়।
নিশ্চিততা
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
Getelementheadlength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
এটি একটি ব্যক্তিগত পদ্ধতি যা একটি টিএলভি উপাদান মাথার দৈর্ঘ্য গণনা করতে ব্যবহৃত হয়।
ইসকন্টেনারোপেন
bool IsContainerOpen( void ) const
ডেটা পড়ুন
WEAVE_ERROR ReadData( uint8_t *buf, uint32_t len )
রেশম
WEAVE_ERROR ReadElement( void )
রিডট্যাগ
uint64_t ReadTag( TLVTagControl tagControl, const uint8_t *& p )
সেটকন্টেনারোপেন
void SetContainerOpen( bool aContainerOpen )
স্কিপডাটা
WEAVE_ERROR SkipData( void )
গন্তব্য বাফার ছাড়াই এটি পড়ে বর্তমান টিএলভিতে থাকা যে কোনও ডেটা এড়িয়ে যান।
বিস্তারিত | |||||
---|---|---|---|---|---|
রিটার্ন মান |
|
স্কিপটেনডোফকন্টেনার
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 )