nl::Weave::TLV::TLVWriter

#include <src/lib/core/WeaveTLV.h>

Weave TLV biçiminde veri yazmak için bellek açısından verimli bir kodlayıcı sağlar.

Özet

TLVWriter, Weave TLV verileri için yalnızca ileriye yönelik, akış tarzı bir kodlayıcı uygular. Uygulamalar, yazarın Put() yöntemlerinden birini çağırarak ve gerektiğinde ilişkili etiket ve değer bilgilerini ileterek bir kodlamaya veri yazar. Benzer şekilde uygulamalar, yazarın OpenContainer() veya EnterContainer() yöntemlerini çağırarak TLV kapsayıcı türlerini (yapılar, diziler veya yollar) kodlayabilir.

TLVWriter nesnesi, doğrudan sabit bir çıkış arabelleğine veya bir ya da daha fazla PacketBuffer nesne zincirine veri yazabilir. Ayrıca uygulamalar, çıkışı rastgele bir hedefe (ör. bir yuva veya etkinlik sırası) yönlendirmek için kendi GetNewBuffer ve FinalizeBuffer işlevlerini sağlayabilir.

Devralma

Doğrudan Bilinen Alt Sınıflar: nl::Weave::TLV::CircularTLVWriter

Korunan türler

@72{
  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 sonlandırılmasını gerçekleştirmek için kullanılan bir işlev.
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*
TLVWriter'a yeni çıkış arabelleği alanı sağlayan bir işlev.

Herkese açık özellikler

AppData
void *
Uygulamaya özgü veriler için kullanılabilecek işaretçi alanı.
FinalizeBuffer
TLVWriter sonlandırıldığında çağrılacak bir işlevin işaretçisi.
GetNewBuffer
TLVWriter'a yeni çıkış arabelleği alanı sağlayacak bir işlevin işaretçisi.
ImplicitProfileId
uint32_t
Örtülü biçimde kodlanması gereken etiketlerin profil kimliğidir.

Korunan özellikler

mBufHandle
uintptr_t
mBufStart
uint8_t *
mContainerType
mLenWritten
uint32_t
mMaxLen
uint32_t
mRemainingLen
uint32_t
mWritePoint
uint8_t *

Kamu işlevleri

CloseContainer(TLVWriter & containerWriter)
OpenContainer() çağrısından sonra TLV kapsayıcısının yazılmasını tamamlar.
ContinuePutBytes(const uint8_t *buf, uint32_t len)
TLV baytlık dize değerini kodlar.
CopyContainer(TLVReader & container)
TLVReader nesnesinden bir TLV kapsayıcı öğesi kopyalar.
CopyContainer(uint64_t tag, TLVReader & container)
Önceden kodlanmış bir üye öğeleri grubundan bir TLV kapsayıcı öğeyi kodlar.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
Önceden kodlanmış bir kapsayıcının üye öğelerini içeren bir TLV kapsayıcı öğesini kodlar.
CopyElement(TLVReader & reader)
Bir okuyucu nesnesinden TLV öğesini yazara kopyalar.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
Bir TLV kapsayıcı öğesinin kodlamasını tamamlar.
Finalize(void)
TLV kodlamasını yazmayı bitirin.
GetContainerType(void) const
TLVWriter’ın geçerli olarak yazmakta olduğu kapsayıcı türünü döndürür.
GetLengthWritten(void)
uint32_t
Yazar başlatıldığından beri yazılan toplam bayt sayısını döndürür.
Init(uint8_t *buf, uint32_t maxLen)
void
Tek bir çıkış arabelleğine yazmak için bir TLVWriter nesnesi başlatır.
Init(PacketBuffer *buf, uint32_t maxLen)
void
Tek bir PacketBuffer'a yazmak için bir TLVWriter nesnesi başlatır.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
Bir veya daha fazla PacketBuffers'a yazmak için bir TLVWriter nesnesi başlatır.
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
Dinamik bir arabelleğe yazmak için bir TLVWriter nesnesi başlatır.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
TLV kapsayıcı öğesinin üyelerini yazmak için yeni bir TLVWriter nesnesi 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 imzalanmamış tam sayı değerini kodlar.
Put(uint64_t tag, uint8_t v, bool preserveSize)
TLV imzalanmamış tam sayı değerini kodlar.
Put(uint64_t tag, uint16_t v)
Put(uint64_t tag, uint16_t v, bool preserveSize)
Put(uint64_t tag, uint32_t v)
Put(uint64_t tag, uint32_t v, bool preserveSize)
Put(uint64_t tag, uint64_t v)
Put(uint64_t tag, uint64_t v, bool preserveSize)
Put(uint64_t tag, float v)
Put(uint64_t tag, double v)
TLV kayan nokta değerini kodlar.
PutBoolean(uint64_t tag, bool v)
TLV boole değerini kodlar.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
TLV baytlık dize değerini kodlar.
PutNull(uint64_t tag)
TLV null değerini kodlar.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
Önceden kodlanmış bir üye öğeleri grubundan bir TLV kapsayıcı öğeyi kodlar.
PutString(uint64_t tag, const char *buf)
TLV UTF8 dize değerini kodlar.
PutString(uint64_t tag, const char *buf, uint32_t len)
TLV UTF8 dize değerini kodlar.
PutStringF(uint64_t tag, const char *fmt, ...)
Dize çıktısını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
Yeni bir TLV kapsayıcı öğesini kodlamaya başlar.
StartPutBytes(uint64_t tag, uint32_t totalLen)
Birden çok parçadaki bir TLV bayt dizesini kodlar.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
Dize çıktısını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.

Herkese açık statik işlevler

FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
PacketBuffers zincirine yazma için TLVWriter FinalizeBuffer işlevinin uygulaması.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
Dinamik bir arabelleğe yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
PacketBuffers zincirine yazmak için TLVWriter GetNewBuffer işlevinin uygulaması.

Korunan işlevler

IsCloseContainerReserved(void) const
bool
Kapsayıcının, kapsayıcının başlangıç / açma noktasında CloseContainer simgesi için yer ayırması gerekip gerekmediğini belirleyin.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
Kapsayıcının, kapsayıcının başlangıç / açma noktasında CloseContainer sembolü için yer ayırıp ayırmayacağını belirleyin.
SetContainerOpen(bool aContainerOpen)
void
WriteData(const uint8_t *p, uint32_t len)
WriteElementHead(TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
WriteElementWithData(TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)

Korunan türler

@72

 @72

Herkese açık türler

FinalizeBufferFunct

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

TLVWriter nesnesinden çıkışın sonlandırılmasını gerçekleştirmek için kullanılan bir işlev.

Bu tür işlevler, TLVWriter'ın Finalize() yöntemi çağrıldığında çağrılır. İşlevin, yazar nesnesinin çıktısının tüketilmesiyle ilgili olarak gerekli tüm temizleme veya tamamlama işlemlerini yapması beklenir. Bunlara örnek olarak kodlamanın son uzunluğunu kaydetme veya bir dosya tanımlayıcıyı kapatma gibi işlemler verilebilir.

Ayrıntılar
Parametreler
[in] writer
Sonlandırılmakta olan TLVWriter nesnesine referans.
[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 son) çıkış arabelleğinin başlangıcına işaret eden bir işaretçi.
[in,out] bufLen
bufStart tarafından işaret edilen arabelleğin içerdiği bayt sayısı.
Döndürülen Değerler
WEAVE_NO_ERROR
Sonlandırma başarılı olup olmadığı.
other
Sonlandırma sırasında 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)

TLVWriter'a yeni çıkış arabelleği alanı sağlayan bir işlev.

Bu tür işlevler, TLVWriter'ın yazması için yeni arabellek alanı hazırlamak amacıyla kullanılır. Çağrıldığında, işlevin ilişkilendirilmiş maksimum uzunlukla birlikte yeni verilerin yazılması gereken bellek konumuna bir işaretçi döndürmesi beklenir. İşlev, verileri tutmak için yeni bir arabellek ayırarak veya mevcut bir arabelleğe önceden yazılmış verileri temizleyerek yazma alanı sağlayabilir.

Ayrıntılar
Parametreler
[in] writer
Yeni arabellek alanı isteyen TLVWriter nesnesine referans.
[in,out] bufHandle
İşlevin, çağrılar arasında bağlam verilerini depolamak için kullanabileceği uintptr_t değerine başvuru. Bu değer, ilk çağrıdan önce 0 değerine başlatılır.
[in,out] bufStart
Veri işaretçisine başvuru. İşlev girişinde, bufStart mevcut çıkış arabelleğinin başlangıcını işaret eder. Çıkışta bufStart öğesinin, 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 konumu gösterebilir.
[in,out] bufLen
İmzasız bir tam sayıya başvuru. İşlev girişinde bufLen, geçerli arabellekteki unused alanın bayt sayısını içerir. Çıkışta bufLen öğesinin, yeni çıkış arabelleğine yazılabilecek maksimum bayt sayısını içermesi beklenir.
Döndürülen Değerler
WEAVE_NO_ERROR
İşlevin yazar için daha fazla tampon alanı sağlayıp sağlayamadığı.
other
İşlevin ek arabellek alanı oluşturmasını engelleyen bir hata olduğunu belirten diğer Weave veya platforma özgü hata kodları.

Herkese açık özellikler

AppData

void * AppData

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

FinalizeBuffer

FinalizeBufferFunct FinalizeBuffer

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

Bir TLVWriter nesnesi, Finalize() yöntemi her çağrıldığında FinalizeBuffer işlevini çağırır. Uygulamalar, işlev işaretçisini Finalize() çağrısından önce herhangi bir noktada ayarlayabilir. İşaretçi varsayılan olarak NULL değerine ayarlanır. Bu, Finalize() yönteminin işlevi çağırmaktan vazgeçmesine neden olur.

FinalizeBuffer işlevinin uygulanması hakkında daha fazla bilgi için FinalizeBufferFunct tür tanımına bakın.

GetNewBuffer

GetNewBufferFunct GetNewBuffer

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

Mevcut çıkış arabelleğinin boyutunu aşan verileri yazmak için bir girişimde bulunulduğunda TLVWriter nesnesi, GetNewBuffer işlevini çağırır. NULL (varsayılan değer) değerine ayarlanırsa çıkış verisi geçerli arabelleğe taşarsa yazar WEAVE_ERROR_NO_MEMORY döndürür.

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

GetNewBuffer işlevinin uygulanması hakkında ek bilgi için GetNewBufferFunct tür tanımına bakın.

ImplicitProfileId

uint32_t ImplicitProfileId

Örtülü biçimde kodlanması gereken etiketlerin profil kimliğidir.

Yazardan yeni bir öğeyi kodlaması istendiğinde, yeni öğeyle ilişkilendirilen etiketin profil kimliği ImplicitProfileId üyesinin değeriyle eşleşiyorsa yazar, işlemdeki profil kimliğini atlayarak etiketi örtülü biçimde kodlar.

Varsayılan olarak ImplicitProfileId özelliği, yazara örtülü olarak kodlanmış etiketler yayınlamamasını bildiren kProfileIdNotSpecified değerine ayarlanır. Uygulamalar kodlamadaki geçerli noktadan başlayarak kodlama etiketlerini örtülü biçimde etkinleştirmek için herhangi bir zamanda ImplicitProfileId özelliğini ayarlayabilir. Ayarlanacak uygun profil kimliği, genellikle söylenen uygulamanın veya protokolün bağlamına bağlıdır.

Korunan özellikler

mBufHandle

uintptr_t mBufHandle

mBufStart

uint8_t * mBufStart

mContainerType

TLVType mContainerType

mLenWritten

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

Kamu işlevleri

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

OpenContainer() çağrısından sonra TLV kapsayıcısının yazılmasını tamamlar.

CloseContainer() yöntemi, bir OpenContainer() çağrısından sonra üst TLVWriter nesnesinin durumunu geri yükler. Her OpenContainer() çağrısı için uygulamalar CloseContainer() çağrısına karşılık gelen bir çağrı yapmalıdır. Böylece, her iki yöntemde de aynı kapsayıcı yazıcısına bir referans iletilmelidir.

CloseContainer() işlevi döndürüldüğünde, uygulamalar kapsayıcı öğesinden sonra görünen ek TLV öğeleri yazmak için üst yazıcıyı kullanmaya devam edebilir. Bu noktada, sağlanan kapsayıcı yazıcı "başlatıldı" olarak kabul edilmeli ve yeniden başlatma yapılmadan kullanılmamalıdır.

Ayrıntılar
Parametreler
[in] containerWriter
OpenContainer() yöntemi için sağlanan TLVWriter nesnesine referans.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
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ıda başka bir kapsayıcı yazıcı açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Kapsayıcının kodlamasının tamamlanması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

ContinuePutBytes

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

TLV baytlık dize değerini kodlar.

Bu, StartPutBytes ile kullanılmalıdır.

Ayrıntılar
Parametreler
[in] buf
Kodlanacak bayt dizesini içeren bir arabelleğin işaretçisi.
[in] len
Kodlanacak bayt sayısı.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

CopyContainer

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

TLVReader nesnesinden bir TLV kapsayıcı öğesi kopyalar.

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

Ayrıntılar
Parametreler
[in] container
Kopyalanacak önceden kodlanmış TLV kapsayıcısını tanımlayan bir TLVReader nesnesine referans.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_INCORRECT_STATE
Temin edilen okuyucu bir kapsayıcı öğesine yerleştirilmediyse.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkilendirilmiş temel TLV kodlamasının zamanından önce bitip bitmediği.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Sağlanan okuyucu, geçersiz veya desteklenmeyen bir TLV öğe türüyle karşılaşırsa.
WEAVE_ERROR_INVALID_TLV_TAG
Sağlanan okuyucu, geçersiz bağlamda bir TLV etiketiyle karşılaştıysa veya kaynak kapsayıcıyla ilişkili 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şıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

CopyContainer

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

Önceden kodlanmış bir üye öğeleri grubundan bir TLV kapsayıcı öğeyi kodlar.

CopyContainer() yöntemi, TLVReader nesnesinden alınan bir üye öğeleri grubunu içeren yeni bir TLV kapsayıcı öğesini (yapı, dizi veya yol) kodlar. Yöntem çağrıldığında, sağlanan okuyucu nesnesinin bir TLV kapsayıcı öğesine yerleştirilmesi beklenir. Yeni kodlanmış kapsayıcı, giriş kapsayıcısıyla aynı tür ve üyelere sahip olacaktır. Yeni kapsayıcının etiketi giriş parametresi olarak belirtilir.

Yöntem döndürüldüğünde, author nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.

Ayrıntılar
Parametreler
[in] tag
Kapsayıcı ile 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ış TLV kapsayıcısını tanımlayan bir TLVReader nesnesine referans.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_INCORRECT_STATE
Temin edilen okuyucu bir kapsayıcı öğesine yerleştirilmediyse.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkilendirilmiş temel TLV kodlamasının zamanından önce bitip bitmediği.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Sağlanan okuyucu, geçersiz veya desteklenmeyen bir TLV öğe türüyle karşılaşırsa.
WEAVE_ERROR_INVALID_TLV_TAG
Sağlanan okuyucu, geçersiz bağlamda bir 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ğerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

CopyContainer

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

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

CopyContainer() yöntemi, önceden kodlanmış bir kapsayıcının içeriğinden alınan bir grup üye öğelerini içeren yeni bir TLV kapsayıcı öğesini (yapı, dizi veya yol) kodlar. Yöntem çağrıldığında, sağlanan giriş arabelleğindeki veriler bir TLV kapsayıcı öğesi olarak ayrıştırılır ve giriş kapsayıcısıyla aynı tür ve üyelere sahip yeni bir kapsayıcı yazılır. Yeni kapsayıcının etiketi giriş parametresi olarak belirtilir.

Yöntem döndürüldüğünde, author nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.

Ayrıntılar
Parametreler
[in] tag
Kapsayıcı ile 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ış TLV kapsayıcısı içeren bir 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ı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_TLV_UNDERRUN
Kodlanmış kapsayıcı erken sona erdiğinde.
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ğerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

CopyElement

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

Bir okuyucu nesnesinden TLV öğesini yazara kopyalar.

CopyElement() yöntemi, türü, etiketi ve değeri bir TLVReader nesnesinden alınan yeni bir TLV öğesini kodlar. Yöntem çağrıldığında, sağlanan okuyucu nesnesinin kaynak TLV öğesine yerleştirilmesi beklenir. Yeni kodlanmış öğe, giriş kapsayıcısıyla aynı tür, etiket ve içeriğe sahip olur. Sağlanan öğe bir TLV kapsayıcısıysa (yapı, dizi veya yol) kapsayıcının tüm içeriği kopyalanır.

Ayrıntılar
Parametreler
[in] reader
Kopyalanması gereken önceden kodlanmış TLV öğesini tanımlayan bir TLVReader nesnesine referans.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_INCORRECT_STATE
Sağlanan okuyucu herhangi bir öğenin üzerinde yer almıyorsa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_TLV_UNDERRUN
Sağlanan okuyucuyla ilişkilendirilmiş temel TLV kodlamasının zamanından önce bitip bitmediği.
WEAVE_ERROR_INVALID_TLV_ELEMENT
Sağlanan okuyucu, geçersiz veya desteklenmeyen bir TLV öğe türüyle karşılaşırsa.
WEAVE_ERROR_INVALID_TLV_TAG
Sağlanan okuyucu, geçersiz bağlamda bir 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ğerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

CopyElement

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

EndContainer

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

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

EndContainer() yöntemi, bir TLV kapsayıcı öğesinin kodlamasını tamamlar ve önceki bir StartContainer() çağrısından sonra TLVWrite nesnesinin durumunu geri yükler. Her StartContainer() uygulaması çağrısı için, StartContainer() çağrısının döndürdüğü TLVType değerini ileterek EndContainer() EndContainer() döndürüldüğünde, yazıcı nesnesi, kapsayıcı öğesini izleyen ek TLV öğeleri yazmak için kullanılabilir.

Ayrıntılar
Parametreler
[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ı olup olmadığı.
WEAVE_ERROR_INCORRECT_STATE
İlgili bir StartContainer() çağrısı yapılmadıysa.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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ı yazmayı bitirin.

Finalize() yöntemi, temel çıkış arabelleğine TLV kodlaması yazma işlemini tamamlar. Yöntem, arabelleğin içeriklerini kullanmadan önce uygulama tarafından çağrılmalıdır. Finalize() yalnızca geçerli yazar için açık kapsayıcı yazarı olmadığında çağrılabilir. (Bkz. OpenContainer()).

Ayrıntılar
Döndürülen Değerler
WEAVE_NO_ERROR
Kodlamanın başarıyla sonlanıp tamamlanmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
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 geçerli olarak yazmakta olduğu kapsayıcı türünü döndürür.

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

Ayrıntılar
İadeler
Geçerli kapsayıcının TLVType veya TLVWriter bir kapsayıcı içine öğe yazmıyorsa kTLVType_NotSpecified.

GetLengthWritten

uint32_t GetLengthWritten(
  void
)

Yazar başlatıldığından beri yazılan toplam bayt sayısını döndürür.

Ayrıntılar
İadeler
Yazarın başlatılmasından bu yana yazılan toplam bayt sayısı.

Başlat

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

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

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

Başlat

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

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

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

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

Başlat

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

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

Yazma, belirtilen arabellekteki mevcut verilerin son baytından hemen sonra başlar. allowDiscontiguousBuffers değeri doğru ise yazılan veri miktarını karşılamak için ek PacketBuffer'lar ayrılır ve sağlanan arabelleğe zincirlenir. Belirtilen çıkış tamponu zaten bir arabellek zincirinin başındaysa yeni tamponlar ayrılmadan önce çıkış, zincirde sonraki arabelleklere yazılır.

Ayrıntılar
Parametreler
[in] buf
TLV verilerinin yazılacağı bir PacketBuffer işaretçisi.
[in] maxLen
Çıkış arabelleklerine yazılması gereken maksimum bayt sayısı.
[in] allowDiscontiguousBuffers
Doğru değerine ayarlanırsa verileri bir PacketBuffers zincirine yazın ve yazılan verileri depolamak için gerektiğinde yeni arabellekler ayırın. Yanlış değerine ayarlanırsa, yazılı veriler ilk çıkış arabelleğinde kullanılabilir olan alanı aşarsa WEAVE_ERROR_BUFFER_TOO_SMALL ile yazma başarısız olur.

InitMalloced

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

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

Ayrıntılar
Parametreler
[in] buf
Ayrılan arabelleği alacak işaretçiye başvuru.
[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
)

TLV kapsayıcı öğesinin üyelerini yazmak için yeni bir TLVWriter nesnesi başlatır.

OpenContainer() yöntemi, TLV kapsayıcı öğelerini (yapı, diziler veya yollar) bir kodlamaya yazmak için kullanılır. Yöntem, yeni kapsayıcının türünü ve etiketini (varsa) ve kapsayıcının öğelerini yazmak amacıyla başlatılacak yeni bir yazar nesnesine (kapsayıcı yazarı) referansı alır. Uygulamalar, kapsayıcı yazıcısını kullanarak yeni kapsayıcının üyelerini yazar ve ardından, kapsayıcı kodlamasını tamamlamak için CloseContainer() işlevini çağırır.

Kapsayıcı yazıcı açıkken uygulamalar, ana yazarın durumunu açmamalı veya başka bir şekilde değiştirmemelidir.

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

  • Örtülü profil kimliği (ImplicitProfileId)
  • Uygulama veri işaretçisi (OAuth)
  • GetNewBuffer ve FinalizeBuffer işlevi işaretçileri

Ayrıntılar
Parametreler
[in] tag
Kapsayıcı ile 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 başvuru. Sağlanan nesneyle ilişkilendirilen tüm verilerin üzerine yazılır.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_WRONG_TLV_TYPE
containerType için belirtilen değer yanlıştır.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

TLV işaretli tam sayı değerini kodlar.

Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin 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.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

Veri destekli

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

TLV işaretli tam sayı değerini kodlar.

Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin 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ı kadar kodlanması gerekiyorsa yanlış değerini alır. Not: Uygulamaların bu parametreyi false olarak ayarlaması kesinlikle önerilir.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Veri destekli

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

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Veri destekli

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

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Veri destekli

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

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

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

Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin 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.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

Veri destekli

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

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

Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin 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ı kadar kodlanması gerekiyorsa yanlış değerini alır. Not: Uygulamaların bu parametreyi false olarak ayarlaması kesinlikle önerilir.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Veri destekli

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

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Veri destekli

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

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Veri destekli

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

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Veri destekli

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

TLV kayan nokta değerini kodlar.

Bu, kolaylık sağlamak amacıyla sağlanan aşırı yüklenmiş bir üye işlevidir. Bu işlev, yalnızca kabul ettiği bağımsız değişkenler açısından yukarıdaki işlevden farklıdır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin 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.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

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 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.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

PutBytes

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

TLV baytlık dize değerini kodlar.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin 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 bir arabelleğin işaretçisi.
[in] len
Kodlanacak bayt sayısı.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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 null 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ımı işlevlerinden biriyle oluşturulmalıdır.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

PutPreEncodedContainer

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

Önceden kodlanmış bir üye öğeleri grubundan bir TLV kapsayıcı öğeyi kodlar.

PutPreEncodedContainer() yöntemi, önceden kodlanmış bir arabellekten alınan bir üye öğeleri grubu içeren yeni bir TLV kapsayıcı öğesini (yapı, dizi veya yol) kodlar. Giriş arabelleğinin, belirtilen kapsayıcı türüyle ilişkili kurallara uyan etiketlere sahip sıfır veya daha fazla tam kodlanmış TLV öğesi içermesi beklenir (ör. yapı üyelerinin etiketleri olmalıdır, dizi üyeleri ise olmamalıdır).

Bu yöntem, kapsayıcı öğesinin tamamını tek bir çağrıda kodlar. PutPreEncodedContainer() döndürüldüğünde, yazar nesnesi, kapsayıcı öğesinin ardından ek TLV öğeleri yazmak için kullanılabilir.

Ayrıntılar
Parametreler
[in] tag
Kapsayıcı ile 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 üyesi olacak daha kodlanmış TLV öğesi içermeyen bir arabelleğin 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ı olup olmadığı.
WEAVE_ERROR_WRONG_TLV_TYPE
containerType için belirtilen değer yanlıştır.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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 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ımı işlevlerinden biriyle oluşturulmalıdır.
[in] buf
Kodlanacak boş sonlandırılmış UTF-8 dizesine işaret eden bir işarettir.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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 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ımı işlevlerinden biriyle oluşturulmalıdır.
[in] buf
Kodlanacak UTF-8 dizesine yönelik işaretçi.
[in] len
Kodlanacak dizenin uzunluğu (bayt cinsinden).
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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 çıktısını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.

PutStringF, sprintf'in analogudur. Çıktı, karakter arabelleği yerine TLV öğesinde depolanır. Genişletilmiş Printf işlevi kullanılabilir olduğunda işlev, sonuç dizesini sürekli olmayan bir temel depolama alanına verebilir. Uygulama aşağıdaki Printf geliştirmelerini destekler:

Platform, putchar yerine özel bir geri çağırma işlevini çağırmaya olanak tanıyan geri çağırmaya dayalı bir vcbprintf sağlar.

Platform, vsnprintf etiketinin vsnprintf_ex adlı bir varyantını sağlar. Bu varyant, vsnprintf ile tam olarak benzerdir. Tek fark, çıkışın ilk n karakterini atlayan koşulları içermesidir.

Geri çağırmaya dayalı işlevin en basit yöntem olabileceğini ve en az miktarda kod kullanabileceğini, ancak vsprintf_ex çeşitli işlevlerin daha az yığın tüketeceğini unutmayın.

Yukarıdakilerin ikisi de mevcut değilse ancak platform malloc sağlıyorsa işlev, çıkışı saklamak için geçici bir arabellek ayırır. Platform, yazdırmaf ailesine veya Malloc'a geliştirme sağlamadığında, çıktı, mevcut TLV depolama alanındaki sürekli duruma uyacak şekilde kısaltılır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin 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ı izler.
[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ı olup olmadığı.
other
TLVWriter yöntemleri için yapılan temel çağrılar (WriteElementHead veya GetNewBuffer) başarısız olursa 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ıyı yazmak için kullanılırken yazarın mevcut bağlamını kaydetmek için kullanılacak bir TLVType değerine başvuru alır.

StartContainer() yöntemi döndürüldüğünde, uygulama kapsayıcının öğelerini yazmak için mevcut TLVWriter nesnesini kullanmalıdır. İşlem tamamlandığında, uygulamanın kapsayıcının kodlamasını bitirmek için EndContainer() yöntemini çağırması gerekir.

Ayrıntılar
Parametreler
[in] tag
Kapsayıcı ile 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 referans.
Döndürülen Değerler
WEAVE_NO_ERROR
Yöntem başarılı olup olmadığı.
WEAVE_ERROR_WRONG_TLV_TYPE
containerType için belirtilen değer yanlıştır.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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
)

Birden çok parçadaki bir TLV bayt dizesini kodlar.

Bu, ContinuePutBytes ile 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ımı 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ı olup olmadığı.
WEAVE_ERROR_TLV_CONTAINER_OPEN
Bir kapsayıcı yazar mevcut yazarda açılmış ancak henüz kapatılmamışsa.
WEAVE_ERROR_INVALID_TLV_TAG
Belirtilen etiket değerinin, yazıldığı bağlamda geçersiz veya uygunsuz olup olmadığı.
WEAVE_ERROR_BUFFER_TOO_SMALL
Değerin yazılması, yazar başlatıldığında belirtilen maksimum bayt sayısı sınırını aşıyorsa.
WEAVE_ERROR_NO_MEMORY
Bellek yetersizliği 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.

VPutDizesi

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

Dize çıktısını TLV öğesindeki biçime göre biçimlendirilmiş şekilde kodlayın.

PutStringF, sprintf'in analogudur. Çıktı, karakter arabelleği yerine TLV öğesinde depolanır. Genişletilmiş Printf işlevi kullanılabilir olduğunda işlev, sonuç dizesini sürekli olmayan bir temel depolama alanına verebilir. Uygulama aşağıdaki Printf geliştirmelerini destekler:

Platform, putchar yerine özel bir geri çağırma işlevini çağırmaya olanak tanıyan geri çağırmaya dayalı bir vcbprintf sağlar.

Platform, vsnprintf etiketinin vsnprintf_ex adlı bir varyantını sağlar. Bu varyant, vsnprintf ile tam olarak benzerdir. Tek fark, çıkışın ilk n karakterini atlayan koşulları içermesidir.

Geri çağırmaya dayalı işlevin en basit yöntem olabileceğini ve en az miktarda kod kullanabileceğini, ancak vsprintf_ex çeşitli işlevlerin daha az yığın tüketeceğini unutmayın.

Yukarıdakilerin ikisi de mevcut değilse ancak platform malloc sağlıyorsa işlev, çıkışı saklamak için geçici bir arabellek ayırır. Platform, yazdırmaf ailesine veya Malloc'a geliştirme sağlamadığında, çıktı, mevcut TLV depolama alanındaki sürekli duruma uyacak şekilde kısaltılır.

Ayrıntılar
Parametreler
[in] tag
Değerle kodlanacak TLV etiketi veya değerin 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ı izler.
[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ı olup olmadığı.
other
TLVWriter yöntemleri için yapılan temel çağrılar (WriteElementHead veya GetNewBuffer) başarısız olursa 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
)

PacketBuffers zincirine yazma için TLVWriter FinalizeBuffer işlevinin uygulaması.

FinalizePacketBuffer() işlevi, PacketBuffers zincirine yazmak için TLVWriter kullanırken gerekli olan son haline getirme işlemini gerçekleştirir. İşlev, GetNewPacketBuffer() işleviyle birlikte kullanılmak üzere tasarlanmıştır.

FinalizePacketBuffer() işlevinin API'si hakkında daha fazla bilgi için FinalizeBufferFunct türü tanımına bakın.

GetNewBuffer_Malloced

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

Dinamik bir arabelleğe yazmak için bir TLVWriter GetNewBuffer işlevi uygulaması.

GetNewBuffer_Malloced() işlevi, kodlamayı depolamak için gerektiğinde temel dinamik arabelleğin boyutunu iki katına çıkararak TLVWriter'a yeni çıkış alanı sağlar. İşlev, TLVWriter GetNewBuffer işlev işaretçisine atanmak üzere tasarlanmıştır.

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

GetNewPacketBuffer

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

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

GetNewPacketBuffer() işlevi, kodlamayı depolamak için gerektiğinde bir veya daha fazla PacketBuffers zinciri ayırarak bir TLVWriter'a yeni çıkış alanı sağlar. İşlev, TLVWriter GetNewBuffer işlev işaretçisine atanmak üzere tasarlanmıştır.

GetNewPacketBuffer'ı TLVWriter ile kullanırken, arabellek zincirini sonlandırmak için karşılık gelen FinalizePacketBuffer() işlevinin (veya bir eşdeğerinin) de kullanılması gerektiğini unutmayın.

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

Korunan işlevler

IsCloseContainerReserved

bool IsCloseContainerReserved(
  void
) const 

Kapsayıcının, kapsayıcının başlangıç / açma noktasında CloseContainer simgesi için yer ayırması gerekip gerekmediğini belirleyin.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerReserved

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

Kapsayıcının, kapsayıcının başlangıç / açma noktasında CloseContainer sembolü için yer ayırıp ayırmayacağını belirleyin.

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

WriteData

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

WriteElementHead

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

WriteElementWithData

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