nl::Dokuma::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 dönük, akış stili bir kodlayıcı uygular. Uygulamalar, yazarın Put() yöntemlerinden birini çağırarak ilişkili etiket ve değer bilgilerini ileterek kodlamaya veri yazar. Benzer şekilde uygulamalar, yazıcının OpenContainer() veya EnterContainer() yöntemlerini çağırarak TLV kapsayıcı türlerini (yapılar, diziler veya yollar) kodlayabilir.

TLVWriter nesnesi, verileri doğrudan sabit bir çıkış arabelleğine veya bir veya daha fazla PaketetBuffer nesnesi zincirine yazabilir. Ayrıca uygulamalar, çıkışı rastgele bir hedefe (ör. 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{
  kEndOfContainerMarkerSize = 1
}
enum

Herkese açık türler

FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR(*
Bir TLVWriter nesnesinden çıkışın kesinleşmesini sağlamak için kullanılan bir işlev.
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
Bir TLVWriter öğesine yeni çıkış arabelleği alanı sağlayan bir işlev.

Herkese açık özellikler

AppData
void *
Uygulamaya özel veriler için kullanılabilecek işaretçi alanı.
FinalizeBuffer
TLVWriter tamamlandığında çağrılacak bir işlevin işaretçisi.
GetNewBuffer
TLVWriter öğesine yeni çıkış arabelleği alanı sağlayacak bir işlevin işaretçisi.
ImplicitProfileId
uint32_t
Dolaylı 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, TLV kapsayıcısının yazma işlemini tamamlar.
ContinuePutBytes(const uint8_t *buf, uint32_t len)
TLV baytlık dize değerini kodlar.
CopyContainer(TLVReader & container)
Bir TLVkapsayıcısını TLVReader nesnesinden kopyalar.
CopyContainer(uint64_t tag, TLVReader & container)
TLV kapsayıcı öğesini, önceden kodlanmış bir üye öğesi grubundan kodlar.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Önceden kodlanmış bir kapsayıcıdan üye öğeleri içeren bir TLV kapsayıcı öğesini kodlar.
CopyElement(TLVReader & reader)
Bir TLV öğesini okuyucu nesnesinden yazara kopyalar.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
TLV kapsayıcı öğesinin kodlamasını tamamlar.
Finalize(void)
TLV kodlamasının yazımını tamamlayın.
GetContainerType(void) const
TLVWriter kullanıcısının yazmakta olduğu kapsayıcı türünü döndürür.
GetLengthWritten(void)
uint32_t
Yazarın ilk kullanıma sunulmasından bu yana 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 bir TLVWriter nesnesini başlatır.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Bir veya daha fazla PacketBuffers 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 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 imzalı tam sayı değerini kodlar.
Put(uint64_t tag, int8_t v, bool preserveSize)
TLV imzalı 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 boş değerini kodlar.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
TLV kapsayıcı öğesini, önceden kodlanmış bir üye öğesi grubundan kodlar.
PutString(uint64_t tag, const char *buf)
TLV UTF8 dizesi değerini kodlar.
PutString(uint64_t tag, const char *buf, uint32_t len)
TLV UTF8 dizesi değerini kodlar.
PutStringF(uint64_t tag, const char *fmt, ...)
Dize çıkışı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)
TLV bayt dizesini birden fazla parçada kodlar.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
Dize çıkışı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 yazmak için bir TLVWriter FinalizeBuffer işlevinin uygulanması.
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 bir TLVWriter GetNewBuffer işlevi uygulaması.

Korumalı işlevler

IsCloseContainerReserved(void) const
bool
Kapsayıcının, container'ı başlatma / açma noktasında CloseContainer simgesi için boşluk bırakması 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 boşluk bırakması 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)

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)

Bir TLVWriter nesnesinden çıkışın kesinleşmesini sağlamak için kullanılan bir işlev.

