nl::Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer nl::Weave::TLV::TLVWriter ve nl::Weave::TLVTLVReader için dairesel depolama alanı sağlar.

Özet

nl::Weave::TLV::TLVWriter, her bağımsız TLV girişi sağlanan depolama alanına tamamen sığdığı sürece WeaveCircularTLVBuffer'a sınırsız sayıda TLV girişi yazabilir. nl::Weave::TLV::TLVReader, en fazla arabellek boyutunu okur ancak arabelleğin etrafını sarmalar.

Oluşturucular ve Yıkıcılar

WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)

Herkese açık türler

ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR(*
nl::Weave::TLV::WeaveCircularTLVBuffer'dan çıkarılmadan önce TLV öğesini işlemek için çağrılan işlev.

Herkese açık özellikler

mAppData
void *
Çıkarılan öğeyi işleyen geri çağırma işleminde kullanılacak, kullanıcı tarafından sağlanan isteğe bağlı bir bağlam.
mImplicitProfileId
uint32_t
mProcessEvictedElement
Öğeyi döngüsel arabelleğe almadan önce işleyen, kullanıcı tarafından sağlanan isteğe bağlı bir geri çağırma.

Kamu işlevleri

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
WeaveCircularTLVBuffer içindeki en eski üst düzey TLV öğesini çıkarır.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer, TLVWriter'dan çıkış tamamlandığında WeaveCircularTLVBuffer durumunu ayarlar.
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
TLVWriter için ek alan alın.
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
TLVReader için ek alan alın.
GetQueue(void) const
uint8_t *
GetQueueSize(void) const
size_t
QueueHead(void) const
uint8_t *
QueueTail(void) const
uint8_t *
SetQueueHead(uint8_t *aQueueHead)
void
SetQueueLength(size_t aQueueLength)
void

Herkese açık statik işlevler

FinalizeBufferFunct(TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen)
GetNewBufferFunct(TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen)
TLVWriter için daha fazla alan getirmek amacıyla bir trambolin.
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
WeaveCircularTLVBuffer::GetNextBuffer konumuna giden bir trambolin.

Herkese açık türler

ProcessEvictedElementFunct

WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)

nl::Weave::TLV::WeaveCircularTLVBuffer'dan çıkarılmadan önce TLV öğesini işlemek için çağrılan işlev.

Bu tür işlevler, arabellekten çıkarılmak üzere olan bir TLV öğesini işlemek için kullanılır. İşleve, silinmek üzere olan öğeye konumlandırılmış bir nl::Weave::TLV::TLVReader ve kullanıcının geri çağırma için ek ortam sağlamış olabileceği void * bağlamı verilir. İşlev öğeyi başarıyla işlediyse WEAVE_NO_ERROR değerini döndürmelidir. Bu, WeaveCircularTLVBuffer'a öğenin güvenli bir şekilde çıkarılabileceğini belirtir. Döndürülen diğer değerler hata olarak değerlendirilir ve WeaveCircularTLVBuffer'ın söz konusu öğeyi çıkarmasını engeller.

Not: Bu geri çağırma, WeaveCircularTLVBuffer'ı öğeyi çıkarmamaya zorlamak için kullanılabilir. Bu, altında döngüsel bir tampon bulunmasının istendiği ancak içindeki herhangi bir öğenin geçersiz kılınmadığı bazı durumlarda yararlı olabilir.

Ayrıntılar
Parametreler
[in] inBuffer
Çıkarma işleminin yapıldığı tampona atıfta bulunma
[in] inAppData
Bu geri çağırma için ek bağlam içeren, kullanıcı tarafından sağlanan yapıya yönelik işaretçi
[in] inReader
Çıkarılacak öğeye konumlandırılmış bir TLVReader
Döndürülen Değerler
WEAVE_NO_ERROR
Başarılı olun. Öğe atılacak.
other
Etkinlik işlenirken bir hata oluştu. Öğe, arabellekte kalır. Bu öğenin çıkarılmasını tetikleyen yazma işlevi başarısız olur.

Herkese açık özellikler

mAppData

void * mAppData

Çıkarılan öğeyi işleyen geri çağırma işleminde kullanılacak, kullanıcı tarafından sağlanan isteğe bağlı bir bağlam.

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

Öğeyi döngüsel arabelleğe almadan önce işleyen, kullanıcı tarafından sağlanan isteğe bağlı bir geri çağırma.

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

Kamu işlevleri

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

DataLength

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

WeaveCircularTLVBuffer içindeki en eski üst düzey TLV öğesini çıkarır.

Bu işlev, arabellekteki en eski üst düzey TLV öğesini kaldırır. İşlev, kaldırma işleminden önce öğeyi işlemek için mProcessEvictedElement öğesinde kayıtlı geri çağırmayı çağırır. Geri çağırma WEAVE_NO_ERROR dışında bir değer döndürürse öğe kaldırılmaz. Benzer şekilde, arabellek içinde başka herhangi bir hata oluşursa ve temel WeaveCircularTLVBuffer değişmez.

Ayrıntılar
Döndürülen Değerler
WEAVE_NO_ERROR
Başarılı olun.
other
Geri çağırma veya TLVReader tarafından döndürülen başka bir hata olduğunda.

FinalizeBuffer

