nl:: Weave:: TLV:: TLVReader
#include <src/lib/core/WeaveTLV.h>
Weave TLV biçiminde kodlanmış veriler için bellek açısından verimli bir ayrıştırıcı sağlar.
Özet
TLVReader, Weave TLV verileri için yalnızca ileriye yönelik, "çekme stili" ayrıştırıcı uygular. TLVReader nesnesi, bir TLV öğeleri dizisi üzerinde yineleme gerçekleştirmek ve bunların içeriğini yorumlamak için kullanılabilecek bir imleç olarak çalışır. Uygulamalar bir öğeye konumlandırıldığında geçerli öğenin türünü ve etiketini sorgulamak ve ilişkili herhangi bir değeri ayıklamak için okuyucunun Get() yöntemlerini çağırabilir. Okuyucunun Next() yöntemi, öğeden öğeye ilerlemek için kullanılır.
TLVReader nesnesi her zaman bir TLV öğesinin öncesinde, üzerinde veya sonrasında konumlandırılır. İlk başlatıldığında bir TLVReader, kodlamanın ilk öğesinden hemen önce yerleştirilir. Okumaya başlamak için bir uygulamanın okuyucuyu ilk öğeye konumlandırmak için Next() yöntemine ilk çağrı yapması gerekir. Bir kapsayıcı öğesiyle karşılaşıldığında bir yapı, dizi veya yolla ilgili kapsayıcı içerikleri yinelemek için OpenContainer() veya 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 kadar (CloseContainer() / ExitContainer() aracılığıyla) 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 PacketBuffer zincirinden ayrıştırabilir. Ayrıca uygulamalar, okuyucuya rastgele bir kaynaktan (ör. yuva veya seri bağlantı noktası) veri akışı sağlayan bir GetNextBuffer
işlevi de sağlayabilir.
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 özgü veriler için kullanılabilecek işaretçi alanı.
|
GetNextBuffer
|
TLVReader nesnesi için giriş verileri oluşturacak 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 *
|
Kamu işlevleri |
|
---|---|
CloseContainer(TLVReader & containerReader)
|
OpenContainer() çağrısından sonra 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 arabelleği ayırır ve döndürür.
|
DupString(char *& buf)
|
Geçerli baytın veya UTF8 dizesinin boş sona ermiş 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 Bool türü olarak alın.
|
Get(int8_t & v)
|
Geçerli öğenin değerini 8 bit imzalı tam sayı olarak alın.
|
Get(int16_t & v)
|
Geçerli öğenin değerini 16 bit imzalı tam sayı olarak alın.
|
Get(int32_t & v)
|
Geçerli öğenin değerini 32 bit imzalı tam sayı olarak alın.
|
Get(int64_t & v)
|
Geçerli öğenin değerini 64 bit imzalı tam sayı olarak alın.
|
Get(uint8_t & v)
|
Geçerli öğenin değerini 8 bitlik imzasız tam sayı olarak alın.
|
Get(uint16_t & v)
|
Geçerli öğenin değerini 16 bit imzasız tam sayı olarak alın.
|
Get(uint32_t & v)
|
Geçerli öğenin değerini 32 bit imzalanmamış tam sayı olarak alın.
|
Get(uint64_t & v)
|
Geçerli öğenin değerini 64 bit imzalanmamış tam sayı olarak alın.
|
Get(float & v)
|
|
Get(double & v)
|
Geçerli öğenin değerini çift duyarlıklı kayan nokta sayısı olarak alın.
|
GetBufHandle(void) const
|
uintptr_t
|
GetBytes(uint8_t *buf, uint32_t bufSize)
|
Geçerli baytın veya UTF8 dize öğesinin değerini alın.
|
GetContainerType(void) const
|
TLVReader öğesinin şu anda 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ının veya UTF8 dize öğesinin ilk kodlanmış baytına işaretçi alın.
|
GetLength(void) const
|
uint32_t
Mevcut TLV öğesiyle ilişkili verilerin uzunluğunu döndürür.
|
GetLengthRead(void) const
|
uint32_t
Okuyucunun başlatılmasından bu yana okunan toplam bayt sayısını döndürür.
|
GetReadPoint(void) const
|
const uint8_t *
Temel giriş arabelleğinde, okuyucunun geçerli konumuna karşılık gelen noktayı getirir.
|
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ş sonlandırılmış dize olarak alın.
|
GetTag(void) const
|
uint64_t
Geçerli TLV öğesiyle ilişkilendirilen 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 okumak için bir TLVReader nesnesi başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Tek bir PacketBuffer'dan okumak için bir TLVReader nesnesi başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Bir veya daha fazla PacketBuffers'dan okumak için bir TLVReader nesnesi 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 öğesinin durumunu temizleyin.
|
ElementType(void) const
|
TLVElementType
Bu, mControlByte'tan TLVElementType değerini döndüren özel bir yöntemdir.
|
EnsureData(WEAVE_ERROR noDataErr)
|
|
GetElementHeadLength(uint8_t & elemHeadBytes) const
|
Bu, TLV öğe kafası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 arabelleği olmadan okuyarak 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ıldığında işlevin, okuyucuya başka verinin olmadığını ayrıştırabilmesi veya bildirebilmesi için ek veriler üretmesi beklenir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
Herkese açık özellikler
AppData
void * AppData
Uygulamaya özgü veriler için kullanılabilecek işaretçi alanı.
GetNextBuffer
GetNextBufferFunct GetNextBuffer
TLVReader nesnesi için giriş verileri oluşturacak bir işlevin işaretçisi.
NULL (varsayılan değer) değerine ayarlanırsa okuyucu, başka giriş verisi olmadığını varsayar.
GetNextBuffer, bir uygulama tarafından herhangi bir zamanda ayarlanabilir, ancak genellikle okuyucu başlatılırken ayarlanır.
GetNextBuffer işlevinin uygulanması hakkında ek bilgi almak 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, örtülü biçimde kodlanmış, profile özel bir etiketle karşılaştığında, ImplicitProfileId
özelliğinin değerini etiketin varsayılan profil kimliği olarak kullanır.
Varsayılan olarak ImplicitProfileId
özelliği kProfileIdNotSpecified şeklinde ayarlanmıştır. Dolaylı olarak kodlanmış etiketler içeren TLV'nin kodunu çözerken uygulamalar, bu tür etiketleri içeren 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şılı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
Kamu işlevleri
CloseContainer
WEAVE_ERROR CloseContainer( TLVReader & containerReader )
OpenContainer() çağrısından sonra TLV kapsayıcısının okunmasını tamamlar.
CloseContainer() yöntemi, OpenContainer() çağrısından sonra üst TLVReader nesnesinin durumunu geri yükler. Her OpenContainer() çağrısına karşılık gelen bir uygulama CloseContainer() çağrısına karşılık olarak, her iki yöntemde de aynı kapsayıcı okuyucuya referans iletmelidir.
CloseContainer() işlevi döndürüldüğünde, üst okuyucu, kapsayıcıyı izleyen ilk öğenin hemen önüne yerleştirilir. Bu noktadan itibaren uygulama, kalan öğeler arasında ilerlemek için Next() yöntemini kullanabilir.
Uygulamalar, temel kapsayıcıdaki tüm öğelerin okunup okunmadığı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-initial" (başlatıldı) olarak değerlendirmesi ve yeniden başlatmadan başka bir yerde kullanmaması gerekir.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
DupBytes
WEAVE_ERROR DupBytes( uint8_t *& buf, uint32_t & dataLen )
Geçerli baytın veya UTF8 dizesinin değerini içeren bir arabelleği 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. Arabelleğe ilişkin bellek, Malloc() ile elde edilir ve artık gerekli olmadığında, çağrıyı yapan tarafından free() ile serbest bırakılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
DupString
WEAVE_ERROR DupString( char *& buf )
Geçerli baytın veya UTF8 dizesinin boş sona ermiş 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şkili verilerin boş sona ermiş bir kopyasını döndürür. Arabelleğe ilişkin bellek, Malloc() ile elde edilir ve artık gerekli olmadığında, çağrıyı yapan tarafından free() ile serbest bırakılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
EnterContainer
WEAVE_ERROR EnterContainer( TLVType & outerContainerType )
TLV kapsayıcı öğesinin üyelerini okumak için bir TLVReader nesnesi hazırlar.
EnterContainer() yöntemi, geçerli TLVReader nesnesini bir TLV kapsayıcısının (yapı, dizi veya yol) üye öğelerini okumaya başlayacak şekilde hazırlar. Uygulamaların her EnterContainer() çağrısı için ExitContainer() işlevine karşılık gelen bir çağrı yapması gerekir.
EnterContainer() çağrıldığında TLVReader nesnesi, okunacak kapsayıcı öğesine yerleştirilmelidir. Yöntem, kapsayıcıyı okurken okuyucunun bağlamını kaydetmek için kullanılacak bir TLVType değerine başvuruyu bağımsız değişken olarak alır.
EnterContainer() yöntemi döndürüldüğünde, okuyucu kapsayıcının ilk üyesinden hemen önce konumlandırılır. Next() işlevinin sürekli olarak çağrılması, okuyucuyu sona ulaşılıncaya kadar koleksiyon üyeleri arasında ilerletir ve bu noktada WEAVE_END_OF_TLV değerini döndürür.
Uygulama bir kapsayıcıyı okumayı bitirdikten sonra, ExitContainer() yöntemini çağırarak öğeleri kapsayıcıdan sonra okumaya devam edebilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
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, bir EnterContainer() çağrısından sonra TLVReader nesnesinin durumunu geri yükler. Uygulamaların her EnterContainer() çağrısına karşılık gelen bir çağrı yapması ve EnterContainer() yöntemi tarafından döndürülen bağlam değerini iletmesi gerekir.ExitContainer()
ExitContainer() işlevi döndürüldüğünde, okuyucu, kapsayıcıyı izleyen ilk öğenin hemen önüne yerleştirilir. Bu noktadan itibaren uygulama, kalan öğeler arasında ilerlemek için Next() yöntemini kullanabilir.
EnterContainer() çağrıldıktan sonra, uygulamalar temel kapsayıcıdaki tüm öğelerin okunup okunmadığına bakılmaksızın herhangi bir zamanda bir okuyucuda ExitContainer() işlevini çağırabilir.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( bool & v )
Geçerli öğenin değerini Bool türü olarak alın.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( int8_t & v )
Geçerli öğenin değerini 8 bit imzalı tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kısaltılır.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( int16_t & v )
Geçerli öğenin değerini 16 bit imzalı tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kısaltılır.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( int32_t & v )
Geçerli öğenin değerini 32 bit imzalı tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kısaltılır.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( int64_t & v )
Geçerli öğenin değerini 64 bit imzalı tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kısaltılır.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( uint8_t & v )
Geçerli öğenin değerini 8 bitlik imzasız tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kısaltılır. Benzer şekilde, kodlanmış tam sayı değeri negatifse değer imzasız olarak dönüştürülür.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( uint16_t & v )
Geçerli öğenin değerini 16 bit imzasız tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kısaltılır. Benzer şekilde, kodlanmış tam sayı değeri negatifse değer imzasız olarak dönüştürülür.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( uint32_t & v )
Geçerli öğenin değerini 32 bit imzalanmamış tam sayı olarak alın.
Kodlanmış tam sayı değeri, çıkış veri türünden büyükse sonuçta elde edilen değer kısaltılır. Benzer şekilde, kodlanmış tam sayı değeri negatifse değer imzasız olarak dönüştürülür.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( uint64_t & v )
Geçerli öğenin değerini 64 bit imzalanmamış tam sayı olarak alın.
Kodlanmış tam sayı değeri negatifse değer, imzasız hâline dönüştürülür.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Get
WEAVE_ERROR Get( float & v )
Get
WEAVE_ERROR Get( double & v )
Geçerli öğenin değerini çift duyarlıklı kayan nokta sayısı olarak alın.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
GetBufHandle
uintptr_t GetBufHandle( void ) const
GetBytes
WEAVE_ERROR GetBytes( uint8_t *buf, uint32_t bufSize )
Geçerli baytın veya UTF8 dize öğesinin değerini alın.
Gerekli giriş arabelleği boyutunu belirlemek için GetBytes() yöntemini çağırmadan önce GetLength() yöntemini çağırın.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||
Döndürülen Değerler |
|
GetContainerType
TLVType GetContainerType( void ) const
TLVReader öğesinin şu anda okumakta olduğu kapsayıcının türünü döndürür.
GetContainerType() yöntemi, TLVReader'ın içinde bulunduğu TLV kapsayıcısının türünü döndürür. TLVReader, bir TLV kodlamasının en dış düzeyine yerleştirilirse (yani, en dıştaki TLV öğesinin öncesinde, üzerine veya sonrasında) yöntem, kTLVType_NotSpecified değerini döndürür.
Ayrıntılar | |
---|---|
İadeler |
Geçerli kapsayıcının TLVType öğesi veya TLVReader bir kapsayıcı içine yerleştirilmemişse kTLVType_NotSpecified.
|
GetControlByte
uint16_t GetControlByte( void ) const
Geçerli TLV öğesiyle ilişkilendirilmiş kontrol baytını döndürür.
İdeal olarak, hiç kimsenin denetim baytını bilmesi gerekmez ve TLV'nin yalnızca dahili uygulaması bu bayta erişebilmelidir. Ancak yine de, kontrol baytına erişebilmek, TLVDebugUtilities (TLV arabellek içeriğini yazdırırken etiket kontrol baytının kodunu çözmeye çalışan) hata ayıklama amacıyla hata ayıklama açısından yararlıdır.
Ayrıntılar | |
---|---|
İadeler |
Mevcut TLV öğesiyle ilişkili kontrol baytını içeren imzalanmamış bir tam sayı. Okuyucu, bir öğe üzerine konumlandırılmazsa kTLVControlByte_NotSpecified hatası döndürülür.
|
GetDataPtr
WEAVE_ERROR GetDataPtr( const uint8_t *& data )
Bir TLV baytının veya UTF8 dize öğesinin ilk kodlanmış baytına işaretçi alın.
Bu yöntem, temel giriş arabelleğindeki kodlanmış dize değerine doğrudan bir işaretçi döndürür. Yöntem başarılı olmak için dize değerinin bütününün tek bir arabellekte mevcut olmasını gerektirir. Aksi takdirde, yöntem WEAVE_ERROR_TLV_UNDERRUN değerini döndürür. Bu, birden fazla bitişik olmayan arabelleğe ait veriler okunurken sınırlı kullanım yöntemi sağlar.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
GetLength
uint32_t GetLength( void ) const
Mevcut TLV öğesiyle ilişkili verilerin uzunluğunu döndürür.
Veri uzunluğu yalnızca UTF8 dizesi veya bayt dizesindeki öğeler için geçerlidir. UTF8 dizeleri için döndürülen değer karakter sayısı değil, dizedeki bayt sayısıdır.
Ayrıntılar | |
---|---|
İadeler |
Geçerli TLV öğesiyle ilişkili verilerin uzunluğu (bayt cinsinden); geçerli öğe bir UTF8 dizesi ya da bayt dizesi değilse veya okuyucu bir öğede konumlandırılmamışsa 0.
|
GetLengthRead
uint32_t GetLengthRead( void ) const
Okuyucunun başlatılmasından bu yana okunan toplam bayt sayısını döndürür.
Ayrıntılar | |
---|---|
İadeler |
Okuyucunun başlatılmasından bu yana okunan toplam bayt sayısı.
|
GetReadPoint
const uint8_t * GetReadPoint( void ) const
Temel giriş arabelleğinde, okuyucunun geçerli konumuna karşılık gelen noktayı getirir.
Ayrıntılar | |
---|---|
İadeler |
Okuyucunun mevcut konumuna karşılık gelen temel giriş arabelleğine gösterilen 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şılana 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ş sonlandırılmış dize olarak alın.
Gerekli giriş arabelleği boyutunu belirlemek için GetBytes() yöntemini çağırmadan önce GetLength() yöntemini çağırın. Girdi arabelleği, null karakteri içerecek şekilde dize uzunluğundan en az bir bayt büyük olmalıdır.
Ayrıntılar | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||
Döndürülen Değerler |
|
GetTag
uint64_t GetTag( void ) const
Geçerli TLV öğesiyle ilişkilendirilen 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.) birlikte kullanılabilir.
Ayrıntılar | |
---|---|
İadeler |
Geçerli TLV öğesiyle ilişkili etiket hakkında bilgi içeren imzasız bir tam sayı.
|
GetType
TLVType GetType( void ) const
Başlat
void Init( const TLVReader & aReader )
Başlat
void Init( const uint8_t *data, uint32_t dataLen )
Başlat
void Init( PacketBuffer *buf, uint32_t maxLen )
Tek bir PacketBuffer'dan okumak için bir TLVReader nesnesi başlatır.
Ayrıştırma arabelleğin başlangıç konumundan (buf->DataStart()) başlar ve arabellekteki verilerin sonuna (buf->Datalen() ile belirtildiği gibi) veya maxLen baytları ayrıştırılana kadar devam eder.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
Başlat
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Bir veya daha fazla PacketBuffers'dan okumak için bir TLVReader nesnesi başlatır.
Ayrıştırma, ilk arabelleğin başlangıç konumunda (buf->DataStart()) başlar. allowDiscontiguousBuffers doğru değerine ayarlanırsa okuyucu, Next() işaretçileri tarafından bağlanan arabellek zincirinde ilerler. Arabellek zincirindeki tüm veriler tüketilene (buf->Datalen() ile belirtildiği gibi) 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 sonraki TLV öğesine ilerletir.
Next() yöntemi, okuyucu nesnesini, aynı kapsama bağlamında yer alan bir TLV kodlamasındaki sonraki öğeye konumlandırır. Özellikle, okuyucu bir TLV kodlamasının en dış düzeyinde konumlandırılmışsa Next() fonksiyonunun çağrılması okuyucuyu bir sonraki, en üstteki öğeye ilerletir. Okuyucu bir TLV kapsayıcı öğesinin (yapı, dizi veya yol) içine yerleştirilmişse Next() işlevinin çağrılması okuyucuyu kapsayıcının bir sonraki üye öğesine ilerletir.
Next(), okuyucu hareketini geçerli kapsayıcı bağlamıyla sınırladığından, okuyucu bir kapsayıcı öğesine yerleştirildiğinde Next() çağrısı, kapsayıcıdan üzerine geçerek üye öğeleri (ve iç içe yerleştirilmiş herhangi bir kapsayıcının üyeleri) kapsayıcıdan sonraki ilk öğeye ulaşana kadar atlanır.
Belirli bir kapsama bağlamında başka öğe yoksa Next() yöntemi WEAVE_END_OF_TLV hatası döndürür ve okuyucunun konumu değişmez.
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Döndürülen Değerler |
|
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 completedType, uint64_t requestedTag) yöntemi, Next() ile aynı davranışa sahip olan pratik bir yöntemdir. Ancak yeni TLV öğesinin türü ve etiketinin, sağlanan bağımsız değişkenlerle eşleştiğini de doğrular.
Ayrıntılar | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||
Döndürülen Değerler |
|
OpenContainer
WEAVE_ERROR OpenContainer( TLVReader & containerReader )
Bir TLV kapsayıcı öğesinin üyelerini okumak için yeni bir TLVReader nesnesi 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 nesnesi başlatır. OpenContainer() çağrıldığında mevcut TLVReader nesnesi, okunması için kapsayıcı öğesine 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şvurur. Bu okuyucu kapsayıcı okuyucu, OpenContainer() işlevi çağrılan okuyucu ise üst okuyucu olarak bilinir.
OpenContainer() yöntemi döndüğünde, kapsayıcı okuyucu kapsayıcının ilk üyesinden hemen önce konumlandırılır. Kapsayıcı okuyucuda Next() çağrısı yapıldığında koleksiyon üyeleri arasında sona ulaşılana kadar ilerler ve bu noktada okuyucu WEAVE_END_OF_TLV sonucunu döndürür.
Kapsayıcı okuyucu açıkken uygulamalar, üst okuyucuda çağrı yapmamalı veya durumunu başka bir şekilde değiştirmemelidir. Bir uygulama kapsayıcı okuyucuyu kullanmayı bitirdikten sonra, üst okuyucuda CloseContainer() işlevini çağırarak kapsayıcı okuyucuyu bağımsız değişken olarak geçirerek kapatmalıdır. Uygulamalar, temel kapsayıcıda bulunan tüm öğeleri okumadan, herhangi bir noktada kapsayıcı okuyucuyu kapatabilir. Kapsayıcı okuyucu kapatıldıktan sonra uygulamalar üst okuyucuyu kullanmaya devam edebilir.
Kapsayıcı okuyucu, üst okuyucudan çeşitli yapılandırma özelliklerini devralır. Desteklenen biçimler şunlardır:
- Örtülü profil kimliği (ImplicitProfileId)
- Uygulama veri işaretçisi (OAuth)
- GetNextBuffer işlevi işaretçisi
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
Atla
WEAVE_ERROR Skip( void )
TLVReader nesnesini, geçerli TLV öğesinin hemen sonrasına ilerletir.
Jump() yöntemi, okuyucu nesnesini geçerli TLV öğesinden hemen sonra konumlandırır. Böylece sonraki bir Next() çağrısı, okuyucuyu bir sonraki öğeye ilerletir. Next() işlevinde olduğu gibi okuyucu, çağrı sırasında bir kapsayıcı öğesine yerleştirilmişse kapsayıcının üyeleri atlanır. Okuyucu herhangi bir öğenin üzerine yerleştirilmezse konumu değişmez.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Döndürülen Değerler |
|
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 döndürülen değeri kontrol etmeye eşdeğer bir kullanım yöntemidir.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Döndürülen Değerler |
|
Korunan işlevler
ClearElementState
void ClearElementState( void )
ElementType
TLVElementType ElementType( void ) const
Bu, mControlByte'tan TLVElementType değerini döndüren özel bir yöntemdir.
EnsureData
WEAVE_ERROR EnsureData( WEAVE_ERROR noDataErr )
GetElementHeadLength
WEAVE_ERROR GetElementHeadLength( uint8_t & elemHeadBytes ) const
Bu, TLV öğe kafası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 arabelleği olmadan okuyarak atlayın.
Ayrıntılar | |||||
---|---|---|---|---|---|
Döndürülen Değerler |
|
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 )