Bu tür işlevler, bir TLVWriter's Finalize() yöntemi çağrıldığında çağrılır. İşlevin, yazar nesnesinin çıkışının tüketimiyle ilgili gerekli tüm temizleme veya tamamlama işlemlerini yapması beklenir. Bunlara örnek olarak kodlamanın son uzunluğunun kaydedilmesi veya dosya tanımlayıcısının kapatılması verilebilir.

Ayrıntılar
Parametreler
[in] writer
Kesinleşmiş TLVWriter nesnesine referans.
[in,out] bufHandle
GetNewBuffer işlevine yapılan önceki çağrılar tarafından ayarlanan Utptr_t bağlam değeri.
[in,out] bufStart
Mevcut (ve son) çıkış arabelleğinin başına işaretçi.
[in,out] bufLen
bufStart ile işaret edilen arabellekte bulunan bayt sayısı.
Döndürülen Değerler
WEAVE_NO_ERROR
Nihaileştirmenin başarılı olup olmadığı.
other
Kesinleştirme sırasında bir hata oluştuğunu gösteren diğer Weave veya platforma özgü hata kodları.

YeniBufferFunct Alma

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

Bir TLVWriter öğesine yeni çıkış arabelleği alanı sağlayan bir işlev.

Bu tür işlevler, bir TLVWriter kullanıcısının yazabileceği yeni arabellek alanını hazırlamak için kullanılır. Arandığında, işlevin yeni verilerin yazması gereken bellek konumuna, ilişkili maksimum uzunlukla birlikte bir işaretçi döndürmesi beklenir. İşlev, verileri muhafazaya almak için yeni bir arabelleğe alma veya mevcut bir arabelleğe alınmış daha önce yazılmış verileri temizleme yoluyla yazma alanı sağlayabilir.

Ayrıntılar
Parametreler
[in] writer
Yeni arabellek alanı isteyen TLVWriter nesnesine başvuru.
[in,out] bufHandle
İşlevin, aramalar arasında bağlam verilerini depolamak için kullanabileceği bir uintptr_t değeri referansı. Bu değer, ilk görüşmeden önce 0 olarak başlatılır.
[in,out] bufStart
Veri işaretçisine referans. İşleve girişte, bufStart geçerli çıkış arabelleğinin başlangıcını işaret eder. Çıkışta, bufStart değerinin yeni çıkış 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 konuma işaret edebilir.
[in,out] bufLen
İmzalanmamış bir tam sayı referansı. İşleve girişte, bufLen geçerli arabellekteki kullanılmayan alan sayısını içerir. Çıkışta, bufLen değerinin yeni çıkış arabelleğine yazılabilecek maksimum bayt sayısını içermesi bekleniyor.
Döndürülen Değerler
WEAVE_NO_ERROR
İşlevin, yazar için daha fazla arabellek alanı sağlayıp sağlayamadığı.
other
İşlevin ek arabellek alanı oluşturmasını engelleyen bir hatanın meydana geldiğini belirten diğer Weave veya platforma özgü hata kodları.

Herkese açık özellikler

AppData

void * AppData

Uygulamaya özel veriler için kullanılabilecek işaretçi alanı.

Son İşlem Arabellek

FinalizeBufferFunct FinalizeBuffer

TLVWriter tamamlandığında çağrılacak bir işlevin işaretçisi.

Bir TLVWriter nesnesi, Finalize() yöntemi çağrıldığında FinalizeBuffer işlevini çağırır. Uygulamalar, işlev işaretçisini Finalize() çağrısından önce herhangi bir anda ayarlayabilir. Varsayılan olarak, işaretçi NULL değerine ayarlanır ve Finalize() yöntemi işlevi çağırmadan vazgeçir.

FinalizeBuffer işlevinin uygulanmasıyla ilgili ek bilgiler için FinalizeBufferFunct türü tanımına bakın.

YeniYeniAl

GetNewBufferFunct GetNewBuffer

TLVWriter öğesine yeni çıkış arabelleği alanı sağlayacak bir işlevin işaretçisi.

Mevcut çıkış arabelleğinin boyutunu aşan veriler yazmaya çalışıldığında bir TLVWriter nesnesi GetNewBuffer işlevini çağırır. NULL değerine (varsayılan değer) ayarlanırsa yazar, çıkış verileri mevcut arabelleği doldurursa bir WEAVE_ERROR_NO_MEMORY döndürür.

GetNewBuffer, bir uygulama tarafından herhangi bir zamanda ayarlanabilir ancak genellikle yazar ilk başlatıldığında ayarlanır.

GetNewBuffer işlevinin uygulanmasıyla ilgili ek bilgiler için GetNewBufferFunct tür tanımına bakın.

DolaylıProfil Kimliği

uint32_t ImplicitProfileId

Dolaylı biçimde kodlanması gereken etiketlerin profil kimliği.

Bir yazardan yeni bir öğeyi kodlaması istendiğinde, yeni öğeyle ilişkili etiketin profil kimliği ImplicitProfileId üyesinin değeriyle eşleşirse yazar, etiketi gizli bir şekilde kodlar ve işlem sırasında profil kimliğini çıkarır.

Varsayılan olarak ImplicitProfileId özelliği, kProfileIdNotSpecified değerine ayarlanır ve böylece yazara, dolaylı olarak kodlanmış etiketler yayınlamaması talimatı verilir. Uygulamalar kodlama kodlamasının mevcut noktasından başlayan örtük biçimde kodlama etiketlerini etkinleştirmek için istediği zaman ImplicitProfileId ayarlayabilir. Ayarlanacak uygun profil kimliği genellikle konuşulan uygulama veya protokolün bağlamına bağlıdır.

Korunan özellikler

mBufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mContainerType

TLVType mContainerType

mLenyazılı

uint32_t mLenWritten

Maksimum Performans

uint32_t mMaxLen

Kalan Uzun

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

Herkese açık işlevler

CloseContainer'ı

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

OpenContainer() çağrısından sonra, TLV kapsayıcısının yazma işlemini tamamlar.

CloseContainer() yöntemi, OpenContainer() çağrısından sonra üst TLVWriter nesnesinin durumunu geri yükler. OpenContainer() uygulamalarına yapılan her çağrı için karşılık gelen kapsayıcının, her iki yönteme de iletildiği CloseContainer() çağrısı yapılmalıdır.

CloseContainer() döndüğü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ısı 'de-itibarlı' olarak değerlendirilmeli ve yeniden başlatma olmadan kullanılmamalıdır.

Ayrıntılar
Parametreler
[in] containerWriter
OpenContainer() yöntemine sağlanan TLVWriter nesnesine başvuru.
Döndürülen Değerler
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çılmışsa ve henüz kapatılmamışsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Kapsayıcının kodlamasını tamamlaması, yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

Devam Ettiren Baytlar

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
[in] buf
Kodlanacak bayt dizesini içeren bir arabellek için bir işaretçi.
[in] len
Kodlanacak bayt sayısı.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

Kopyalama Kapsayıcısı

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

Bir TLVkapsayıcısını TLVReader nesnesinden kopyalar.

CopyContainer(), bir TLVReader nesnesinin mevcut konumunda bulunan önceden kodlanmış bir kapsayıcı öğesini kopyalayarak yeni bir TLV kapsayıcı öğesini kodlar. Yöntem, bir kapsayıcıda yeni kapsayıcı öğesinin tamamını yazar. Kapsayıcının türünü, etiketini ve öğelerini kaynak kodlamadan kopyalar. Yöntem döndüğünde, yazma nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.

Ayrıntılar
Parametreler
[in] container
Kopyalanacak önceden kodlanmış TLV kapsayıcıyı tanımlayan bir TLVReader nesnesine başvuru.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_INCORRECT_STATE
Sağlanan okuyucu bir kapsayıcı öğesine yerleştirilmediyse.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkili temel TLV kodlaması erken sona ererse.
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 okuyucunun geçersiz bir bağlamda TLV etiketiyle karşılaştığı veya kaynak kapsayıcıyla ilişkili etiketin yeni kapsayıcının yazıldığı bağlamda geçersiz ya da uygunsuz olduğu durumlarda.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri ya da okuyucu nesnesiyle ilişkili GetNextBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

