Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

nl::Dokuma::TLV::DuygusalCircularTLVBuffer

#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, tek tek TLV girişi sağlanan depolama alanına sığdığı sürece WeaveCircularTLVBuffer'a sınırsız sayıda TLV girişi yazabilir. nl::Weave::TLV::TLVReader, tampon boyutunun en yüksek olanını okur, ancak arabellek içindeki sarmalama uygulanır.

İnşaat Ustaları 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(*)
Bir TLV öğesini nl::Weave::TLV::WeaveCircularTLVBuffer'dan çıkarılmadan önce işlemek için kullanılan işlev.

Herkese açık özellikler

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

Herkese açık işlevler

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
WeaveCircularTLVBuffer'da en eski üst düzey TLV öğesi yer alır.
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer, TLVWriter çıkışı tamamlandığında WeaveCircularTLVBuffer durumunu ayarlar.
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
TLVWriter için ek alan edinin.
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
TLVReader için ek alana sahip olun.
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 sunmak üzere trambolin.
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)

Herkese açık türler

İşlemYürütülmüşÖğeFunct

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

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

Bu tür işlevler, arabellekten çıkarılmak üzere olan bir TLV öğesini işlemek için kullanılır. Bu işleve, silinmek üzere olan öğeye yerleştirilmiş bir nl::Weave::TLV::TLVReader kodu verilir. Ayrıca, geri çağırma için kullanıcının ek ortam sağlamış olabileceği geçersiz * bağlam da gösterilir. İşlev, öğeyi başarıyla işlediyse WEAVE_NO_ERROR döndürmelidir. Bu, öğenin güvenli bir şekilde çıkarılabileceğini WeaveCircularTLVBuffer olarak belirtir. Diğer tüm iade değerleri hata olarak kabul edilir ve WeaveCircularTLVBuffer öğesinin, değerlendirilmekte olan öğeyi çıkarmasını önler.

Not: Bu geri çağırma, WeaveCircularTLVBuffer öğesinin öğeyi çıkarmamasını sağlamak için kullanılabilir. Bu, alttaki bir dairesel arabelleğe sahip olmak istendiğinde ancak içindeki hiçbir öğeyi geçersiz kılmak istemediğiniz birçok durumda yararlı olabilir.

Ayrıntılar
Parametreler
[in] inBuffer
Çıkartmanın yapıldığı arabelleğe referans
[in] inAppData
Bu geri çağırma için ek bağlam içeren, kullanıcı tarafından sağlanan yapıya işaret eden öğe
[in] inReader
Çıkarılacak öğeye yerleştirilmiş bir TLVReader.
İade Değerleri
WEAVE_NO_ERROR
Başarıyla tamamlandı. Öğe tahliye edilir.
other
Etkinlik işlenirken bir hata oluştu. Öğe, arabellekte kalır. Bu öğenin tahliyesini tetikleyen yazma işlevi başarısız olur.

Herkese açık özellikler

mAppData

void * mAppData

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

mmplicitProfile Kimliği

uint32_t mImplicitProfileId

mProcessEvictedElement öğesi

ProcessEvictedElementFunct mProcessEvictedElement

Öğeyi dairesel 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.

Herkese açık işlevler

KullanılabilirVeri Uzunluğu

size_t AvailableDataLength(
  void
) const 

VeriUzunluğu

size_t DataLength(
  void
) const 

Kafatası

WEAVE_ERROR EvictHead(
  void
)

WeaveCircularTLVBuffer'da en eski üst düzey TLV öğesi yer alır.

Bu işlev, arabellekteki en eski TLV öğesini kaldırır. İşlev, kaldırma işleminden önce öğeyi işlemek için mProcessEvictedElement'te kaydedilen 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, tampon içinde başka bir öğe oluşmazsa temel WeaveCircularTLVBuffer değişmeden kalır.

Ayrıntılar
İade Değerleri
WEAVE_NO_ERROR
Başarıyla tamamlandı.
other
Geri çağırma ya da TLVReader tarafından döndürülen diğer hatalarda.

Tampon Tamlama

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

FinalizeBuffer, TLVWriter çı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
imleci verinin başlangıcına getirin (TLVWriter açısından)
[in] inBufLen
arabellekteki inbufStart uzunluğu
İade Değerleri
WEAVE_NO_ERROR
Koşulsuz olarak.

YeniArabelleğe Al

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

TLVWriter için ek alan edinin.

İşlev, aslında bir öğeyi dairesel arabellekten çıkarıp bu arabellek sırasının başlığını ayarlar

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[out] outBufStart
İşaretçiyi yeni arabelleğe alın
[out] outBufLen
Yazı için kullanılabilecek uzunluk
İade Değerleri
WEAVE_NO_ERROR
Başarıyla tamamlandı.
other
İşlev, üst düzey bir TLV öğesinden vazgeçemediyse.

SonrakiSonraki Arabelleği

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

TLVReader için ek alana sahip olun.

WeaveCircularTLVBuffer tarafından sağlanan depolama alanı, arabelleğe alınabilir. Bu işlev, dairesel arabelleğin arabelleğinin TLVReader kısıtlamalarıyla eşleştirilebilmesini sağlar. Okuyucu, arabellekten en fazla mQueueSize bayt okur.

Ayrıntılar
Parametreler
[in] ioReader
Bu işlevi çağıran TLVReader.
[in,out] outBufStart
Veri arabelleğine başvuru. Dönüşte, bu arabellek içindeki bir değere ayarlanır.
[out] outBufLen
Döndürme sırasında, arabelleğin dışında okunabilen sürekli bayt sayısını ayarlayın.
İade Değerleri
WEAVE_NO_ERROR
Koşulsuzca başarılı olur.

Git Kuyruğu

uint8_t * GetQueue(
  void
) const 

GetQueueSize

size_t GetQueueSize(
  void
) const 

Sıraya Alın

uint8_t * QueueHead(
  void
) const 

Kuyruk

uint8_t * QueueTail(
  void
) const 

SetQueueHead

void SetQueueHead(
  uint8_t *aQueueHead
)

SetQueueLength

void SetQueueLength(
  size_t aQueueLength
)

WeaveCircularTLV Arabellek

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength
)

WeaveCircularTLVBuffer kurucu.

Ayrıntılar
Parametreler
[in] inBuffer
Sıranın yedek mağazasına işaret eden bilgi
[in] inBufferLength
Yedek mağazanın bayt cinsinden uzunluğu

WeaveCircularTLV Arabellek

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

WeaveCircularTLVBuffer kurucu.

Ayrıntılar
Parametreler
[in] inBuffer
Sıranın yedek mağazasına işaret eden bilgi
[in] inBufferLength
Yedek mağazanın bayt cinsinden uzunluğu
[in] inHead
Başın başlangıç noktası. inHead işaretçisi, dairesel arabellek için destek mağazasının içinde olmalıdır (ör. inBuffer ve &(inBuffer[inBufferLength]))

Herkese açık statik işlevler

BufferFunct'ı tamamlayın

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

WeaveCircularTLVBuffer::FinalizeBuffer için trambolin.

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[in,out] inBufHandle
CircularTLVWriter nesnesine tutma yeri
[in] inBufStart
imleci verinin başlangıcına getirin (TLVWriter açısından)
[in] inBufLen
arabellekteki inbufStart uzunluğu
İade Değerleri
WEAVE_NO_ERROR
Koşulsuz olarak.

YeniBufferFunct Alma

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

TLVWriter için daha fazla alan sunmak üzere trambolin.

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[in,out] inBufHandle
CircularTLVWriter nesnesine tutma yeri
[out] outBufStart
İşaretçiyi yeni arabelleğe alın
[out] outBufLen
Yazı için kullanılabilecek uzunluk
İade Değerleri
WEAVE_NO_ERROR
Başarıyla tamamlandı.
other
İşlev, üst düzey bir TLV öğesinden vazgeçemediyse.

GetNextBufferFunct

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

WeaveCircularTLVBuffer::GetNextBuffer için trambolin.

Ayrıntılar
Parametreler
[in,out] ioReader
Bu işlevi çağıran TLVReader
[in,out] inBufHandle
CircularTLVWriter nesnesine tutma yeri
[in,out] outBufStart
Veri arabelleğine başvuru. Dönüşte, bu arabellek içindeki bir değere ayarlanır.
[out] outBufLen
Döndürme sırasında, arabelleğin dışında okunabilen sürekli bayt sayısını ayarlayın.
İade Değerleri
WEAVE_NO_ERROR
Koşulsuzca başarılı olur.