WEAVE_ERROR FinalizeBuffer(
  TLVWriter & ioWriter,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

FinalizeBuffer, TLVWriter'dan çıkış tamamlandığında WeaveCircularTLVBuffer durumunu ayarlar.

Bu işlev, sıra kuyruğunun konumunu etkiler.

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[in] inBufStart
işaretçiyi verilerin başlangıcına götür (TLVWriter açısından)
[in] inBufLen
inbufStart ile işaret edilen tampon veri uzunluğu
Döndürülen Değerler
WEAVE_NO_ERROR
Koşulsuz olarak.

GetNewBuffer

WEAVE_ERROR GetNewBuffer(
  TLVWriter & ioWriter,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

TLVWriter için ek alan alın.

Aslında işlev, dairesel arabellekten bir öğe çıkarır ve bu arabellek sırasının başını ayarlar.

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[out] outBufStart
Yeni tamponun işaretçisi
[out] outBufLen
Yazma için uygun uzunluk
Döndürülen Değerler
WEAVE_NO_ERROR
Başarılı olun.
other
İşlev, üst düzey bir TLV öğesini tam olarak kaydıramıyorsa.

GetNextBuffer

WEAVE_ERROR GetNextBuffer(
  TLVReader & ioReader,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

TLVReader için ek alan alın.

WeaveCircularTLVBuffer tarafından sağlanan depolama alanı, arabelleğin içine alınmış olabilir. Bu işlev, dairesel arabelleğin arabelleğe alınmasını TLVReader kısıtlamalarıyla eşleştirmemize olanak tanır. Okuyucu, arabellekten en fazla mQueueSize bayt okur.

Ayrıntılar
Parametreler
[in] ioReader
Bu işlevi TLVReader çağırıyor.
[in,out] outBufStart
Veri arabelleğine başvuru. Dönüşte ise bu arabellek içindeki bir değere ayarlanır.
[out] outBufLen
Dönüşte ise arabelleğe alınabilecek sürekli baytların sayısına ayarlayın.
Döndürülen Değerler
WEAVE_NO_ERROR
Koşulsuz olarak başarılı olur.

GetQueue

uint8_t * GetQueue(
  void
) const 

GetQueueSize

size_t GetQueueSize(
  void
) const 

QueueHead

uint8_t * QueueHead(
  void
) const 

QueueTail

uint8_t * QueueTail(
  void
) const 

SetQueueHead

void SetQueueHead(
  uint8_t *aQueueHead
)

SetQueueLength

void SetQueueLength(
  size_t aQueueLength
)

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength
)

WeaveCircularTLVBuffer oluşturucu.

Ayrıntılar
Parametreler
[in] inBuffer
Sıra için yedek mağaza işaretçisi
[in] inBufferLength
Yedekleme deposunun bayt cinsinden uzunluğu

WeaveCircularTLVBuffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength,
  uint8_t *inHead
)

WeaveCircularTLVBuffer oluşturucu.

Ayrıntılar
Parametreler
[in] inBuffer
Sıra için yedek mağaza işaretçisi
[in] inBufferLength
Yedekleme deposunun bayt cinsinden uzunluğu
[in] inHead
Baş için başlangıç noktası. inHead işaretçisi, dairesel arabelleğin yedek deposunun içinde, yani inBuffer ve &(inBuffer[inBufferLength] içinde) olmalıdır.

Herkese açık statik işlevler

FinalizeBufferFunct

WEAVE_ERROR FinalizeBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t inBufHandle,
  uint8_t *inBufStart,
  uint32_t inBufLen
)

WeaveCircularTLVBuffer::FinalizeBuffer'a giden bir trambolin.

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[in,out] inBufHandle
CircularTLVWriter nesnesinin tanıtıcısı
[in] inBufStart
işaretçiyi verilerin başlangıcına götür (TLVWriter açısından)
[in] inBufLen
inbufStart ile işaret edilen tampon veri uzunluğu
Döndürülen Değerler
WEAVE_NO_ERROR
Koşulsuz olarak.

GetNewBufferFunct

WEAVE_ERROR GetNewBufferFunct(
  TLVWriter & ioWriter,
  uintptr_t & inBufHandle,
  uint8_t *& outBufStart,
  uint32_t & outBufLen
)

TLVWriter için daha fazla alan getirmek amacıyla bir trambolin.

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[in,out] inBufHandle
CircularTLVWriter nesnesinin tanıtıcısı
[out] outBufStart
Yeni tamponun işaretçisi
[out] outBufLen
Yazma için uygun uzunluk
Döndürülen Değerler
WEAVE_NO_ERROR
Başarılı olun.
other
İşlev, üst düzey bir TLV öğesini tam olarak kaydıramıyorsa.

GetNextBufferFunct

WEAVE_ERROR GetNextBufferFunct(
  TLVReader & ioReader,
  uintptr_t & inBufHandle,
  const uint8_t *& outBufStart,
  uint32_t & outBufLen
)

WeaveCircularTLVBuffer::GetNextBuffer konumuna giden bir trambolin.

Ayrıntılar
Parametreler
[in,out] ioReader
Bu işlevi çağıran TLVReader
[in,out] inBufHandle
CircularTLVWriter nesnesinin tanıtıcısı
[in,out] outBufStart
Veri arabelleğine başvuru. Dönüşte ise bu arabellek içindeki bir değere ayarlanır.
[out] outBufLen
Dönüşte ise arabelleğe alınabilecek sürekli baytların sayısına ayarlayın.
Döndürülen Değerler
WEAVE_NO_ERROR
Koşulsuz olarak başarılı olur.