Kopyalama Kapsayıcısı

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

TLV kapsayıcı öğesini, önceden kodlanmış bir üye öğesi grubundan kodlar.

CopyContainer() yöntemi, bir TLVReader nesnesinden alınan üye öğelerini içeren yeni bir TLV kapsayıcı öğesini (bir 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ıyla aynı türe ve üyelere sahip olur. Yeni kapsayıcının etiketi, bir giriş parametresi olarak belirtilir.

Yöntem döndüğünde, yazma nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için 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ımlama işlevlerinden biriyle oluşturulmalıdır.
[in] container
Türü ve üyeleri kopyalanması gereken önceden kodlanmış bir TLV kapsayıcısının tanımlandığı bir TLVReader nesnesine başvuru.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_INCORRECT_STATE
Sağlanan okuyucu bir kapsayıcı öğesine yerleştirilmediyse.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkili temel TLV kodlaması erken sona ererse.
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 sağlanan etiket yeni kapsayıcının yazıldığı bağlamda geçersiz ya da uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri ya da okuyucu nesnesiyle ilişkili GetNextBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

Kopyalama Kapsayıcısı

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  const uint8_t *encodedContainer,
  uint16_t encodedContainerLen
)

Önceden kodlanmış bir kapsayıcıdan üye öğeleri içeren bir TLV kapsayıcı öğesini kodlar.

