nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Weave TLV biçiminde veri yazmak için bellek açısından verimli bir kodlayıcı sağlar.
Özet
TLVWriter, Weave TLV verileri için yalnızca ileriye yönelik, akış tarzı bir kodlayıcı uygular. Uygulamalar, yazarın Put() yöntemlerinden birini çağırarak ve gerektiğinde ilişkili etiket ve değer bilgilerini ileterek bir kodlamaya veri yazar. Benzer şekilde uygulamalar, yazarın OpenContainer() veya EnterContainer() yöntemlerini çağırarak TLV kapsayıcı türlerini (yapılar, diziler veya yollar) kodlayabilir.
TLVWriter nesnesi, doğrudan sabit bir çıkış arabelleğine veya bir ya da daha fazla PacketBuffer nesne zincirine veri yazabilir. Ayrıca uygulamalar, çıkışı rastgele bir hedefe (ör. bir yuva veya etkinlik sırası) yönlendirmek için kendi GetNewBuffer
ve FinalizeBuffer
işlevlerini sağlayabilir.
Devralma
Doğrudan Bilinen Alt Sınıflar: nl::Weave::TLV::CircularTLVWriter
Korunan türler |
|
---|---|
@72{
|
enum |
Herkese açık türler |
|
---|---|
FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
|
WEAVE_ERROR(* TLVWriter nesnesinden çıkışın sonlandırılmasını gerçekleştirmek için kullanılan bir işlev. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* TLVWriter'a yeni çıkış arabelleği alanı sağlayan bir işlev. |
Herkese açık özellikler |
|
---|---|
AppData
|
void *
Uygulamaya özgü veriler için kullanılabilecek işaretçi alanı.
|
FinalizeBuffer
|
TLVWriter sonlandırıldığında çağrılacak bir işlevin işaretçisi.
|
GetNewBuffer
|
TLVWriter'a yeni çıkış arabelleği alanı sağlayacak bir işlevin işaretçisi.
|
ImplicitProfileId
|
uint32_t
Örtülü biçimde kodlanması gereken etiketlerin profil kimliğidir.
|
Korunan özellikler |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
Kamu işlevleri |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
OpenContainer() çağrısından sonra TLV kapsayıcısının yazılmasını tamamlar.
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
TLV baytlık dize değerini kodlar.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Önceden kodlanmış bir üye öğeleri grubundan bir TLV kapsayıcı öğeyi kodlar.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Önceden kodlanmış bir kapsayıcının üye öğelerini içeren bir TLV kapsayıcı öğesini kodlar.
|
CopyElement(TLVReader & reader)
|
Bir okuyucu nesnesinden TLV öğesini yazara kopyalar.
|
CopyElement(uint64_t tag, TLVReader & reader)
|
|
EndContainer(TLVType outerContainerType)
|
Bir TLV kapsayıcı öğesinin kodlamasını tamamlar.
|
Finalize(void)
|
TLV kodlamasını yazmayı bitirin.
|
GetContainerType(void) const
|
TLVWriter’ın geçerli olarak yazmakta olduğu kapsayıcı türünü döndürür.
|
GetLengthWritten(void)
|
uint32_t
Yazar başlatıldığından beri yazılan toplam bayt sayısını döndürür.
|
Init(uint8_t *buf, uint32_t maxLen)
|
void
Tek bir çıkış arabelleğine yazmak için bir TLVWriter nesnesi başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Tek bir PacketBuffer'a yazmak için bir TLVWriter nesnesi başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Bir veya daha fazla PacketBuffers'a yazmak için bir TLVWriter nesnesi başlatır.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Dinamik bir arabelleğe yazmak için bir TLVWriter nesnesi başlatır.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
Put(uint64_t tag, int8_t v)
|
TLV işaretli tam sayı değerini kodlar.
|
Put(uint64_t tag, int8_t v, bool preserveSize)
|
TLV işaretli tam sayı değerini kodlar.
|
Put(uint64_t tag, int16_t v)
|
|
Put(uint64_t tag, int16_t v, bool preserveSize)
|
|
Put(uint64_t tag, int32_t v)
|
|
Put(uint64_t tag, int32_t v, bool preserveSize)
|
|
Put(uint64_t tag, int64_t v)
|
|
Put(uint64_t tag, int64_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint8_t v)
|
TLV imzalanmamış tam sayı değerini kodlar.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
TLV imzalanmamış tam sayı değerini kodlar.
|
Put(uint64_t tag, uint16_t v)
|
|
Put(uint64_t tag, uint16_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint32_t v)
|
|
Put(uint64_t tag, uint32_t v, bool preserveSize)
|
|
Put(uint64_t tag, uint64_t v)
|
|
Put(uint64_t tag, uint64_t v, bool preserveSize)
|
|
Put(uint64_t tag, float v)
|
|
Put(uint64_t tag, double v)
|
TLV kayan nokta değerini kodlar.
|
PutBoolean(uint64_t tag, bool v)
|
TLV boole değerini kodlar.
|
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
|
TLV baytlık dize değerini kodlar.
|
PutNull(uint64_t tag)
|
TLV null değerini kodlar.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
Önceden kodlanmış bir üye öğeleri grubundan bir TLV kapsayıcı öğeyi kodlar.
|
PutString(uint64_t tag, const char *buf)
|
TLV UTF8 dize değerini kodlar.
|
PutString(uint64_t tag, const char *buf, uint32_t len)
|
TLV UTF8 dize değerini kodlar.
|
PutStringF(uint64_t tag, const char *fmt, ...)
|
Dize çıktısını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
|
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
|
Yeni bir TLV kapsayıcı öğesini kodlamaya başlar.
|
StartPutBytes(uint64_t tag, uint32_t totalLen)
|
Birden çok parçadaki bir TLV bayt dizesini kodlar.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Dize çıktısını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
|
Herkese açık statik işlevler |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
PacketBuffers zincirine yazma için TLVWriter FinalizeBuffer işlevinin uygulaması.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Dinamik bir arabelleğe yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
PacketBuffers zincirine yazmak için TLVWriter GetNewBuffer işlevinin uygulaması.
|
Korunan işlevler |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Kapsayıcının, kapsayıcının başlangıç / açma noktasında CloseContainer simgesi için yer ayırması gerekip gerekmediğini belirleyin.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Kapsayıcının, kapsayıcının başlangıç / açma noktasında CloseContainer sembolü için yer ayırıp ayırmayacağını belirleyin.
|
SetContainerOpen(bool aContainerOpen)
|
void
|
WriteData(const uint8_t *p, uint32_t len)
|
|
WriteElementHead(TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
|
|
WriteElementWithData(TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)
|
Korunan türler
@72
@72
Herkese açık türler
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
TLVWriter nesnesinden çıkışın sonlandırılmasını gerçekleştirmek için kullanılan bir işlev.
Bu tür işlevler, TLVWriter'ın Finalize() yöntemi çağrıldığında çağrılır. İşlevin, yazar nesnesinin çıktısının tüketilmesiyle ilgili olarak gerekli tüm temizleme veya tamamlama işlemlerini yapması beklenir. Bunlara örnek olarak kodlamanın son uzunluğunu kaydetme veya bir dosya tanımlayıcıyı kapatma gibi işlemler verilebilir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
TLVWriter'a yeni çıkış arabelleği alanı sağlayan bir işlev.
Bu tür işlevler, TLVWriter'ın yazması için yeni arabellek alanı hazırlamak amacıyla kullanılır. Çağrıldığında, işlevin ilişkilendirilmiş maksimum uzunlukla birlikte yeni verilerin yazılması gereken bellek konumuna bir işaretçi döndürmesi beklenir. İşlev, verileri tutmak için yeni bir arabellek ayırarak veya mevcut bir arabelleğe önceden yazılmış verileri temizleyerek yazma alanı sağlayabilir.
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ı.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
TLVWriter sonlandırıldığında çağrılacak bir işlevin işaretçisi.
Bir TLVWriter nesnesi, Finalize() yöntemi her çağrıldığında FinalizeBuffer işlevini çağırır. Uygulamalar, işlev işaretçisini Finalize() çağrısından önce herhangi bir noktada ayarlayabilir. İşaretçi varsayılan olarak NULL değerine ayarlanır. Bu, Finalize() yönteminin işlevi çağırmaktan vazgeçmesine neden olur.
FinalizeBuffer işlevinin uygulanması hakkında daha fazla bilgi için FinalizeBufferFunct tür tanımına bakın.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
TLVWriter'a yeni çıkış arabelleği alanı sağlayacak bir işlevin işaretçisi.
Mevcut çıkış arabelleğinin boyutunu aşan verileri yazmak için bir girişimde bulunulduğunda TLVWriter nesnesi, GetNewBuffer işlevini çağırır. NULL (varsayılan değer) değerine ayarlanırsa çıkış verisi geçerli arabelleğe taşarsa yazar WEAVE_ERROR_NO_MEMORY döndürür.
GetNewBuffer, bir uygulama tarafından herhangi bir zamanda ayarlanabilir, ancak genellikle yazıcı başlatıldığında ayarlanır.
GetNewBuffer işlevinin uygulanması hakkında ek bilgi için GetNewBufferFunct tür tanımına bakın.
ImplicitProfileId
uint32_t ImplicitProfileId
Örtülü biçimde kodlanması gereken etiketlerin profil kimliğidir.
Yazardan yeni bir öğeyi kodlaması istendiğinde, yeni öğeyle ilişkilendirilen etiketin profil kimliği ImplicitProfileId
üyesinin değeriyle eşleşiyorsa yazar, işlemdeki profil kimliğini atlayarak etiketi örtülü biçimde kodlar.
Varsayılan olarak ImplicitProfileId
özelliği, yazara örtülü olarak kodlanmış etiketler yayınlamamasını bildiren kProfileIdNotSpecified değerine ayarlanır. Uygulamalar kodlamadaki geçerli noktadan başlayarak kodlama etiketlerini örtülü biçimde etkinleştirmek için herhangi bir zamanda ImplicitProfileId
özelliğini ayarlayabilir. Ayarlanacak uygun profil kimliği, genellikle söylenen uygulamanın veya protokolün bağlamına bağlıdır.
Korunan özellikler
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mContainerType
TLVType mContainerType
mLenWritten
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
mRemainingLen
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
Kamu işlevleri
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
OpenContainer() çağrısından sonra TLV kapsayıcısının yazılmasını tamamlar.
CloseContainer() yöntemi, bir OpenContainer() çağrısından sonra üst TLVWriter nesnesinin durumunu geri yükler. Her OpenContainer() çağrısı için uygulamalar CloseContainer() çağrısına karşılık gelen bir çağrı yapmalıdır. Böylece, her iki yöntemde de aynı kapsayıcı yazıcısına bir referans iletilmelidir.
CloseContainer() işlevi döndürüldüğünde, uygulamalar kapsayıcı öğesinden sonra görünen ek TLV öğeleri yazmak için üst yazıcıyı kullanmaya devam edebilir. Bu noktada, sağlanan kapsayıcı yazıcı "başlatıldı" olarak kabul edilmeli ve yeniden başlatma yapılmadan kullanılmamalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
TLV baytlık dize değerini kodlar.
Bu, StartPutBytes ile kullanılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
TLVReader nesnesinden bir TLV kapsayıcı öğesi kopyalar.
CopyContainer() yeni bir TLV kapsayıcı öğesini, bir TLVReader nesnesinin geçerli konumunda bulunan önceden kodlanmış bir kapsayıcı öğesini kopyalayarak kodlar. Yöntem, kaynak kodlamadan kapsayıcının türünü, etiketini ve öğelerini kopyalayarak yeni kapsayıcı öğenin tamamını tek bir çağrıda yazar. Yöntem döndürüldüğünde, author nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Döndürülen Değerler |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Önceden kodlanmış bir üye öğeleri grubundan bir TLV kapsayıcı öğeyi kodlar.
CopyContainer() yöntemi, TLVReader nesnesinden alınan bir üye öğeleri grubunu içeren yeni bir TLV kapsayıcı öğesini (yapı, dizi veya yol) kodlar. Yöntem çağrıldığında, sağlanan okuyucu nesnesinin bir TLV kapsayıcı öğesine yerleştirilmesi beklenir. Yeni kodlanmış kapsayıcı, giriş kapsayıcısıyla aynı tür ve üyelere sahip olacaktır. Yeni kapsayıcının etiketi giriş parametresi olarak belirtilir.
Yöntem döndürüldüğünde, author nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Döndürülen Değerler |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Önceden kodlanmış bir kapsayıcının üye öğelerini içeren bir TLV kapsayıcı öğesini kodlar.
CopyContainer() yöntemi, önceden kodlanmış bir kapsayıcının içeriğinden alınan bir grup üye öğelerini içeren yeni bir TLV kapsayıcı öğesini (yapı, dizi veya yol) kodlar. Yöntem çağrıldığında, sağlanan giriş arabelleğindeki veriler bir TLV kapsayıcı öğesi olarak ayrıştırılır ve giriş kapsayıcısıyla aynı tür ve üyelere sahip yeni bir kapsayıcı yazılır. Yeni kapsayıcının etiketi giriş parametresi olarak belirtilir.
Yöntem döndürüldüğünde, author nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||
Döndürülen Değerler |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Bir okuyucu nesnesinden TLV öğesini yazara kopyalar.
CopyElement() yöntemi, türü, etiketi ve değeri bir TLVReader nesnesinden alınan yeni bir TLV öğesini kodlar. Yöntem çağrıldığında, sağlanan okuyucu nesnesinin kaynak TLV öğesine yerleştirilmesi beklenir. Yeni kodlanmış öğe, giriş kapsayıcısıyla aynı tür, etiket ve içeriğe sahip olur. Sağlanan öğe bir TLV kapsayıcısıysa (yapı, dizi veya yol) kapsayıcının tüm içeriği kopyalanır.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Döndürülen Değerler |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
Bir TLV kapsayıcı öğesinin kodlamasını tamamlar.
EndContainer() yöntemi, bir TLV kapsayıcı öğesinin kodlamasını tamamlar ve önceki bir StartContainer() çağrısından sonra TLVWrite nesnesinin durumunu geri yükler. Her StartContainer() uygulaması çağrısı için, StartContainer() çağrısının döndürdüğü TLVType değerini ileterek EndContainer() EndContainer() döndürüldüğünde, yazıcı nesnesi, kapsayıcı öğesini izleyen ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Sonlandır
WEAVE_ERROR Finalize( void )
TLV kodlamasını yazmayı bitirin.
Finalize() yöntemi, temel çıkış arabelleğine TLV kodlaması yazma işlemini tamamlar. Yöntem, arabelleğin içeriklerini kullanmadan önce uygulama tarafından çağrılmalıdır. Finalize() yalnızca geçerli yazar için açık kapsayıcı yazarı olmadığında çağrılabilir. (Bkz. OpenContainer()
).
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Döndürülen Değerler |
|
GetContainerType
TLVType GetContainerType( void ) const
TLVWriter’ın geçerli olarak yazmakta olduğu kapsayıcı türünü döndürür.
GetContainerType() yöntemi, TLVWriter'ın içinde yazmakta olduğu TLV kapsayıcısının türünü döndürür. TLVWriter bir kapsayıcı içinde öğe yazmıyorsa (yani, kodlamanın en dış düzeyinde yazıyorsa) yöntem kTLVType_NotSpecified değerini döndürür.
Ayrıntılar | |
---|---|
İadeler |
Geçerli kapsayıcının TLVType veya TLVWriter bir kapsayıcı içine öğe yazmıyorsa kTLVType_NotSpecified.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Yazar başlatıldığından beri yazılan toplam bayt sayısını döndürür.
Ayrıntılar | |
---|---|
İadeler |
Yazarın başlatılmasından bu yana yazılan toplam bayt sayısı.
|
Başlat
void Init( uint8_t *buf, uint32_t maxLen )
Başlat
void Init( PacketBuffer *buf, uint32_t maxLen )
Tek bir PacketBuffer'a yazmak için bir TLVWriter nesnesi başlatır.
Yazma, sağlanan arabellekteki mevcut verilerin son baytından hemen sonra başlar.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
Başlat
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Bir veya daha fazla PacketBuffers'a yazmak için bir TLVWriter nesnesi başlatır.
Yazma, belirtilen arabellekteki mevcut verilerin son baytından hemen sonra başlar. allowDiscontiguousBuffers
değeri doğru ise yazılan veri miktarını karşılamak için ek PacketBuffer'lar ayrılır ve sağlanan arabelleğe zincirlenir. Belirtilen çıkış tamponu zaten bir arabellek zincirinin başındaysa yeni tamponlar ayrılmadan önce çıkış, zincirde sonraki arabelleklere yazılır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Dinamik bir arabelleğe yazmak için bir TLVWriter nesnesi başlatır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
TLV kapsayıcı öğesinin üyelerini yazmak için yeni bir TLVWriter nesnesi başlatır.
OpenContainer() yöntemi, TLV kapsayıcı öğelerini (yapı, diziler veya yollar) bir kodlamaya yazmak için kullanılır. Yöntem, yeni kapsayıcının türünü ve etiketini (varsa) ve kapsayıcının öğelerini yazmak amacıyla başlatılacak yeni bir yazar nesnesine (kapsayıcı yazarı) referansı alır. Uygulamalar, kapsayıcı yazıcısını kullanarak yeni kapsayıcının üyelerini yazar ve ardından, kapsayıcı kodlamasını tamamlamak için CloseContainer() işlevini çağırır.
Kapsayıcı yazıcı açıkken uygulamalar, ana yazarın durumunu açmamalı veya başka bir şekilde değiştirmemelidir.
Kapsayıcı yazıcı, çeşitli yapılandırma özelliklerini üst yazardan devralır. Desteklenen biçimler şunlardır:
- Örtülü profil kimliği (ImplicitProfileId)
- Uygulama veri işaretçisi (OAuth)
- GetNewBuffer ve FinalizeBuffer işlevi işaretçileri
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Döndürülen Değerler |
|
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int8_t v )
TLV işaretli tam sayı değerini kodlar.
Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
TLV işaretli tam sayı değerini kodlar.
Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int16_t v )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int32_t v )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int64_t v )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
TLV imzalanmamış tam sayı değerini kodlar.
Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
TLV imzalanmamış tam sayı değerini kodlar.
Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, float v )
Veri destekli
WEAVE_ERROR Put( uint64_t tag, double v )
TLV kayan nokta değerini kodlar.
Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
TLV boole değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
TLV baytlık dize değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
TLV null değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Önceden kodlanmış bir üye öğeleri grubundan bir TLV kapsayıcı öğeyi kodlar.
PutPreEncodedContainer() yöntemi, önceden kodlanmış bir arabellekten alınan bir üye öğeleri grubu içeren yeni bir TLV kapsayıcı öğesini (yapı, dizi veya yol) kodlar. Giriş arabelleğinin, belirtilen kapsayıcı türüyle ilişkili kurallara uyan etiketlere sahip sıfır veya daha fazla tam kodlanmış TLV öğesi içermesi beklenir (ör. yapı üyelerinin etiketleri olmalıdır, dizi üyeleri ise olmamalıdır).
Bu yöntem, kapsayıcı öğesinin tamamını tek bir çağrıda kodlar. PutPreEncodedContainer() döndürüldüğünde, yazar nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Döndürülen Değerler |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
TLV UTF8 dize değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
TLV UTF8 dize değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Dize çıktısını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
PutStringF, sprintf'in analogudur. Çıktı, karakter arabelleği yerine TLV öğesinde depolanır. Genişletilmiş Printf işlevi kullanılabilir olduğunda işlev, sonuç dizesini sürekli olmayan bir temel depolama alanına verebilir. Uygulama aşağıdaki Printf geliştirmelerini destekler:
Platform, putchar yerine özel bir geri çağırma işlevini çağırmaya olanak tanıyan geri çağırmaya dayalı bir vcbprintf
sağlar.
Platform, vsnprintf
etiketinin vsnprintf_ex
adlı bir varyantını sağlar. Bu varyant, vsnprintf ile tam olarak benzerdir. Tek fark, çıkışın ilk n
karakterini atlayan koşulları içermesidir.
Geri çağırmaya dayalı işlevin en basit yöntem olabileceğini ve en az miktarda kod kullanabileceğini, ancak vsprintf_ex
çeşitli işlevlerin daha az yığın tüketeceğini unutmayın.
Yukarıdakilerin ikisi de mevcut değilse ancak platform malloc
sağlıyorsa işlev, çıkışı saklamak için geçici bir arabellek ayırır. Platform, yazdırmaf ailesine veya Malloc'a geliştirme sağlamadığında, çıktı, mevcut TLV depolama alanındaki sürekli duruma uyacak şekilde kısaltılır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
Yeni bir TLV kapsayıcı öğesini kodlamaya başlar.
StartContainer() yöntemi, TLV kapsayıcı öğelerini (yapı, diziler veya yollar) bir kodlamaya yazmak için kullanılır. Yöntem, yeni kapsayıcının türünü ve etiketini (varsa) ve kapsayıcıyı yazmak için kullanılırken yazarın mevcut bağlamını kaydetmek için kullanılacak bir TLVType değerine başvuru alır.
StartContainer() yöntemi döndürüldüğünde, uygulama kapsayıcının öğelerini yazmak için mevcut TLVWriter nesnesini kullanmalıdır. İşlem tamamlandığında, uygulamanın kapsayıcının kodlamasını bitirmek için EndContainer() yöntemini çağırması gerekir.
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Döndürülen Değerler |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Birden çok parçadaki bir TLV bayt dizesini kodlar.
Bu, ContinuePutBytes ile kullanılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Döndürülen Değerler |
|
VPutDizesi
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Dize çıktısını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
PutStringF, sprintf'in analogudur. Çıktı, karakter arabelleği yerine TLV öğesinde depolanır. Genişletilmiş Printf işlevi kullanılabilir olduğunda işlev, sonuç dizesini sürekli olmayan bir temel depolama alanına verebilir. Uygulama aşağıdaki Printf geliştirmelerini destekler:
Platform, putchar yerine özel bir geri çağırma işlevini çağırmaya olanak tanıyan geri çağırmaya dayalı bir vcbprintf
sağlar.
Platform, vsnprintf
etiketinin vsnprintf_ex
adlı bir varyantını sağlar. Bu varyant, vsnprintf ile tam olarak benzerdir. Tek fark, çıkışın ilk n
karakterini atlayan koşulları içermesidir.
Geri çağırmaya dayalı işlevin en basit yöntem olabileceğini ve en az miktarda kod kullanabileceğini, ancak vsprintf_ex
çeşitli işlevlerin daha az yığın tüketeceğini unutmayın.
Yukarıdakilerin ikisi de mevcut değilse ancak platform malloc
sağlıyorsa işlev, çıkışı saklamak için geçici bir arabellek ayırır. Platform, yazdırmaf ailesine veya Malloc'a geliştirme sağlamadığında, çıktı, mevcut TLV depolama alanındaki sürekli duruma uyacak şekilde kısaltılır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
Herkese açık statik işlevler
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
PacketBuffers zincirine yazma için TLVWriter FinalizeBuffer işlevinin uygulaması.
FinalizePacketBuffer() işlevi, PacketBuffers zincirine yazmak için TLVWriter kullanırken gerekli olan son haline getirme işlemini gerçekleştirir. İşlev, GetNewPacketBuffer() işleviyle birlikte kullanılmak üzere tasarlanmıştır.
FinalizePacketBuffer() işlevinin API'si hakkında daha fazla bilgi için FinalizeBufferFunct türü tanımına bakın.
GetNewBuffer_Malloced
WEAVE_ERROR GetNewBuffer_Malloced( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
Dinamik bir arabelleğe yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.
GetNewBuffer_Malloced() işlevi, kodlamayı depolamak için gerektiğinde temel dinamik arabelleğin boyutunu iki katına çıkararak TLVWriter'a yeni çıkış alanı sağlar. İşlev, TLVWriter GetNewBuffer işlev işaretçisine atanmak üzere tasarlanmıştır.
GetNewBuffer_Malloced() işlevinin API'sı hakkında ek bilgi için GetNewBufferFunct tür tanımına bakın.
GetNewPacketBuffer
WEAVE_ERROR GetNewPacketBuffer( TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen )
PacketBuffers zincirine yazmak için TLVWriter GetNewBuffer işlevinin uygulaması.
GetNewPacketBuffer() işlevi, kodlamayı depolamak için gerektiğinde bir veya daha fazla PacketBuffers zinciri ayırarak bir TLVWriter'a yeni çıkış alanı sağlar. İşlev, TLVWriter GetNewBuffer işlev işaretçisine atanmak üzere tasarlanmıştır.
GetNewPacketBuffer'ı TLVWriter ile kullanırken, arabellek zincirini sonlandırmak için karşılık gelen FinalizePacketBuffer() işlevinin (veya bir eşdeğerinin) de kullanılması gerektiğini unutmayın.
GetNewPacketBuffer() işlevinin API'si hakkında ek bilgi için GetNewBufferFunct tür tanımına bakın.
Korunan işlevler
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
Kapsayıcının, kapsayıcının başlangıç / açma noktasında CloseContainer simgesi için yer ayırması gerekip gerekmediğini belirleyin.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Kapsayıcının, kapsayıcının başlangıç / açma noktasında CloseContainer sembolü için yer ayırıp ayırmayacağını belirleyin.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
WriteData
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
WriteElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
WriteElementWithData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )