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{
  kEndOfContainerMarkerSize = 1
}
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)
TLVReader nesnesinden bir TLV kapsayıcı öğesini kopyalar.
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)
Bir TLV kapsayıcı öğesinin üyelerini yazmak için yeni bir TLVWriter nesnesini başlatır.
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
[in] writer
Sonlandırılan TLVWriter nesnesine başvuru.
[in,out] bufHandle
GetNewBuffer işlevine yapılan önceki çağrılar tarafından ayarlanan uintptr_t bağlam değeri.
[in,out] bufStart
Mevcut (ve nihai) çıkış tamponunun başlangıcını gösteren bir işaretçi.
[in,out] bufLen
bufStart tarafından işaret edilen arabellekte bulunan bayt sayısı.
Değerleri Döndür
WEAVE_NO_ERROR
Sonlandırma başarılı olup olmadığı.
other
Sonlandırma sırasında bir hata oluştuğunu belirten diğer Weave veya platforma özgü hata kodları.

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
[in] writer
Yeni arabellek alanı isteyen TLVWriter nesnesine başvuru.
[in,out] bufHandle
İşlevin, çağrılar arasında bağlam verilerini depolamak için kullanabileceği bir uintptr_t değerine referans. Bu değer, ilk çağrıdan önce 0 olarak başlatılır.
[in,out] bufStart
Bir veri işaretçisine başvuru. İşleve giriş yapıldığında bufStart, mevcut çıkış arabelleğinin başlangıcını gösterir. Çıkışta, bufStart değerinin yeni çıktı arabelleğinin başlangıcını işaret etmesi beklenir. Yeni işaretçi değeri önceki değerle aynı olabilir (ör. işlev mevcut verileri başka bir yere kopyaladıysa) veya tamamen yeni bir konumu gösterebilir.
[in,out] bufLen
İmzalanmamış bir tam sayıya referans. İşleve girişte bufLen, mevcut arabellekteki unused boşluk baytının sayısını içerir. Çıkışta, bufLen değerinin yeni çıkış arabelleğine yazılabilecek maksimum bayt sayısını içermesi beklenir.
Değerleri Döndür
WEAVE_NO_ERROR
Fonksiyon yazara daha fazla tampon alanı verebildiyse.
other
İşlevin ek arabellek alanı oluşturmasını engelleyen bir hata oluştuğunu belirten diğer Weave veya platforma özgü hata kodları.

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
[in] containerWriter
TLVWriter yöntemine sağlanan OpenContainer() nesnesine başvuru.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_INCORRECT_STATE
Sağlanan kapsayıcı yazıcı doğru durumda değilse.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Sağlanan kapsayıcı yazıcısında başka bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Kapsayıcı kodlamanın tamamlanması, yazıcı başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] buf
Kodlanacak bayt dizesini içeren arabelleğe işaret eden bir işaret.
[in] len
Kodlanacak bayt sayısı.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] container
Kopyalanacak önceden kodlanmış TLV kapsayıcısını tanımlayan bir TLVReader nesnesine başvuru.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_INCORRECT_STATE
Sağlanan okuyucu, kapsayıcı öğesinde yer almıyorsa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkilendirilmiş temel TLV kodlaması erken sona erdiyse.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Sağlanan okuyucu geçersiz veya desteklenmeyen bir TLV öğe türüyle karşılaştıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Sağlanan okuyucu, geçersiz bir bağlamda TLV etiketiyle karşılaştıysa veya kaynak kapsayıcıyla ilişkilendirilen etiket, yeni kapsayıcının yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri ya da okuyucu nesnesiyle ilişkilendirilmiş GetNextBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Kapsayıcıyla kodlanacak TLV etiketi veya kapsayıcının etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] container
Türü ve üyelerinin kopyalanması gereken, önceden kodlanmış bir TLV kapsayıcısını tanımlayan TLVReader nesnesine başvuru.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_INCORRECT_STATE
Sağlanan okuyucu, kapsayıcı öğesinde yer almıyorsa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkilendirilmiş temel TLV kodlaması erken sona erdiyse.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Sağlanan okuyucu geçersiz veya desteklenmeyen bir TLV öğe türüyle karşılaştıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Sağlanan okuyucu, TLV etiketiyle geçersiz bir bağlamda karşılaştıysa ya da söz konusu etiket, yeni kapsayıcının yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri ya da okuyucu nesnesiyle ilişkilendirilmiş GetNextBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Kapsayıcıyla kodlanacak TLV etiketi veya kapsayıcının etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] encodedContainer
Türü ve üyelerinin kopyalanması gereken, önceden kodlanmış bir TLV kapsayıcısı içeren arabellek.
[in] encodedContainerLen
Önceden kodlanmış kapsayıcının bayt cinsinden uzunluğu.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_TLV_UNDERRUN
Kodlanmış kapsayıcı erken sona erdiyse.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Kodlanmış kapsayıcının geçersiz veya desteklenmeyen bir TLV öğe türü içerip içermediği.
WEAVE_ERROR_INVALID_TLV_TAG
Kodlanmış kapsayıcı, geçersiz bir bağlamda TLV etiketi içeriyorsa veya sağlanan etiket, yeni kapsayıcının yazıldığı bağlamda geçersiz ya da uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri ya da okuyucu nesnesiyle ilişkilendirilmiş GetNextBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] reader
Kopyalanması gereken önceden kodlanmış TLV öğesini tanımlayan bir TLVReader nesnesine başvuru.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_INCORRECT_STATE
Sağlanan okuyucu bir öğenin üzerinde yer almıyorsa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkilendirilmiş temel TLV kodlaması erken sona erdiyse.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Sağlanan okuyucu geçersiz veya desteklenmeyen bir TLV öğe türüyle karşılaştıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Sağlanan okuyucu, TLV etiketiyle geçersiz bir bağlamda karşılaştıysa ya da söz konusu etiket, yeni kapsayıcının yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri ya da okuyucu nesnesiyle ilişkilendirilmiş GetNextBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] outerContainerType
StartContainer() yöntemi tarafından döndürülen TLVType değeri.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_INCORRECT_STATE
Karşılık gelen bir StartContainer() çağrısı yapılmadıysa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
WEAVE_NO_ERROR
Kodlamanın başarıyla tamamlanıp tamamlanmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
other
Yapılandırılmış FinalizeBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
)