CopyContainer() yöntemi, sağlanan önceden kodlanmış kapsayıcının içeriklerinden alınan bir üye öğeleri grubunu içeren yeni bir TLV kapsayıcı öğesini (bir 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. Bunun için giriş kapsayıcıyla aynı türde ve üyelere sahip yeni bir kapsayıcı yazılır. Yeni kapsayıcının etiketi, bir giriş parametresi olarak belirtilir.

Yöntem döndüğünde, yazma nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için 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ımlama işlevlerinden biriyle oluşturulmalıdır.
[in] encodedContainer
Türü ve üyeleri kopyalanacak olan önceden kodlanmış bir TLV kapsayıcısı içeren arabellek.
[in] encodedContainerLen
Önceden kodlanmış kapsayıcının bayt cinsinden uzunluğu.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_TLV_UNDERRUN
Kodlanmış kapsayıcı erken bitiyorsa.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Kodlanmış kapsayıcı geçersiz veya desteklenmeyen bir TLV öğe türü içeriyorsa.
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ğer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri ya da okuyucu nesnesiyle ilişkili GetNextBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

Kopya Öğesi

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

Bir TLV öğesini okuyucu nesnesinden yazara kopyalar.

CopyElement() yöntemi, türü, etiketi ve değeri TLVReader nesnesinden alınan yeni bir TLV öğesini kodlar. Yöntem çağrıldığında, sağlanan okuyucu nesnesinin kaynak TLV öğesine konumlandırılması beklenir. Yeni kodlanmış öğe, giriş kapsayıcıyla aynı türde, 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ış bir TLV öğesini tanımlayan bir TLVReader nesnesine başvuru.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_INCORRECT_STATE
Sağlanan okuyucu bir öğenin üzerinde değilse.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkili temel TLV kodlaması erken sona ererse.
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 sağlanan etiket yeni kapsayıcının yazıldığı bağlamda geçersiz ya da uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi başarısız olduysa.
other
Yapılandırılmış GetNewBuffer() veya FinalizeBuffer() işlevleri ya da okuyucu nesnesiyle ilişkili GetNextBuffer() işlevi tarafından döndürülen diğer Weave veya platforma özgü hatalar.

Kopya Öğesi

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

Son Kapsayıcı

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

TLV kapsayıcı öğesinin kodlamasını tamamlar.

EndContainer() yöntemi, bir TLV kapsayıcı öğesinin kodlamasını tamamlar ve bir VContainer() çağrısından önceki bir TLVWrite nesnesinin durumunu geri yükler. StartContainer() uygulamalarına yapılan her çağrı için karşılık gelen bir EndContainer() çağrısı yapılmalıdır. Bu durumda, StartContainer() çağrısı tarafından döndürülen TLVType değeri iletilmelidir. EndContainer() döndüğünde, yazma nesnesi, kapsayıcı öğesini izleyen ek TLV öğeleri yazmak için kullanılabilir.

Ayrıntılar
Parametreler
[in] outerContainerType
StartContainer() yöntemi tarafından döndürülen TLVType değeri.
Döndürülen Değerler
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
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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ımı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ı yazarı olmadığında çağrılabilir. (Bkz. OpenContainer()).

Ayrıntılar
Döndürülen Değerler
WEAVE_NO_ERROR
Kodlamanın başarıyla sonuçlanıp sonuçlanmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp 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 kullanıcısının yazmakta olduğu kapsayıcı türünü döndürür.

GetContainerType() yöntemi, TLVWriter'ın şu anda yazmakta olduğu TLV kapsayıcısının türünü döndürür. TLVWriter, bir kapsayıcı içindeki öğeleri yazmıyorsa (yani bir kodlamanın en dış düzeyinde yazıyorsa) yöntem kTLVType_NotSpecified sonucunu döndürür.

Ayrıntılar
İadeler
Mevcut kapsayıcının TLVType veya TLVWriter bir kapsayıcı içindeki öğeleri yazmıyorsa kTLVType_NotSpecified.

GetLengthYazıldı

uint32_t GetLengthWritten(
  void
)

Yazarın ilk kullanıma sunulmasından bu yana yazılan toplam bayt sayısını döndürür.

Ayrıntılar
İadeler
Yazarın ilk kullanıma sunulmasından bu yana yazılan toplam bayt sayısı.

Başlangıç

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 arabellek.
[in] maxLen
Çıkış arabelleğine yazılması gereken maksimum bayt sayısı.

Başlangıç

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

Tek bir PacketBuffer'a yazmak için bir TLVWriter nesnesini başlatır.

Yazma, sağlanan arabellekteki mevcut verilerin son baytından hemen sonra başlar.

Ayrıntılar
Parametreler
[in] buf
TLV yazılması gereken bir PacketBuffer işaretçisi.
[in] maxLen
Çıkış arabelleğine yazılması gereken maksimum bayt sayısı.

Başlangıç

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

Bir veya daha fazla PacketBuffers yazmak için bir TLVWriter nesnesi başlatır.

Yazma, belirtilen arabellekteki mevcut verilerin son baytından hemen sonra başlar. allowDiscontiguousBuffers değeri true (doğru) olduğunda, ek Paket Paketi, ayrılan veri miktarını karşılayacak şekilde arabelleğe alınır ve zincire zincirlenir. Belirtilen çıkış arabelleği zaten bir arabelleğe zincirinin başıysa çıkış, yeni arabelleğe alınmadan önce zincirdeki sonraki arabelleğe 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
Doğru değerine ayarlanırsa, PacketBuffers zincirine veri yazın. Yazılan verileri depolamak için gerektiğinde yeni arabelleğe alın. Yanlış değerine ayarlanırsa, yazılı veriler ilk çıkış arabelleğinde bulunan alanı aşarsa WEAVE_ERROR_BUFFER_TOO_DIMENSION ile yazma başarısız olur.

İnitMalloced

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

Dinamik bir arabelleğe yazmak için bir TLVWriter nesnesini başlatır.

Ayrıntılar
Parametreler
[in] buf
Ayrılan arabelleği alacak bir işaretçiye başvuru.
[in] maxLen
Çıkış arabelleğine yazılması gereken maksimum bayt sayısı.
[in] initialBufSize
Tampona 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.

Bir kodlamaya TLVkapsayıcı öğeleri (yapı, diziler veya yollar) yazmak için OpenContainer() yöntemi kullanılır. Yöntem, yeni kapsayıcının türünü ve etiketini (varsa) ve kapsayıcı öğelerini yazmak amacıyla başlatılacak yeni bir yazar nesnesine (kapı yazarı) başvuru alır. Uygulamalar, kapsayıcı kapsayıcıyı 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ı yazarı açık olduğunda, uygulamalar ana yazıcının durumunu çağırmamalı veya değiştirmemelidir.

Kapsayıcı yazıcısı, çeşitli yapılandırma özelliklerini üst yazardan devralır. Desteklenen biçimler şunlardır:

  • Dolaylı profil kimliği (ImplicitProfileId)
  • Uygulama veri işaretçisi (AppData)
  • GetNewBuffer ve FinalizeBuffer işlev 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ımlama işlevlerinden biriyle oluşturulmalıdır.
[in] containerType
Kodlanacak kapsayıcı türü. kTLVType_Structure, kTLVType_Array veya kTLVType_Path olmalıdır.
[out] containerWriter
Yeni kapsayıcı öğesinin üyelerini yazmak için başlatılacak bir TLVWriter nesnesine referans. Sağlanan nesneyle ilişkili tüm verilerin üzerine yazılır.
Döndürülen Değerler
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
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

TLV imzalı tam sayı değerini kodlar.

Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

TLV imzalı tam sayı değerini kodlar.

Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
[in] preserveSize
Değerin giriş türünde aynı sayıda bayt olarak kodlanması gerekiyorsa doğru değerini alır. Değerin, değeri temsil etmesi için gereken minimum bayt sayısına göre kodlanması gerekiyorsa "false" değerini alır. Not: Uygulamaların bu parametreyi false olarak ayarlamanız kesinlikle önerilir.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v,
  bool preserveSize
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v,
  bool preserveSize
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v,
  bool preserveSize
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

TLV imzalanmamış tam sayı değerini kodlar.

Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

TLV imzalanmamış tam sayı değerini kodlar.

Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
[in] preserveSize
Değerin giriş türünde aynı sayıda bayt olarak kodlanması gerekiyorsa doğru değerini alır. Değerin, değeri temsil etmesi için gereken minimum bayt sayısına göre kodlanması gerekiyorsa "false" değerini alır. Not: Uygulamaların bu parametreyi false olarak ayarlamanız kesinlikle önerilir.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v,
  bool preserveSize
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v,
  bool preserveSize
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v,
  bool preserveSize
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

bağla

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

TLV kayan nokta değerini kodlar.

Bu, kolaylık sağlamak için aşırı yüklenmiş bir üye işlevidir. Yukarıdaki işlevden yalnızca kabul ettiği bağımsız değişkenlerden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

PutBoole

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 etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] v
Kodlanacak değer.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

