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 bir TLV girişi sağlanan depolama alanı içinde olduğu sürece WeaveCircularTLVBuffer'a sınırsız sayıda TLV girişi yazabilir. nl::Weave::TLV::TLVReader, en çok arabelleğin boyutunu okur ancak sarmalamayı arabelleğe alır.

Oluşturucular ve Yıkıcılar

WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
WeaveCircularTLVBuffer oluşturucusu.
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
WeaveCircularTLVBuffer oluşturucusu.

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şlemeye çağrılan işlev.

Herkese açık özellikler

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

Herkese açık işlevler

AvailableDataLength(void) const
size_t
DataLength(void) const
size_t
EvictHead(void)
WeaveCircularTLVBuffer'daki en eski üst düzey TLV öğesini çıkarı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 alan edinin.
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 getiren bir trambolin.
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
WeaveCircularTLVBuffer::GetNextBuffer öğesine bir trambolin.

Herkese açık türler

ProcessEvictedElementFunct

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

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

Bu tür işlevler, arabellekten çıkarılmak üzere olan 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ı sağlanır. İşlev, öğeyi başarıyla işlediyse WEAVE_NO_ERROR değerini döndürmesi gerekir. bu, WeaveCircularTLVBuffer'a öğenin güvenli bir şekilde atılabileceği anlamına gelir. Diğer herhangi bir dönüş değeri 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, arka planda dairesel bir tamponun bulunmasının istendiğinde, ancak içindeki herhangi bir öğenin geçersiz kılınmaması istendiğinde bazı durumlarda yararlı olabilir.

Ayrıntılar
Parametreler
[in] inBuffer
Çıkartma işleminin gerçekleştiği tampona atıfta bulunma
[in] inAppData
Bu geri arama için ek bağlam içeren, kullanıcı tarafından sağlanan yapıya yönlendiren bir işaretçi
[in] inReader
Çıkarılacak öğeye konumlandırılan bir TLVReader.
Değerleri Döndür
WEAVE_NO_ERROR
Başarıya merhaba. Öğe çıkarı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ğırmayla kullanılacak, kullanıcı tarafından sağlanan isteğe bağlı bir bağlam.

mImplicitProfileId

uint32_t mImplicitProfileId

mProcessEvictedElement

ProcessEvictedElementFunct mProcessEvictedElement

Öğeyi dairesel arabellekten çıkarmadan önce işleyen, isteğe bağlı, kullanıcı tarafından sağlanan bir geri çağırma.

mProcessEvictedElement işlevini uygulama hakkında daha fazla bilgi için ProcessEvictedElementFunct tür tanımına bakın.

Herkese açık işlevler

AvailableDataLength

size_t AvailableDataLength(
  void
) const 

DataLength

size_t DataLength(
  void
) const 

EvictHead

WEAVE_ERROR EvictHead(
  void
)

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

Bu işlev, arabellekteki en eski üst düzey TLV öğesini kaldırır. İşlev, öğeyi kaldırma işleminden önce işlemek için mProcessEvictedElement konumuna kaydedilen geri çağırmayı çağırır. Geri çağırma WEAVE_NO_ERROR dışında bir şey döndürürse öğe kaldırılmaz. Benzer şekilde, arabellekte başka bir hata oluşursa temel alınan WeaveCircularTLVBuffer aynı kalır.

Ayrıntılar
Değerleri Döndür
WEAVE_NO_ERROR
Başarıya merhaba.
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 çı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
verilerin başlangıcına işaretçi (TLVWriter açısından)
[in] inBufLen
inbufStart tarafından işaret edilen arabellekteki veri uzunluğu
Değerleri Döndür
WEAVE_NO_ERROR
Koşulsuz olarak.

GetNewBuffer

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

TLVWriter için ek alan edinin.

Aslında işlev, bir öğeyi dairesel arabellekten çıkarır ve 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
Yeni arabelleğe işaretleyici
[out] outBufLen
Yazma için kullanılabilecek uzunluk
Değerleri Döndür
WEAVE_NO_ERROR
Başarıya merhaba.
other
İşlev, tam üst düzey TLV öğesini çıkaramadıysa.

GetNextBuffer

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

TLVReader için ek alan edinin.

WeaveCircularTLVBuffer tarafından sağlanan depolama alanı, arabelleğin içine sarılmış olabilir. Bu işlev, dairesel arabelleğin arabelleğe alınmasını TLVReader kısıtlamalarıyla eşleştirmemizi sağlar. Okuyucu, arabellekten en fazla mQueueSize bayt okuyacak.

Ayrıntılar
Parametreler
[in] ioReader
TLVReader bu işlevi çağırır.
[in,out] outBufStart
Veri arabelleğine başvuru. Döndürme işleminde, bu tampon içindeki bir değere ayarlanır.
[out] outBufLen
Dönüşte, arabellekten okunabilecek sürekli bayt sayısına ayarlayın.
Değerleri Döndür
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şturucusu.

Ayrıntılar
Parametreler
[in] inBuffer
Sıra için yedek depoya işaretçi
[in] inBufferLength
Yedek deponun bayt cinsinden uzunluğu

WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer oluşturucusu.

Ayrıntılar
Parametreler
[in] inBuffer
Sıra için yedek depoya işaretçi
[in] inBufferLength
Yedek deponun bayt cinsinden uzunluğu
[in] inHead
Kafanın başlangıç noktası. inHead işaretçisi, dairesel arabellek için arka depolama alanında, ör.inBuffer ve &(inBuffer[inBufferLength] içinde) 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 bir trambolin.

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[in,out] inBufHandle
CircularTLVWriter nesnesinin tutma yeri
[in] inBufStart
verilerin başlangıcına işaretçi (TLVWriter açısından)
[in] inBufLen
inbufStart tarafından işaret edilen arabellekteki veri uzunluğu
Değerleri Döndür
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 getiren bir trambolin.

Ayrıntılar
Parametreler
[in,out] ioWriter
Bu işlevi çağıran TLVWriter
[in,out] inBufHandle
CircularTLVWriter nesnesinin tutma yeri
[out] outBufStart
Yeni arabelleğe işaretleyici
[out] outBufLen
Yazma için kullanılabilecek uzunluk
Değerleri Döndür
WEAVE_NO_ERROR
Başarıya merhaba.
other
İşlev, tam üst düzey TLV öğesini çıkaramadıysa.

GetNextBufferFunct

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

WeaveCircularTLVBuffer::GetNextBuffer öğesine bir trambolin.

Ayrıntılar
Parametreler
[in,out] ioReader
Bu işlevi çağıran TLVReader
[in,out] inBufHandle
CircularTLVWriter nesnesinin tutma yeri
[in,out] outBufStart
Veri arabelleğine başvuru. Döndürme işleminde, bu tampon içindeki bir değere ayarlanır.
[out] outBufLen
Dönüşte, arabellekten okunabilecek sürekli bayt sayısına ayarlayın.
Değerleri Döndür
WEAVE_NO_ERROR
Koşulsuz olarak başarılı olur.