Tek bir çıkış arabelleğine yazmak için bir TLVWriter nesnesini başlatır.

Ayrıntılar
Parametreler
[in] buf
TLV'nin yazılması gereken tamponuna işaret eder.
[in] maxLen
Çıkış arabelleğine yazılması gereken maksimum bayt sayısı.

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
[in] buf
İçine TLV yazılması gereken bir PacketBuffer işaretçisi.
[in] maxLen
Çıkış arabelleğine yazılması gereken maksimum bayt sayısı.

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
[in] buf
TLV verilerinin yazılması gereken bir PacketBuffer işaretçisi.
[in] maxLen
Çıkış arabelleklerine yazılması gereken maksimum bayt sayısı.
[in] allowDiscontiguousBuffers
True (doğru) ise, yazılan verileri depolamak için gerektiğinde yeni tamponlar ayırarak verileri bir PacketBuffers zincirine yazın. Yanlış değerine ayarlanırsa, yazılı veri ilk çıkış arabelleğinde kullanılabilir olan alanı aşarsa WEAVE_ERROR_BUFFER_TOO_SMALL ile yazma işlemi başarısız olur.

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
[in] buf
Ayrılan arabelleği alacak işaretçi.
[in] maxLen
Çıkış arabelleğine yazılması gereken maksimum bayt sayısı.
[in] initialBufSize
Arabelleğe ayrılması gereken ilk bayt sayısı.

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
[in] tag
Kapsayıcıyla kodlanacak TLV etiketi veya kapsayıcının etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] containerType
Kodlanacak kapsayıcının türü. Bir kTLVType_Structure, kTLVType_Array veya kTLVType_Path olmalıdır.
[out] containerWriter
Yeni kapsayıcı öğesinin üyelerini yazmak için başlatılacak TLVWriter nesnesine referans. Sağlanan nesneyle ilişkili tüm verilerin üzerine yazılır.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_WRONG_TLV_TYPE
containerType için belirtilen değer yanlışsa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
[in] preserveSize
Değerin giriş türüyle aynı sayıda baytta kodlanması gerekiyorsa doğru değerini alır. Değerin, değeri temsil etmek için gereken minimum bayt sayısına göre kodlanması gerekiyorsa false (yanlış) değerini alır. Not: Uygulamaların bu parametreyi yanlış değerine ayarlaması önemle tavsiye edilir.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
[in] preserveSize
Değerin giriş türüyle aynı sayıda baytta kodlanması gerekiyorsa doğru değerini alır. Değerin, değeri temsil etmek için gereken minimum bayt sayısına göre kodlanması gerekiyorsa false (yanlış) değerini alır. Not: Uygulamaların bu parametreyi yanlış değerine ayarlaması önemle tavsiye edilir.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