PutByte

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

TLV baytlık dize değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] buf
Kodlanacak bayt dizesini içeren bir arabellek için bir işaretçi.
[in] len
Kodlanacak bayt sayısı.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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 etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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.

PutPre-EncodingContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

TLV kapsayıcı öğesini, önceden kodlanmış bir üye öğesi grubundan kodlar.

PutPreEncodingContainer() yöntemi, önceden kodlanmış bir arabelleğe alınmış bir üye öğesi grubunu içeren yeni bir TLV kapsayıcı öğesini (bir yapı, dizi veya yol) kodlar. Giriş arabelleğinin, belirtilen kapsayıcı türüyle ilişkili kurallara uyan etiketlerle (ör. yapı üyelerinin etiket içermesi gerekirken dizi üyelerinin olmaması gerekir) sıfır veya daha fazla tam kodlanmış TLV öğesi içermesi beklenir.

Yöntem, bir çağrıda kapsayıcı öğesinin tamamını kodlar. PutPreEncodingContainer() döndüğünde, yazma nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için 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ımlama işlevlerinden biriyle oluşturulmalıdır.
[in] containerType
Kodlanacak kapsayıcı türü. kTLVType_Structure, kTLVType_Array veya kTLVType_Path olmalıdır.
[in] data
Yeni kapsayıcının üyesi haline gelecek şekilde kodlanmış daha fazla TLV öğesini içeren bir bumper'ın işaretçisi.
[in] dataLen
data arabelleğindeki bayt sayısı.
Döndürülen Değerler
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
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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 dizesi değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] buf
Kodlanacak null olarak sonlandırılmış UTF-8 dizesine bir işaretçi.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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 dizesi değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] buf
Kodlanacak UTF-8 dizesine işaret eden öğeler.
[in] len
Kodlanacak dize uzunluğu (bayt cinsinden).
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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 biçimlendirilmiş şekilde kodlayın.

