nl:: Weave:: TLV:: TLVReader
#include <src/lib/core/WeaveTLV.h>
Weave TLV biçiminde kodlanmış veriler için bellek verimli bir ayrıştırıcı sağlar.
Özet
TLVReader, Weave TLV verileri için yalnızca ileriye dönük, "alınabilir" bir ayrıştırıcı uygular. TLVReader nesnesi, bir TLV öğesi dizisini yinelemek ve bunların içeriklerini yorumlamak için kullanılabilen bir imleç görevi görür. Bir öğe üzerine konumlandırılan uygulamalar, mevcut öğenin türünü ve etiketini sorgulamak ve ilişkili herhangi bir değeri ayıklamak için okuyucunun Get() yöntemlerine çağrı yapabilir. Bir öğeden öğeye ilerlemek için okuyucunun Next() yöntemi kullanılır.
TLVReader nesnesi her zaman bir TLV öğesinin öncesinde, üzerine veya sonrasında konumlandırılır. İlk kez başlatıldığında, bir TLVReader kodlamanın ilk öğesinden hemen önce konumlandırılır. Okumaya başlamak için bir uygulamanın, okuyucuyu ilk öğeye konumlandırmak amacıyla Next() yöntemine bir ilk çağrı yapması gerekir. Bir kapsayıcı öğesiyle karşılaşıldığında bir yapı, dizi veya yol ile kapsayıcının içeriğini yinelemek için OpenContainer() ya da EnterContainer() yöntemleri kullanılabilir.
Okuyucu, bir TLV kodlamasının sonuna veya bir kapsayıcı içindeki son öğeye ulaştığında, Next() yönteminden bir WEAVE_END_OF_TLV hatası döndürerek uygulamaya sinyal gönderir. Okuyucu, yeniden başlatılana veya mevcut kapsayıcıdan çıkılana (CloseContainer() / ExitContainer() aracılığıyla) kadar WEAVE_END_OF_TLV döndürmeye devam eder.
TLVReader nesnesi, verileri doğrudan sabit bir giriş arabelleğinden veya bir ya da daha fazla PacketBuffers zincirinden ayrıştırabilir. Buna ek olarak, uygulamalar rastgele bir kaynaktan okuyucuya veri aktarmak için bir GetNextBuffer
işlevi sağlayabilir (ör. olması gerekir.
Devralma
Doğrudan Bilinen Alt Sınıflar:nl::Weave::Profiles::DataManagement_Current::CircularEventReader
nl::Weave::TLV::CircularTLVReader
Herkese açık türler |
|
---|---|
GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Ayrıştırılacak ek TLV verilerini almak için kullanılabilecek bir işlev. |
Herkese açık özellikler |
|
---|---|
AppData
|
void *
Uygulamaya özel veriler için kullanılabilecek bir işaretçi alanıdır.
|
GetNextBuffer
|
TLVReader nesnesi için giriş verileri üretecek bir işlevin işaretçisi.
|
ImplicitProfileId
|
uint32_t
Örtülü biçimde kodlanmış profil etiketleri için kullanılacak profil kimliği.
|
Korunan özellikler |
|
---|---|
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 *
|
Herkese açık işlevler |
|
---|---|
CloseContainer(TLVReader & containerReader)
|
OpenContainer() çağrısından sonra bir TLV kapsayıcısının okunmasını tamamlar.
|
DupBytes(uint8_t *& buf, uint32_t & dataLen)
|
Geçerli baytın veya UTF8 dizesinin değerini içeren bir arabellek ayırır ve döndürür.
|
DupString(char *& buf)
|
Geçerli baytın veya UTF8 dizesinin boş sonlandırılmış değerini içeren bir arabellek ayırır ve döndürür.
|
EnterContainer(TLVType & outerContainerType)
|
|
ExitContainer(TLVType outerContainerType)
|
|
Get(bool & v)
|
Geçerli öğenin değerini bir bool türü olarak alın.
|
Get(int8_t & v)
|
Geçerli öğenin değerini 8 bit imzalı bir tam sayı biçiminde alın.
|
Get(int16_t & v)
|
Geçerli öğenin değerini 16 bit imzalı tam sayı biçiminde alın.
|
Get(int32_t & v)
|
Geçerli öğenin değerini 32 bit imzalı tam sayı biçiminde alın.
|
Get(int64_t & v)
|
Geçerli öğenin değerini 64 bit imzalı tam sayı biçiminde alın.
|
Get(uint8_t & v)
|
Geçerli öğenin değerini 8 bitlik işaretsiz bir tam sayı biçiminde alın.
|
Get(uint16_t & v)
|
Geçerli öğenin değerini 16 bitlik imzasız bir tam sayı olarak alın.
|
Get(uint32_t & v)
|
Geçerli öğenin değerini 32 bitlik imzasız bir tam sayı olarak alın.
|
Get(uint64_t & v)
|
Geçerli öğenin değerini 64 bitlik imzasız bir tam sayı olarak alın.
|
Get(float & v)
|
|
Get(double & v)
|
Geçerli öğenin değerini çift duyarlıklı kayan nokta sayı olarak alın.
|
GetBufHandle(void) const
|
uintptr_t
|
GetBytes(uint8_t *buf, uint32_t bufSize)
|
Geçerli bayt veya UTF8 dize öğesinin değerini alın.
|
GetContainerType(void) const
|
TLVReader'ın okumakta olduğu kapsayıcının türünü döndürür.
|
GetControlByte(void) const
|
uint16_t
Geçerli TLV öğesiyle ilişkilendirilmiş kontrol baytını döndürür.
|
GetDataPtr(const uint8_t *& data)
|
Bir TLV baytı veya UTF8 dize öğesinin ilk kodlanmış baytına işaret eden bir işaretçi alın.
|
GetLength(void) const
|
uint32_t
Geçerli TLV öğesiyle ilişkilendirilmiş verilerin uzunluğunu döndürür.
|
GetLengthRead(void) const
|
uint32_t
Okuyucu başlatıldıktan sonra okunan toplam bayt sayısını döndürür.
|
GetReadPoint(void) const
|
const uint8_t *
Temel giriş arabelleğinde, okuyucunun mevcut konumuna karşılık gelen noktayı alır.
|
GetRemainingLength(void) const
|
uint32_t
Maksimum okuma uzunluğuna ulaşılana kadar okunabilecek toplam bayt sayısını döndürür.
|
GetString(char *buf, uint32_t bufSize)
|
Geçerli baytın veya UTF8 dize öğesinin değerini, boş olarak sonlandırılmış bir dize olarak alın.
|
GetTag(void) const
|
uint64_t
Geçerli TLV öğesiyle ilişkilendirilmiş etiketi döndürür.
|
GetType(void) const
|
Geçerli TLV öğesinin türünü döndürür.
|
Init(const TLVReader & aReader)
|
void
|
Init(const uint8_t *data, uint32_t dataLen)
|
void
Tek bir giriş arabelleğinden okunacak bir TLVReader nesnesini başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Tek bir PacketBuffer'dan okunacak bir TLVReader nesnesini başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Bir veya daha fazla PacketBuffers'dan okunması için bir TLVReader nesnesini başlatır.
|
Next(void)
|
|
Next(TLVType expectedType, uint64_t expectedTag)
|
|
OpenContainer(TLVReader & containerReader)
|
|
Skip(void)
|
|
VerifyEndOfContainer(void)
|
TVLReader nesnesinin, bir TLV kapsayıcısının sonunda olduğunu doğrular.
|
Korunan işlevler |
|
---|---|
ClearElementState(void)
|
void
TLVReader'ın durumunu temizleyin.
|
ElementType(void) const
|
TLVElementType
Bu, mControlByte'tan TLVElementType döndüren gizli bir yöntemdir.
|
EnsureData(WEAVE_ERROR noDataErr)
|
|
GetElementHeadLength(uint8_t & elemHeadBytes) const
|
Bu, TLV öğe başlığının uzunluğunu hesaplamak için kullanılan gizli bir yöntemdir.
|
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)
|
Mevcut TLV'de yer alan verileri hedef arabellek olmadan okuyarak bu verileri atlayın.
|
SkipToEndOfContainer(void)
|
|
VerifyElement(void)
|
Korunan statik işlevler |
|
---|---|
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)
|
Herkese açık türler
GetNextBufferFunct
WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)
Ayrıştırılacak ek TLV verilerini almak için kullanılabilecek bir işlev.
Bu tür işlevler, giriş verilerini bir TLVReader'a aktarmak için kullanılır. Çağrı yapıldığında, işlevin okuyucuya daha fazla veri olmadığını ayrıştırması veya bunu bildirmesi için ek veriler üretmesi beklenir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Değerleri Döndür |
|
Herkese açık özellikler
AppData
void * AppData
Uygulamaya özel veriler için kullanılabilecek bir işaretçi alanıdır.
GetNextBuffer
GetNextBufferFunct GetNextBuffer
TLVReader nesnesi için giriş verileri üretecek bir işlevin işaretçisi.
NULL değerine (varsayılan değer) ayarlanırsa okuyucu, başka giriş verisi olmadığını varsayar.
GetNextBuffer, bir uygulama tarafından herhangi bir zamanda ayarlanabilir, ancak genellikle okuyucu başlatıldığında ayarlanır.
GetNextBuffer işlevini uygulama hakkında daha fazla bilgi için GetNextBufferFunct tür tanımına bakın.
ImplicitProfileId
uint32_t ImplicitProfileId
Örtülü biçimde kodlanmış profil etiketleri için kullanılacak profil kimliği.
Okuyucu, kapalı formda kodlanmış profile özgü bir etiketle karşılaştığında, etiket için varsayılan profil kimliği olarak ImplicitProfileId
özelliğinin değerini kullanır.
Varsayılan olarak ImplicitProfileId
özelliği kProfileIdNotSpecified olarak ayarlanır. Dolaylı olarak kodlanmış etiketler içeren TLV'nin kodunu çözerken uygulamalar bu tür etiketlere sahip TLV öğelerini okumadan önce ImplicitProfileId
değerini ayarlamalıdır. Uygun profil kimliği genellikle konuşulan uygulamanın veya protokolün bağlamına bağlıdır.
ImplicitProfileId
, kProfileIdNotSpecified olarak ayarlandığında örtülü olarak kodlanmış bir etiketle karşılaşırsa okuyucu WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG hatası döndürür.
Korunan özellikler
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
Herkese açık işlevler
CloseContainer
WEAVE_ERROR CloseContainer( TLVReader & containerReader )
OpenContainer() çağrısından sonra bir TLV kapsayıcısının okunmasını tamamlar.
CloseContainer() yöntemi, OpenContainer() çağrısından sonra bir üst TLVReader nesnesinin durumunu geri yükler. OpenContainer() uygulamalarına yapılan her çağrı, her iki yönteme de aynı kapsayıcı okuyucuya başvuru ileterek CloseContainer() çağrısına karşılık gelen bir çağrı yapmalıdır.
CloseContainer() döndürüldüğünde üst okuyucu, kapsayıcıyı takip eden ilk öğenin hemen önüne yerleştirilir. Bu noktadan sonra, bir uygulama kalan öğelerde ilerlemek için Next() yöntemini kullanabilir.
Uygulamalar, temel kapsayıcıdaki tüm öğelerin okunmuş olup olmadığına bakılmaksızın, herhangi bir zamanda üst okuyucuda CloseContainer() işlevini çağırabilir. CloseContainer() çağrıldıktan sonra, uygulamanın kapsayıcı okuyucuyu "de-başlatılmış" olarak değerlendirmesi gerekir ve yeniden başlatmadan daha fazla kullanılmamalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
Geçerli baytın veya UTF8 dizesinin değerini içeren bir arabellek ayırır ve döndürür.
Bu yöntem için bir arabellek oluşturur ve geçerli konumdaki bayt veya UTF-8 dize öğesiyle ilişkilendirilmiş verilerin bir kopyasını döndürür. Arabellek belleği, Malloc() ile alınır ve artık gerekli olmadığında çağrı tarafından free() ile serbest bırakılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
DupString
WEAVE_ERROR DupString( char *& buf )
Geçerli baytın veya UTF8 dizesinin boş sonlandırılmış değerini içeren bir arabellek ayırır ve döndürür.
Bu yöntem için bir arabellek oluşturur ve geçerli konumdaki bayt veya UTF-8 dize öğesiyle ilişkilendirilmiş verilerin boş sonlandırılmış bir kopyasını döndürür. Arabellek belleği, Malloc() ile alınır ve artık gerekli olmadığında çağrı tarafından free() ile serbest bırakılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
EnterContainer
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
TLV kapsayıcı öğesinin üyelerini okumak için bir TLVReader nesnesi hazırlar.
EnterContainer() yöntemi, bir TLV kapsayıcısının (yapı, dizi veya yol) üye öğelerini okumaya başlamak için geçerli TLVReader nesnesini hazırlar. EnterContainer() uygulamalarına yapılan her çağrının, ExitContainer() işlevine karşılık gelen bir çağrı yapması gerekir.
EnterContainer() çağrıldığında, TLVReader nesnesi okunacak kapsayıcı öğeye yerleştirilmelidir. Yöntem, kapsayıcıyı okurken okuyucunun bağlamını kaydetmek için kullanılacak olan TLVType değerine referansı bağımsız değişken olarak alır.
EnterContainer() yöntemi döndüğünde okuyucu, kapsayıcının ilk üyesinden hemen önce konumlandırılır. Next() tekrarlı bir şekilde çağrılması durumunda, okuyucu, koleksiyonun sonuna ulaşılıncaya kadar koleksiyonun üyeleri arasında ilerler. Bu noktada okuyucu, WEAVE_END_OF_TLV değerini döndürür.
Uygulama bir kapsayıcıyı okumayı bitirdikten sonra ExitContainer() yöntemini çağırarak kapsayıcıdan sonra öğeleri okumaya devam edebilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
ExitContainer
WEAVE_ERROR ExitContainer( TLVType outerContainerType )
Bir TLV kapsayıcısının okunmasını tamamlar ve kapsayıcıdan sonra öğeleri okumak için bir TLVReader nesnesi hazırlar.
ExitContainer() yöntemi, EnterContainer() çağrısından sonra bir TLVReader nesnesinin durumunu geri yükler. EnterContainer() uygulamalarına yapılan her çağrının, EnterContainer() yöntemi tarafından döndürülen bağlam değerini ileterek ExitContainer() uygulamasına karşılık gelen bir çağrı yapması gerekir.
ExitContainer() döndürüldüğünde okuyucu, kapsayıcıyı takip eden ilk öğeden hemen önce konumlandırılır. Bu noktadan sonra, bir uygulama kalan öğelerde ilerlemek için Next() yöntemini kullanabilir.
EnterContainer() çağrıldıktan sonra, uygulamalar temel kapsayıcıdaki tüm öğelerin okunmuş olup olmadığına bakılmaksızın herhangi bir zamanda bir okuyucuda ExitContainer() işlevini çağırabilir.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( bool & v )
Geçerli öğenin değerini bir bool türü olarak alın.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( int8_t & v )
Geçerli öğenin değerini 8 bit imzalı bir tam sayı biçiminde alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kesilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( int16_t & v )
Geçerli öğenin değerini 16 bit imzalı tam sayı biçiminde alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kesilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( int32_t & v )
Geçerli öğenin değerini 32 bit imzalı tam sayı biçiminde alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kesilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( int64_t & v )
Geçerli öğenin değerini 64 bit imzalı tam sayı biçiminde alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kesilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( uint8_t & v )
Geçerli öğenin değerini 8 bitlik işaretsiz bir tam sayı biçiminde alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kesilir. Benzer bir şekilde, kodlanmış tam sayı değeri negatifse değer, imzasız durumuna dönüştürülür.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( uint16_t & v )
Geçerli öğenin değerini 16 bitlik imzasız bir tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kesilir. Benzer bir şekilde, kodlanmış tam sayı değeri negatifse değer, imzasız durumuna dönüştürülür.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( uint32_t & v )
Geçerli öğenin değerini 32 bitlik imzasız bir tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kesilir. Benzer bir şekilde, kodlanmış tam sayı değeri negatifse değer, imzasız durumuna dönüştürülür.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( uint64_t & v )
Geçerli öğenin değerini 64 bitlik imzasız bir tam sayı olarak alın.
Kodlanmış tam sayı değeri negatifse değer, imzasız biçimine dönüştürülür.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Get
WEAVE_ERROR Get( float & v )
Get
WEAVE_ERROR Get( double & v )
Geçerli öğenin değerini çift duyarlıklı kayan nokta sayı olarak alın.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
GetBufHandle
uintptr_t GetBufHandle( void ) const
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
Geçerli bayt veya UTF8 dize öğesinin değerini alın.
Gerekli giriş arabellek boyutunu belirlemek için GetBytes() çağrısından önce GetLength() yöntemini çağırın.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||
Değerleri Döndür |
|
GetContainerType
TLVType GetContainerType( void ) const
TLVReader'ın okumakta olduğu kapsayıcının türünü döndürür.
GetContainerType() yöntemi, TLVReader'ın okuduğu TLV kapsayıcısının türünü döndürür. TLVReader, bir TLV kodlamasının en dış seviyesinde (yani, en dıştaki TLV öğesinin öncesinde, üzerinde veya sonrasında) konumlandırılırsa yöntem kTLVType_NotSpecified değerini döndürür.
Ayrıntılar | |
---|---|
İadeler |
Geçerli kapsayıcının TLVType veya TLVReader, kapsayıcı içinde konumlandırılmadıysa kTLVType_NotSpecified parametresi kullanılır.
|
GetControlByte
uint16_t GetControlByte( void ) const
Geçerli TLV öğesiyle ilişkilendirilmiş kontrol baytını döndürür.
İdeal olarak, hiç kimse kontrol baytını bilmek zorunda değildir ve yalnızca TLV'nin dahili uygulaması bu bayta erişebilmelidir. Ancak, kontrol baytına erişmek TLVHata AyıklamaYardımcı Programları'nın (TLV arabellek içeriklerini güzel bir şekilde yazdırırken etiket kontrol baytının kodunu çözmeye çalışan) hata ayıklama amaçları açısından yararlıdır.
Ayrıntılar | |
---|---|
İadeler |
Geçerli TLV öğesiyle ilişkilendirilmiş kontrol baytını içeren imzalanmamış bir tam sayı. Okuyucu, bir öğenin üzerine konumlandırılmazsa kTLVControlByte_NotSpecified döndürülür.
|
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
Bir TLV baytı veya UTF8 dize öğesinin ilk kodlanmış baytına işaret eden bir işaretçi alın.
Bu yöntem, temel giriş arabelleği içindeki kodlanmış dize değerini doğrudan bir işaretçiye döndürür. Bu yöntemde başarılı olmak için dize değerinin tamamının tek bir arabellekte bulunması gerekir. Aksi takdirde, yöntem WEAVE_ERROR_TLV_UNDERRUN değerini döndürür. Bu, birden çok bitişik arabelleğe ait veriler okunurken sınırlı kullanım yöntemi sağlar.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Değerleri Döndür |
|
GetLength
uint32_t GetLength( void ) const
Geçerli TLV öğesiyle ilişkilendirilmiş verilerin uzunluğunu döndürür.
Veri uzunluğu yalnızca UTF8 dizesi veya bayt dizesi türündeki öğeler için geçerlidir. UTF8 dizeleri için döndürülen değer dizedeki bayt sayısıdır, karakter sayısı değildir.
Ayrıntılar | |
---|---|
İadeler |
Geçerli TLV öğesiyle ilişkilendirilen verilerin uzunluğu (bayt cinsinden). Geçerli öğe, UTF8 dizesi veya bayt dizesi değilse ya da okuyucu, bir öğe üzerinde konumlandırılmadıysa 0.
|
GetLengthRead
uint32_t GetLengthRead( void ) const
Okuyucu başlatıldıktan sonra okunan toplam bayt sayısını döndürür.
Ayrıntılar | |
---|---|
İadeler |
Okuyucu başlatıldıktan sonra okunan toplam bayt sayısı.
|
GetReadPoint
const uint8_t * GetReadPoint( void ) const
Temel giriş arabelleğinde, okuyucunun mevcut konumuna karşılık gelen noktayı alır.
Ayrıntılar | |
---|---|
İadeler |
Okuyucunun mevcut konumuna karşılık gelen temel giriş arabelleğine giden bir işaretçi.
|
GetRemainingLength
uint32_t GetRemainingLength( void ) const
Maksimum okuma uzunluğuna ulaşılana kadar okunabilecek toplam bayt sayısını döndürür.
Ayrıntılar | |
---|---|
İadeler |
Maksimum okuma uzunluğuna ulaşılıncaya kadar okunabilecek toplam bayt sayısı.
|
GetString
WEAVE_ERROR GetString( char *buf, uint32_t bufSize )
Geçerli baytın veya UTF8 dize öğesinin değerini, boş olarak sonlandırılmış bir dize olarak alın.
Gerekli giriş arabellek boyutunu belirlemek için GetBytes() çağrısından önce GetLength() yöntemini çağırın. Boş karakteri yerleştirmek için giriş arabelleği, dize uzunluğundan en az bir bayt daha büyük olmalıdır.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||
Değerleri Döndür |
|
GetTag
uint64_t GetTag( void ) const
Geçerli TLV öğesiyle ilişkilendirilmiş etiketi döndürür.
GetTag() tarafından döndürülen değer, etiketin türünü belirlemek ve çeşitli etiket alanı değerlerini ayıklamak için etiket yardımcı program işlevleriyle (IsProfileTag(), IsContextTag(), ProfileIdFromTag() vb.) kullanılabilir.
Ayrıntılar | |
---|---|
İadeler |
Geçerli TLV öğesiyle ilişkilendirilmiş etiket hakkında bilgileri içeren imzasız bir tam sayı.
|
GetType
TLVType GetType( void ) const
Init
void Init( const TLVReader & aReader )
Init
void Init( const uint8_t *data, uint32_t dataLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Tek bir PacketBuffer'dan okunacak bir TLVReader nesnesini başlatır.
Ayrıştırma, arabelleğin başlangıç konumundan (buf->DataStart()) başlar ve arabellekteki verilerin sonuna kadar (buf->Datalen() ile belirtildiği şekilde) veya maxLen baytları ayrıştırılana kadar devam eder.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Bir veya daha fazla PacketBuffers'dan okunması için bir TLVReader nesnesini başlatır.
Ayrıştırma, ilk arabelleğin başlangıç konumundan (buf->DataStart()) başlar. allowDiscontiguousBuffers doğru değerine ayarlanırsa okuyucu, Next() işaretçileri ile bağlı arabellek zincirinde ilerler. Arabellek zincirindeki tüm veriler tüketilene (buf->Datalen() tarafından belirtildiği şekliyle) veya maxLen baytları ayrıştırılana kadar ayrıştırma devam eder.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
Sonraki
WEAVE_ERROR Next( void )
TLVReader nesnesini, okunacak bir sonraki TLV öğesine ilerletir.
Next() yöntemi, okuyucu nesnesini sonraki öğede, aynı kapsama bağlamında yer alan bir TLV kodlamasıyla konumlandırır. Özellikle okuyucu, TLV kodlamasının en dış seviyesinde konumlandırılıyorsa Next() çağrısının yapılması, okuyucuyu bir sonraki, en üstteki öğeye yönlendirir. Okuyucu bir TLV kapsayıcı öğesinin (yapı, dizi veya yol) içinde konumlandırıldıysa Next() çağrısının yapılması, okuyucuyu kapsayıcının sonraki üye öğesine yönlendirir.
Next(), okuyucu hareketini geçerli kapsama bağlamıyla kısıtladığından, okuyucu bir kapsayıcı öğesi üzerine konumlandırıldığında Next() çağrısı yapıldığında kapsayıcının üzerine ilerler ve üye öğeleri (ve iç içe yerleştirilmiş kapsayıcıların üyeleri) kapsayıcıdan sonraki ilk öğeye ulaşana kadar atlanır.
Belirli bir kapsama bağlamında başka öğe olmadığında Next() yöntemi bir WEAVE_END_OF_TLV hatası döndürür ve okuyucunun konumu değişmez.
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Değerleri Döndür |
|
Sonraki
WEAVE_ERROR Next( TLVType expectedType, uint64_t expectedTag )
TLVReader nesnesini, yeni öğenin türünü ve etiketini onaylayarak okunacak bir sonraki TLV öğesine ilerletir.
Next(TLVType requiredType, uint64_t estimatedTag) yöntemi, Next() ile aynı davranışa sahip olan ancak aynı zamanda yeni TLV öğesinin tür ve etiketinin sağlanan bağımsız değişkenlerle eşleştiğini doğrulayan kullanım amaçlı bir yöntemdir.
Ayrıntılar | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||
Değerleri Döndür |
|
OpenContainer
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
Bir TLV kapsayıcı öğesinin üyelerini okumak için yeni bir TLVReader nesnesini başlatır.
OpenContainer() yöntemi, bir TLV kapsayıcısının (yapı, dizi veya yol) üye öğelerini okumak için yeni bir TLVReader nesnesini başlatır. OpenContainer() çağrıldığında, geçerli TLVReader nesnesi okunacak kapsayıcı öğeye yerleştirilmelidir. Yöntem, tek bağımsız değişkeni olarak kapsayıcıyı okumak için başlatılacak yeni bir okuyucuya başvuruyu alır. Bu okuyucu, kapsayıcı okuyucu olarak bilinir. Üzerinde OpenContainer() çağrısı yapılan okuyucu ise üst okuyucu olarak bilinir.
OpenContainer() yöntemi döndüğünde, kapsayıcı okuyucu, kapsayıcının ilk üyesinin hemen önüne yerleştirilir. Kapsayıcı okuyucuda Next() çağrıldığında, koleksiyon sonuna ulaşılıncaya kadar koleksiyon üyeleri arasında ilerler; bu noktada okuyucu WEAVE_END_OF_TLV değerini döndürür.
Kapsayıcı okuyucu açıkken uygulamalar, üst okuyucunun durumunu başka bir şekilde değiştirmemeli veya çağrı yapmamalıdır. Bir uygulama, kapsayıcı okuyucuyu kullanmayı tamamladıktan sonra, üst okuyucuda CloseContainer() işlevini çağırıp kapsayıcı okuyucuyu bağımsız değişken olarak ileterek uygulamayı kapatması gerekir. Uygulamalar, kapsayıcı okuyucuyu herhangi bir noktada, temel kapsayıcıda bulunan tüm öğeler olsa da olmasa da kapatabilir. Kapsayıcı okuyucu kapatıldıktan sonra, uygulamalar üst okuyucuyu kullanmaya devam edebilir.
Kapsayıcı okuyucu, çeşitli yapılandırma özelliklerini üst okuyucudan devralır. Desteklenen biçimler şunlardır:
- Örtülü profil kimliği (ImplicitProfileId)
- Uygulama veri işaretçisi (AppData)
- GetNextBuffer işlevi işaretçisi
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
Atla
WEAVE_ERROR Skip( void )
TLVReader nesnesini, geçerli TLV öğesinin hemen sonrasına ilerletir.
Skip() yöntemi, okuyucu nesnesini geçerli TLV öğesinin hemen sonrasına konumlandırır. Bu şekilde, Next() için yapılan bir sonraki çağrı, okuyucuyu bir sonraki öğeye ilerletir. Next() işlevinde olduğu gibi, okuyucu, çağrı sırasında bir kapsayıcı öğesinde konumlandırıldıysa kapsayıcının üyeleri atlanır. Okuyucu herhangi bir öğenin üzerine yerleştirilmezse konumu değişmez.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Değerleri Döndür |
|
VerifyEndOfContainer
WEAVE_ERROR VerifyEndOfContainer( void )
TVLReader nesnesinin, bir TLV kapsayıcısının sonunda olduğunu doğrular.
VerifyEndOfContainer() yöntemi, geçerli TLV kapsayıcısında okunacak başka TLV öğesi olmadığını doğrular. Bu, Next() işlevini çağırmaya ve WEAVE_END_OF_TLV değerini kontrol etmeye eşdeğer olan kullanım amaçlı bir yöntemdir.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Değerleri Döndür |
|
Korunan işlevler
ClearElementState
void ClearElementState( void )
ElementType
TLVElementType ElementType( void ) const
Bu, mControlByte'tan TLVElementType döndüren gizli bir yöntemdir.
EnsureData
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
GetElementHeadLength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
Bu, TLV öğe başlığının uzunluğunu hesaplamak için kullanılan gizli bir yöntemdir.
IsContainerOpen
bool IsContainerOpen( void ) const
ReadData
WEAVE_ERROR ReadData( uint8_t *buf, uint32_t len )
ReadElement
WEAVE_ERROR ReadElement( void )
ReadTag
uint64_t ReadTag( TLVTagControl tagControl, const uint8_t *& p )
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
SkipData
WEAVE_ERROR SkipData( void )
Mevcut TLV'de yer alan verileri hedef arabellek olmadan okuyarak bu verileri atlayın.
Ayrıntılar | |||||
---|---|---|---|---|---|
Değerleri Döndür |
|
SkipToEndOfContainer
WEAVE_ERROR SkipToEndOfContainer( void )
VerifyElement
WEAVE_ERROR VerifyElement( void )
Korunan statik işlevler
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 )