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ı sunar.
Özet
TLVWriter, Weave TLV verileri için yalnızca ileriye yönelik, akış stili kodlayıcı uygular. Uygulamalar, yazarın Put() yöntemlerinden birini çağırarak ve gerektiği şekilde 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 çıktı arabelleğine veya bir ya da daha fazla PacketBuffer nesnesi zincirine veri yazabilir. Ayrıca uygulamalar, çıktıyı rastgele bir hedefe yönlendirmek için kendi GetNewBuffer
ve FinalizeBuffer
işlevlerini de sağlayabilir (ör. soket veya etkinlik sırası olabilir.
Devralma
Doğrudan Bilinen Alt Sınıflar: nl::Weave::TLV::CircularTLVWriter
Korumalı 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 kesinleştirilmesini gerçekleştirmek için kullanılan işlev. |
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
|
WEAVE_ERROR(* Bir TLVWriter'a yeni çıktı arabellek alanı sağlayan bir işlev. |
Herkese açık özellikler |
|
---|---|
AppData
|
void *
Uygulamaya özel veriler için kullanılabilecek bir işaretçi alanıdır.
|
FinalizeBuffer
|
TLVWriter sonlandırıldığında çağrılacak bir işlevin işaretçisi.
|
GetNewBuffer
|
Bir TLVWriter'a yeni çıktı arabellek alanı sağlayacak işlevin işaretçisi.
|
ImplicitProfileId
|
uint32_t
Örtülü biçimde kodlanması gereken etiketlerin profil kimliği.
|
Korunan özellikler |
|
---|---|
mBufHandle
|
uintptr_t
|
mBufStart
|
uint8_t *
|
mContainerType
|
|
mLenWritten
|
uint32_t
|
mMaxLen
|
uint32_t
|
mRemainingLen
|
uint32_t
|
mWritePoint
|
uint8_t *
|
Herkese açık işlevler |
|
---|---|
CloseContainer(TLVWriter & containerWriter)
|
OpenContainer() çağrısından sonra bir TLV kapsayıcısının yazma işlemini tamamlar.
|
ContinuePutBytes(const uint8_t *buf, uint32_t len)
|
TLV bayt dize değerini kodlar.
|
CopyContainer(TLVReader & container)
|
|
CopyContainer(uint64_t tag, TLVReader & container)
|
Önceden kodlanmış üye öğeleri grubundan bir TLV kapsayıcı öğesini kodlar.
|
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
|
Önceden kodlanmış bir kapsayıcıdaki üye öğeleri içeren bir TLV kapsayıcı öğesini kodlar.
|
CopyElement(TLVReader & reader)
|
Okuyucu nesnesindeki bir 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ın yazılmasını tamamlayın.
|
GetContainerType(void) const
|
TLVWriter'ın yazmakta olduğu kapsayıcı türünü döndürür.
|
GetLengthWritten(void)
|
uint32_t
Yazar başlatıldıktan sonra 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 nesnesini başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen)
|
void
Tek bir PacketBuffer'a yazmak için TLVWriter nesnesini başlatır.
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
Bir veya daha fazla PacketBuffers'a yazmak için bir TLVWriter nesnesini başlatır.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
Dinamik arabelleğe yazmak için bir TLVWriter nesnesini 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 imzasız tam sayı değerini kodlar.
|
Put(uint64_t tag, uint8_t v, bool preserveSize)
|
TLV imzasız 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 bayt dize değerini kodlar.
|
PutNull(uint64_t tag)
|
TLV boş değerini kodlar.
|
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
|
Önceden kodlanmış üye öğeleri grubundan bir TLV kapsayıcı öğesini 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 çıkışını TLV öğesindeki biçime göre 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)
|
Bir TLV bayt dizesini birden fazla parça halinde kodlar.
|
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
|
Dize çıkışını TLV öğesindeki biçime göre kodlayın.
|
Herkese açık statik işlevler |
|
---|---|
FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
|
PaketetBuffers zincirine yazmak için TLVWriter FinalizeBuffer işlevinin uygulanması.
|
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
Dinamik arabelleğe yazmak için TLVWriter GetNewBuffer işlevinin uygulaması.
|
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
|
PaketetBuffers zincirine yazmak için TLVWriter GetNewBuffer işlevinin uygulaması.
|
Korunan işlevler |
|
---|---|
IsCloseContainerReserved(void) const
|
bool
Kapsayıcının, kapsayıcıyı başlatma / açma noktasında CloseContainer simgesi için alan ayırması gerekip gerekmediğini belirleyin.
|
IsContainerOpen(void) const
|
bool
|
SetCloseContainerReserved(bool aCloseContainerReserved)
|
void
Kapsayıcının, kapsayıcıyı başlatma / açma noktasında CloseContainer simgesi için yer ayırması gerekip gerekmediğini ayarlayın.
|
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)
|
Korumalı 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 kesinleştirilmesini gerçekleştirmek için kullanılan 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ı almayla ilgili gerekli temizlik veya sonlandırmayı gerçekleştirmesi beklenir. Bunlara örnek olarak, kodlamanın son uzunluğunu kaydetme veya bir dosya tanımlayıcısını kapatma işlemleri verilebilir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Değerleri Döndür |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
Bir TLVWriter'a yeni çıktı arabellek alanı sağlayan bir işlev.
Bu tür işlevler, bir TLVWriter'ın yazması için yeni arabellek alanı hazırlamak amacıyla kullanılır. Çağrı yapıldığında, işlevin bir işaretçiyi, ilişkili maksimum uzunlukla birlikte yeni verilerin yazılması gereken bellek konumuna döndürmesi beklenir. İşlev, verileri saklamak için yeni bir arabellek ayırarak veya önceden yazılmış verileri mevcut bir arabellekten temizleyerek yazma alanı sağlayabilir.
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.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
TLVWriter sonlandırıldığında çağrılacak bir işlevin işaretçisi.
TLVWriter nesnesi, Finalize() yöntemi çağrıldığında FinalizeBuffer işlevini çağırır. Uygulamalar, Finalize() çağrısından önceki herhangi bir noktada işlev işaretçisini ayarlayabilir. Varsayılan olarak işaretçi NULL değerine ayarlanır. Bu durumda Finalize() yöntemi, işlev çağrısından vazgeçer.
FinalizeBuffer işlevini uygulama hakkında daha fazla bilgi için FinalizeBufferFunct türü tanımına bakın.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
Bir TLVWriter'a yeni çıktı arabellek alanı sağlayacak işlevin işaretçisi.
TLVWriter nesnesi, geçerli çıkış arabelleğinin boyutunu aşan verileri yazmaya yönelik bir girişimde bulunduğunda GetNewBuffer işlevini çağırır. NULL değerine (varsayılan değer) ayarlanırsa çıkış verileri mevcut arabellekten 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şlevini uygulama hakkında daha fazla bilgi için GetNewBufferFunct tür tanımına bakın.
ImplicitProfileId
uint32_t ImplicitProfileId
Örtülü biçimde kodlanması gereken etiketlerin profil kimliği.
Yazardan yeni bir öğeyi kodlaması istendiğinde, yeni öğeyle ilişkilendirilen etiketin profil kimliği ImplicitProfileId
üyesinin değeriyle eşleşirse yazar, işlemdeki profil kimliğini atlayarak etiketi dolaylı biçimde kodlar.
Varsayılan olarak ImplicitProfileId
özelliği, yazara örtülü olarak kodlanmış etiketler yayınlamamasını söyleyen kProfileIdNotSpecified değerine ayarlanır. Uygulamalar, kodlama etiketlerini kodlamadaki geçerli noktadan başlayarak örtülü biçimde etkinleştirmek için istedikleri zaman ImplicitProfileId
özelliğini ayarlayabilir. Ayarlanacak uygun profil kimliği genellikle konuşulan 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
Herkese açık işlevler
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
OpenContainer() çağrısından sonra bir TLV kapsayıcısının yazma işlemini tamamlar.
CloseContainer() yöntemi, OpenContainer() çağrısından sonra bir üst TLVWriter nesnesinin durumunu geri yükler. OpenContainer() uygulamalarına yapılan her çağrının, her iki yönteme de aynı kapsayıcı yazıcısına bir başvuru ileterek CloseContainer() çağrısına karşılık gelen bir çağrı yapması gerekir.
CloseContainer() döndürüldüğünde, uygulamalar kapsayıcı öğesinden sonra görünen ek TLV öğelerini yazmak için üst yazıcıyı kullanmaya devam edebilir. Bu noktada, sağlanan kapsayıcı yazıcısı "başlatılmamış" olarak kabul edilmelidir. ve yeniden başlatma yapılmadan kullanılmamalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
TLV bayt dize değerini kodlar.
Bu, StartPutBytes ile birlikte kullanılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
TLVReader nesnesinden bir TLV kapsayıcı öğesini kopyalar.
CopyContainer(), bir TLVReader nesnesinin geçerli konumunda bulunan önceden kodlanmış bir kapsayıcı öğesini kopyalayarak yeni bir TLV kapsayıcı öğesini kodlar. Yöntem, yeni kapsayıcı öğesinin tamamını bir çağrıda yazarak kapsayıcının türünü, etiketini ve öğelerini kaynak kodlamadan kopyalar. Yöntem geri döndüğünde, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için yazar nesnesi kullanılabilir.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Değerleri Döndür |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
Önceden kodlanmış üye öğeleri grubundan bir TLV kapsayıcı öğesini kodlar.
CopyContainer() yöntemi, bir TLVReader nesnesinden alınan üye öğe 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ı öğesi üzerinde konumlandırılması beklenir. Yeni kodlanmış kapsayıcı, giriş kapsayıcısıyla aynı türe ve üyelere sahip olur. Yeni kapsayıcının etiketi, giriş parametresi olarak belirtilir.
Yöntem geri döndüğünde, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için yazar nesnesi kullanılabilir.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Değerleri Döndür |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
Önceden kodlanmış bir kapsayıcıdaki üye öğeleri içeren bir TLV kapsayıcı öğesini kodlar.
CopyContainer() yöntemi, sağlanan önceden kodlanmış bir kapsayıcının içeriğinden alınan üye öğeleri grubunu 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 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 geri döndüğünde, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için yazar nesnesi kullanılabilir.
Ayrıntılar | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||
Değerleri Döndür |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
Okuyucu nesnesindeki bir 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 kodlanan öğe, giriş kapsayıcısıyla aynı türe, etikete ve içeriğe sahip olur. Sağlanan öğe bir TLV kapsayıcısı (yapı, dizi veya yol) ise kapsayıcının tüm içeriği kopyalanır.
Ayrıntılar | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||||||
Değerleri Döndür |
|
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 StartContainer()'ya yapılan önceki bir çağrıdan sonra bir TLVWrite nesnesinin durumunu geri yükler. StartContainer() uygulamalarına yapılan her çağrının, StartContainer() çağrısı tarafından döndürülen TLVType değerini ileterek EndContainer()'ya karşılık gelen bir çağrı yapması gerekir. EndContainer() döndürüldüğünde, kapsayıcı öğesini takip eden ek TLV öğeleri yazmak için yazar nesnesi kullanılabilir.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
Sonlandır
WEAVE_ERROR Finalize( void )
TLV kodlamasının yazılmasını tamamlayın.
Finalize() yöntemi, temel çıkış arabelleğine TLV kodlaması yazma işlemini tamamlar. Yöntem, arabelleğin içeriğini kullanmadan önce uygulama tarafından çağrılmalıdır. Finalize(), yalnızca geçerli yazar için açık kapsayıcı yazarları olmadığında çağrılabilir. (Bkz. OpenContainer()
).
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Değerleri Döndür |
|
GetContainerType
TLVType GetContainerType( void ) const
TLVWriter'ın yazmakta olduğu kapsayıcı türünü döndürür.
GetContainerType() yöntemi, TLVWriter'ın yazmakta olduğu TLV kapsayıcısının türünü döndürür. TLVWriter, kapsayıcı içinde öğe yazmıyorsa (yani bir kodlamanın en dış seviyesinde 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, kapsayıcı içinde öğe yazmıyorsa kTLVType_NotSpecified parametresi.
|
GetLengthWritten
uint32_t GetLengthWritten( void )
Yazar başlatıldıktan sonra yazılan toplam bayt sayısını döndürür.
Ayrıntılar | |
---|---|
İadeler |
Yazıcı başlatıldıktan sonra yazılan toplam bayt sayısı.
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Tek bir PacketBuffer'a yazmak için TLVWriter nesnesini başlatır.
Yazma, sağlanan arabellekteki mevcut verilerin son baytından hemen sonra başlar.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
Bir veya daha fazla PacketBuffers'a yazmak için bir TLVWriter nesnesini başlatır.
Yazma, belirtilen arabellekteki mevcut verilerin son baytından hemen sonra başlar. allowDiscontiguousBuffers
Doğru değerine ayarlanırsa, yazılan veri miktarını karşılamak için gerektiği şekilde ek BundleBuffer'lar ayrılır ve sağlanan arabelleğe bağlanır. Belirtilen çıkış arabelleği zaten bir arabellek zincirinin başıysa yeni tamponlar ayrılmadan önce zincirde sonraki arabelleklere yazılır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
Dinamik arabelleğe yazmak için bir TLVWriter nesnesini başlatır.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
OpenContainer
WEAVE_ERROR OpenContainer( uint64_t tag, TLVType containerType, TLVWriter & containerWriter )
Bir TLV kapsayıcı öğesinin üyelerini yazmak için yeni bir TLVWriter nesnesini başlatır.
OpenContainer() yöntemi, TLV kapsayıcı öğelerini (yapı, diziler veya yollar) bir kodlamaya yazmak için kullanılır. Bu yöntem, yeni kapsayıcının türünü ve etiketini (varsa) ve kapsayıcı öğelerinin yazılması amacıyla ilk kullanıma hazırlanacak yeni bir yazar nesnesine (kapsayıcı yazıcı) referansı alır. Uygulamalar, kapsayıcı yazıcısını kullanarak yeni kapsayıcının üyelerini yazar ve ardından kapsayıcı kodlamayı tamamlamak için CloseContainer() çağrısını yapar.
Kapsayıcı yazıcı açıkken uygulamalar, üst yazarın durumunu başka bir şekilde değiştirmemeli veya çağrı yapmamalıdır.
Kapsayıcı yazıcı, çeşitli yapılandırma özelliklerini üst yazıcıdan devralır. Desteklenen biçimler şunlardır:
- Örtülü profil kimliği (ImplicitProfileId)
- Uygulama veri işaretçisi (AppData)
- GetNewBuffer ve FinalizeBuffer işlevi işaretçileri
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Değerleri Döndür |
|
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int8_t v )
TLV işaretli tam sayı değerini kodlar.
Bu, kullanım kolaylığı sağlamak amacıyla 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 |
|
||||||||||||
Değerleri Döndür |
|
Veri destekli
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
TLV işaretli tam sayı değerini kodlar.
Bu, kullanım kolaylığı sağlamak amacıyla 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 |
|
||||||||||||
Değerleri Döndür |
|
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 imzasız tam sayı değerini kodlar.
Bu, kullanım kolaylığı sağlamak amacıyla 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 |
|
||||||||||||
Değerleri Döndür |
|
Veri destekli
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
TLV imzasız tam sayı değerini kodlar.
Bu, kullanım kolaylığı sağlamak amacıyla 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 |
|
||||||||||||
Değerleri Döndür |
|
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, kullanım kolaylığı sağlamak amacıyla 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 |
|
||||||||||||
Değerleri Döndür |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
TLV boole değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
TLV bayt dize değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
TLV boş değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
Önceden kodlanmış üye öğeleri grubundan bir TLV kapsayıcı öğesini kodlar.
PutPreEncodedContainer() yöntemi, önceden kodlanmış bir arabellekten alınan üye öğeleri grubunu 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 (örneğin, yapı üyelerinin etiketleri olmalı, dizi üyeleri ise olmamalıdır).
Yöntem, kapsayıcı öğesinin tamamını bir çağrıda kodlar. PutPreEncodedContainer() döndürüldüğünde, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için yazar nesnesi kullanılabilir.
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Değerleri Döndür |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
TLV UTF8 dize değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
TLV UTF8 dize değerini kodlar.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
Dize çıkışını TLV öğesindeki biçime göre kodlayın.
PutStringF, sprintf'in bir analogudur. Bu esnada çıkış, karakter arabelleği yerine bir TLV öğesinde depolanır. Genişletilmiş Printf işlevi kullanılabildiğinde, işlev sonuç dizesini sürekli bir temel depolama alanına gönderebilir. Uygulama aşağıdaki Printf geliştirmelerini destekler:
Platform, putchar yerine özel bir geri çağırma olanağı sunan geri çağırmaya dayalı bir vcbprintf
sağlıyor.
Platform, çıkışın ilk n
karakterini atlamaya yönelik hükümlere sahip olması dışında, tam olarak vsnprintf gibi davranan vsnprintf_ex
adlı bir vsnprintf
varyantını sağlar.
Geri çağırmaya dayalı işlev en basit ve en az kod kullanmak olsa da vsprintf_ex
türündeki işlevlerin daha az yığın tüketeceğini unutmayın.
Yukarıdakilerin ikisi de yoksa ancak platform malloc
değerini sağlıyorsa işlev, çıktıyı tutmak için geçici bir arabellek ayırır. Platform, Printf ailesine veya Malloc'a geliştirme sağlamadığında, çıkış geçerli TLV depolama alanındaki sürekli duruma sığacak şekilde kesilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Değerleri Döndür |
|
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ı yazmak için kullanılan yazarın mevcut bağlamını kaydetmek için kullanılacak TLVType değerine referansı alır.
StartContainer() yöntemi geri döndüğünde, uygulama, kapsayıcının öğelerini yazmak için geçerli TLVWriter nesnesini kullanmalıdır. İşlem tamamlandığında, kapsayıcının kodlamasını bitirmek için uygulamanın EndContainer() yöntemini çağırması gerekir.
Ayrıntılar | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||||
Değerleri Döndür |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
Bir TLV bayt dizesini birden fazla parça halinde kodlar.
Bu, ContinuePutBytes ile kullanılmalıdır.
Ayrıntılar | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||||||
Değerleri Döndür |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
Dize çıkışını TLV öğesindeki biçime göre kodlayın.
PutStringF, sprintf'in bir analogudur. Bu esnada çıkış, karakter arabelleği yerine bir TLV öğesinde depolanır. Genişletilmiş Printf işlevi kullanılabildiğinde, işlev sonuç dizesini sürekli bir temel depolama alanına gönderebilir. Uygulama aşağıdaki Printf geliştirmelerini destekler:
Platform, putchar yerine özel bir geri çağırma olanağı sunan geri çağırmaya dayalı bir vcbprintf
sağlıyor.
Platform, çıkışın ilk n
karakterini atlamaya yönelik hükümlere sahip olması dışında, tam olarak vsnprintf gibi davranan vsnprintf_ex
adlı bir vsnprintf
varyantını sağlar.
Geri çağırmaya dayalı işlev en basit ve en az kod kullanmak olsa da vsprintf_ex
türündeki işlevlerin daha az yığın tüketeceğini unutmayın.
Yukarıdakilerin ikisi de yoksa ancak platform malloc
değerini sağlıyorsa işlev, çıktıyı tutmak için geçici bir arabellek ayırır. Platform, Printf ailesine veya Malloc'a geliştirme sağlamadığında, çıkış geçerli TLV depolama alanındaki sürekli duruma sığacak şekilde kesilir.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Değerleri Döndür |
|
Herkese açık statik işlevler
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
PaketetBuffers zincirine yazmak için TLVWriter FinalizeBuffer işlevinin uygulanması.
FinalizePacketBuffer() işlevi, bir PacketBuffers zincirine yazmak için TLVWriter kullanılırken gereken gerekli sonlandırmayı gerçekleştirir. İşlev, GetNewPacketBuffer() işleviyle birlikte kullanılmak üzere tasarlanmıştır.
FinalizePacketBuffer() işlevinin API'sı 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 arabelleğe yazmak için TLVWriter GetNewBuffer işlevinin uygulaması.
GetNewBuffer_Malloced() işlevi, kodlamayı depolamak için gerekli olan temel dinamik arabelleğin boyutunu iki katına çıkararak TLVWriter'a yeni çıkış alanı sağlar. İşlev, TLVWriter GetNewBuffer işlev işaretçisine atanacak şekilde tasarlanmıştır.
GetNewBuffer_Malloced() işlevinin API'si hakkında daha fazla 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 )
PaketetBuffers 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 TLVWriter'a yeni çıkış alanı sağlar. İşlev, TLVWriter GetNewBuffer işlev işaretçisine atanacak şekilde tasarlanmıştır.
GetNewPacketBuffer'ı bir TLVWriter ile kullanırken arabellek zincirini tamamlamak için karşılık gelen FinalizePacketBuffer() işlevinin (veya eşdeğerinin) de kullanılması gerektiğini unutmayın.
GetNewPacketBuffer() işlevinin API'si hakkında daha fazla 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ıyı başlatma / açma noktasında CloseContainer simgesi için alan ayırması gerekip gerekmediğini belirleyin.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
Kapsayıcının, kapsayıcıyı başlatma / açma noktasında CloseContainer simgesi için yer ayırması gerekip gerekmediğini ayarlayın.
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 )