PutStringF, çıkışın bir karakter arabelleği yerine TLV öğesinde depolandığı bir sprintf analogudur. Genişletilmiş yazdırma işlevi mevcut olduğunda, işlev sonuç dizesini sürekli olmayan bir temel depolama alanına üretebilir. Uygulama, aşağıdaki Printf geliştirmelerini destekler:

Platform, kişisel karakterin yerine özel bir geri çağırma çağırmak için geri çağırmaya dayalı vcbprintf sağlar.

Platform, vsnprintf_ex adlı varyantın, çıkışın ilk n karakterinin atlanmasına ilişkin hükümlerinin haricinde tam olarak vsnprintf gibi davranan bir varyantı sağlar.

Geri çağırmaya dayalı işlevin en basit yöntem olabileceği ve en az sayıda kod kullanabilse de vsprintf_ex çeşitli işlevler için daha az yığın kullanılır.

Yukarıdakilerden hiçbiri kullanılabilir değilse ancak platform malloc sağlarsa işlev, çıkışı tutmak için geçici bir arabelle ayırır. Platform, matba ailesine veya Malloc'a geliştirme yapmadığında çıkış, mevcut TLV depolama alanında sürekli duruma sığacak şekilde kesilir.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama 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 ailesi için biçim dizesiyle aynı söz dizimi ve kuralları uygular.
[in] ...
Fmt'ye göre çıkış değerinde biçimlendirilecek bağımsız değişkenlerin listesi.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
other
TLVWriter yöntemlerinin WriteElementHead veya GetNewBuffer için yapılan temel çağrıları başarısız olduysa hataları hemen çağrı yığınına yönlendirilir.

BaşlangıçKapsayıcısı

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

Yeni bir TLV kapsayıcı öğesini kodlamaya başlar.

Bir kodlamaya StartContainer() yöntemi, TLV kapsayıcı öğeleri (yapı, diziler veya yollar) 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 yazarın mevcut bağlamını kaydetmek amacıyla kullanılacak bir TLVType değerine başvuruyu alır.

StartContainer() yöntemi döndürüldüğünde uygulama, kapsayıcının öğelerini yazmak için geçerli TLVWriter nesnesini kullanmalıdır. İşiniz bittiğinde uygulama, kapsayıcının kodlamasını tamamlamak için EndContainer() yöntemini çağırmalıdır.

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ımlama işlevlerinden biriyle oluşturulmalıdır.
[in] containerType
Kodlanacak kapsayıcı türü. kTLVType_Structure, kTLVType_Array veya kTLVType_Path olmalıdır.
[out] outerContainerType
Yazarın bağlamını alacak bir TLVType değeri referansı.
Döndürülen Değerler
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
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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
)

TLV bayt dizesini birden fazla parçada kodlar.

Bu,ContinuePutBytes ile birlikte kullanılmalıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama işlevlerinden biriyle oluşturulmalıdır.
[in] totalLen
Kodlanacak toplam bayt sayısı.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Kapsayıcı yazarı, geçerli yazarda açılıp henüz kapatılmadıysa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değeri, değerin yazıldığı bağlamda geçersiz veya uygunsuzsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değer yazıldığında yazar ilk başlatıldığında belirtilen maksimum bayt sayısı sınırı aşılacak.
WEAVE_ERROR_NO_MEMORY
Yetersiz bellek nedeniyle çıkış arabelleği ayırma girişimi 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 biçimlendirilmiş şekilde kodlayın.