TLV boole değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

PutBytes

WEAVE_ERROR PutBytes(
  uint64_t tag,
  const uint8_t *buf,
  uint32_t len
)

TLV bayt dize değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] buf
Kodlanacak bayt dizesini içeren arabelleğe işaret eden bir işaret.
[in] len
Kodlanacak bayt sayısı.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

PutNull

WEAVE_ERROR PutNull(
  uint64_t tag
)

TLV boş değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Kapsayıcıyla kodlanacak TLV etiketi veya kapsayıcının etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] containerType
Kodlanacak kapsayıcının türü. Bir kTLVType_Structure, kTLVType_Array veya kTLVType_Path olmalıdır.
[in] data
Yeni kapsayıcının üyeleri olacak daha fazla kodlanmış TLV öğesinin sıfırını içeren bir arabelleğe işaret eden.
[in] dataLen
data arabelleğindeki bayt sayısı.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_WRONG_TLV_TYPE
containerType için belirtilen değer yanlışsa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

TLV UTF8 dize değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] buf
Kodlanacak boş sonlandırılmış UTF-8 dizesine işaret eden bir işaret.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

PutString

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

TLV UTF8 dize değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] buf
Kodlanacak UTF-8 dizesine işaret eden bir işaret.
[in] len
Kodlanacak dizenin uzunluğu (bayt cinsinden).
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] fmt
Bağımsız değişken listesini biçimlendirmek için kullanılan biçim dizesi. printf işlev ailesinin biçim dizesiyle aynı söz dizimini ve kuralları kullanır.
[in] ...
fmt'ye göre çıkış değerinde biçimlendirilecek bağımsız değişkenlerin listesi.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
other
TLVWriter yöntemlerine (WriteElementHead veya GetNewBuffer) yapılan temel çağrılar başarısız olursa bu hatalar hemen çağrı yığınına yönlendirilir.

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
[in] tag
Kapsayıcıyla kodlanacak TLV etiketi veya kapsayıcının etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] containerType
Kodlanacak kapsayıcının türü. Bir kTLVType_Structure, kTLVType_Array veya kTLVType_Path olmalıdır.
[out] outerContainerType
Yazarın bağlamını alacak TLVType değerine yapılan bir referans.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_WRONG_TLV_TYPE
containerType için belirtilen değer yanlışsa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] totalLen
Kodlanacak toplam bayt sayısı.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Geçerli yazar üzerinde bir kapsayıcı yazıcı açıldıysa ve henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygun değilse.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşacaksa.
WEAVE_ERROR_NO_MEMORY
Çıkış arabelleği ayırma denemesi, bellek yetersizliği nedeniyle başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri tarafından döndürülen diğer Weave veya platforma özgü hatalar.

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
[in] tag
Değerle kodlanacak TLV etiketi veya değerin bir etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri ProfileTag(), ContextTag() veya CommonTag() etiket tanımı işlevlerinden biriyle oluşturulmalıdır.
[in] fmt
Bağımsız değişken listesini biçimlendirmek için kullanılan biçim dizesi. printf işlev ailesinin biçim dizesiyle aynı söz dizimini ve kuralları kullanır.
[in] ap
fmt'ye göre çıkış değerinde biçimlendirilecek bağımsız değişkenlerin listesi.
Değerleri Döndür
WEAVE_NO_ERROR
Yöntem başarılı olursa.
other
TLVWriter yöntemlerine (WriteElementHead veya GetNewBuffer) yapılan temel çağrılar başarısız olursa bu hatalar hemen çağrı yığınına yönlendirilir.

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
)