PutStringF, çıkışın bir karakter arabelleği yerine TLV öğesinde depolandığı bir sprintf analogudur. Genişletilmiş yazdırma işlevi mevcut olduğunda, işlev sonuç dizesini sürekli olmayan bir temel depolama alanına üretebilir. Uygulama, aşağıdaki Printf geliştirmelerini destekler:

Platform, kişisel karakterin yerine özel bir geri çağırma çağırmak için geri çağırmaya dayalı vcbprintf sağlar.

Platform, vsnprintf_ex adlı varyantın, çıkışın ilk n karakterinin atlanmasına ilişkin hükümlerinin haricinde tam olarak vsnprintf gibi davranan bir varyantı sağlar.

Geri çağırmaya dayalı işlevin en basit yöntem olabileceği ve en az sayıda kod kullanabilse de vsprintf_ex çeşitli işlevler için daha az yığın kullanılır.

Yukarıdakilerden hiçbiri kullanılabilir değilse ancak platform malloc sağlarsa işlev, çıkışı tutmak için geçici bir arabelle ayırır. Platform, matba ailesine veya Malloc'a geliştirme yapmadığında çıkış, mevcut TLV depolama alanında sürekli duruma sığacak şekilde kesilir.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin etiket olmadan kodlanması gerekiyorsa AnonymousTag. Etiket değerleri; ProfileTag(), ContextTag() veya CommonTag() etiket tanımlama 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 ailesi için biçim dizesiyle aynı söz dizimi ve kuralları uygular.
[in] ap
Fmt'ye göre çıkış değerinde biçimlendirilecek bağımsız değişkenlerin listesi.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olursa.
other
TLVWriter yöntemlerinin WriteElementHead veya GetNewBuffer için yapılan temel çağrıları başarısız olduysa hataları hemen çağrı yığınına yönlendirilir.

Herkese açık statik işlevler

Nihai Paket Paketini Bitir

WEAVE_ERROR FinalizePacketBuffer(
  TLVWriter & writer,
  uintptr_t bufHandle,
  uint8_t *bufStart,
  uint32_t dataLen
)

PacketBuffers zincirine yazmak için bir TLVWriter FinalizeBuffer işlevinin uygulanması.

FinalizePacketBuffer() işlevi, PacketBuffers zincirine yazmak için TLVWriter kullanılırken gerekli olan kesinleştirmeyi 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.

YeniYeniFarkı_Merkezi Alın

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 temel dinamik arabellek boyutunun iki katına çıkarılarak bir TLVWriter öğesine 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 ek bilgi için GetNewBufferFunct tür tanımına bakın.

YeniPacketBuffer

WEAVE_ERROR GetNewPacketBuffer(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

PacketBuffers zincirine yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.

GetNewPacketBuffer() işlevi, kodlamayı depolamak için bir veya daha fazla PaketetBuffers zinciri ayırarak TLVWriter öğesine 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 kesinleştirmek için ilgili FinalizePacketBuffer() işlevinin de (veya eşdeğeri) kullanılması gerektiğini unutmayın.

GetNewPacketBuffer() işlevinin API'sı hakkında ek bilgi için GetNewBufferFunct tür tanımına bakın.

Korumalı işlevler

IsCloseContainerAyrılmış

bool IsCloseContainerReserved(
  void
) const 

Kapsayıcının, container'ı başlatma / açma noktasında CloseContainer simgesi için boşluk bırakması gerekip gerekmediğini belirleyin.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerAyrılmış

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Kapsayıcının, kapsayıcıyı başlatma / açma noktasında CloseContainer simgesi için boşluk bırakması gerekip gerekmediğini ayarlayın.

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

Yazma Verileri

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

YazarÖğe Başlığı

WEAVE_ERROR WriteElementHead(
  TLVElementType elemType,
  uint64_t tag,
  uint64_t lenOrVal
)

Yazarken Öğe Verileri

WEAVE_ERROR WriteElementWithData(
  TLVType type,
  uint64_t tag,
  const uint8_t *data,
  uint32_t dataLen
)