nl:: örgü:: TLV:: WeaveDaireselTLVBffer

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

WeaveCircularTLVBuffer için dairesel depolama sağlarnl :: Dokuma :: TLV :: TLVWriter ve nl :: Dokuma :: TLVTLVReader.

Özet

nl :: Dokuma :: TLV :: TLVWriter bir sınırsız sayıda yazabilir TLV için girişler WeaveCircularTLVBuffer sürece her şekilde TLV tamamen sağlanan depolama içinde giriş uyan.Nl :: Dokuma :: TLV :: TLVReader tampon çoğu boyutta okur, ancak tampon içinde wraparound karşılayacak.

Yapıcılar ve Yıkıcılar

WeaveCircularTLVBuffer (uint8_t *inBuffer, size_t inBufferLength)
WeaveCircularTLVBuffer (uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
WeaveCircularTLVBuffer yapıcısı.

Genel türler

ProcessEvictedElementFunct )(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader) WEAVE_ERROR(*
Bir işlem olarak adlandırılır bir fonksiyon TLV önce buna eleman tahliye edilen nl :: Örgü :: TLV :: WeaveCircularTLVBuffer .

Genel özellikler

mAppData
void *
Çıkarılan öğeyi işleyen geri arama ile kullanılacak isteğe bağlı, kullanıcı tarafından sağlanan 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 arama.

Kamu işlevleri

AvailableDataLength (void) const
size_t
DataLength (void) const
size_t
EvictHead (void)
En eski üst düzey evicts TLV içinde eleman WeaveCircularTLVBuffer .
FinalizeBuffer (TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer ayarlamak WeaveCircularTLVBuffer çıktı tamamlanması durumuTLVWriter .
GetNewBuffer (TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
İçin ek alana sahip olunTLVWriter .
GetNextBuffer (TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
İçin ek alana sahip olunTLVReader .
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

Genel 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)
Bir trambolin için daha fazla alan getirilemediTLVWriter .
GetNextBufferFunct (TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)

Genel türler

SüreçEvictedElementFunct

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

Bir işlem olarak adlandırılır bir fonksiyon TLV önce buna eleman tahliye edilen nl :: Örgü :: TLV :: WeaveCircularTLVBuffer .

Bu tür işlevler bir işlemek için kullanılan TLV tamponu tahliye edilmek üzere elemanı. Fonksiyon verilecek birnl :: Dokuma :: TLV :: TLVReader kullanıcı geri arama için ek bir ortam sağlamış olabilir silinmek üzere eleman, hem de boş * bağlamda üzerinde konumlandırılmış. İşlevi başarıyla elemanı işlenmiş ise, geri dönmelidir WEAVE_NO_ERROR ; Bu anlamına hangi WeaveCircularTLVBuffer elemanı güvenle tahliye edilebilir. Başka bir dönüş değeri bir hata olarak kabul edilir ve engeller WeaveCircularTLVBuffer söz konusu eleman tahliye den.

Not: Bu, geri arama zorlamak için kullanılabilir WeaveCircularTLVBuffer olmayan evict elemana. Bu, bir dizi durumda, temel bir dairesel arabelleğe sahip olmak istendiğinde, ancak içindeki herhangi bir öğeyi geçersiz kılmamak istendiğinde yararlı olabilir.

Ayrıntılar
parametreler
[in] inBuffer
Tahliye işleminin gerçekleştiği arabelleğe bir referans
[in] inAppData
Bu geri arama için ek bağlam içeren, kullanıcı tarafından sağlanan yapıya yönelik bir işaretçi
[in] inReader
BirTLVReader tahliye edilecek cismin konumlandırılmıştır.
Dönüş Değerleri
WEAVE_NO_ERROR
Başarı üzerine. Eleman tahliye edilecektir.
other
Olay işleme sırasında bir hata oluştu. Öğe arabellekte kalır. Bu öğe tahliyesini tetikleyen yazma işlevi başarısız olur.

Genel özellikler

mAppData

void * mAppData

Çıkarılan öğeyi işleyen geri arama ile kullanılacak isteğe bağlı, kullanıcı tarafından sağlanan 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 arama.

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

Kamu işlevleri

KullanılabilirVeriUzunluğu

size_t AvailableDataLength(
  void
) const 

Veri Uzunluğu

size_t DataLength(
  void
) const 

EvicKafa

WEAVE_ERROR EvictHead(
  void
)

En eski üst düzey evicts TLV içinde eleman WeaveCircularTLVBuffer .

Bu fonksiyon, eski üst düzey kaldırır TLV tamponu elemanı. Fonksiyon kayıtlı geri arama arayacak mProcessEvictedElement kaldırmadan önceki eleman işlemek için. Geri arama şey ama dönerse WEAVE_NO_ERROR , eleman kaldırılmaz. Başka bir hata tamponu içinde herhangi bir elemanları meydana Benzer şekilde, eğer, vb temel WeaveCircularTLVBuffer değişmeden kalır.

Ayrıntılar
Dönüş Değerleri
WEAVE_NO_ERROR
Başarı üzerine.
other
Başka hata callback'inde olmayan hem döndürülenTLVReader .

FinalizeBuffer

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

FinalizeBuffer ayarlamak WeaveCircularTLVBuffer çıktı tamamlanması durumuTLVWriter .

Bu işlev kuyruk kuyruğunun konumunu etkiler.

Ayrıntılar
parametreler
[in,out] ioWriter
TLVWriter bu işlevi çağırarak
[in] inBufStart
verilerin başlangıç işaretçi (den TLVWriter açısından)
[in] inBufLen
tampon içinde verinin uzunluğu ile gösterilen inbufStart
Dönüş Değerleri
WEAVE_NO_ERROR
Koşulsuz olarak.

GetNewBuffer

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

İçin ek alana sahip olunTLVWriter .

Gerçekte, fonksiyon dairesel tampondan bir eleman çıkarır ve bu tampon kuyruğunun başını ayarlar.

Ayrıntılar
parametreler
[in,out] ioWriter
TLVWriter bu işlevi çağırarak
[out] outBufStart
Yeni arabelleğe işaretçi
[out] outBufLen
Yazmak için mevcut uzunluk
Dönüş Değerleri
WEAVE_NO_ERROR
Başarı üzerine.
other
Fonksiyon tam bir üst düzey elide edemedi ise TLV elemanı.

GetNextBuffer

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

İçin ek alana sahip olunTLVReader .

Tarafından sağlanan depolama WeaveCircularTLVBuffer tamponu içinde bölgesini saran edilebilir. Bu fonksiyon, dairesel tamponu tamponlama eşleştirmek için bir yeteneği ile bize içerirTLVReader kısıtlamaları. Okuyucu en okuyacak mQueueSize tampon bayt.

Ayrıntılar
parametreler
[in] ioReader
TLVReader bu işlevi çağırarak.
[in,out] outBufStart
Veri arabelleğine başvuru. Dönüşte, bu arabellek içinde bir değere ayarlanır.
[out] outBufLen
Dönüşte, arabellekten okunabilecek sürekli bayt sayısını ayarlayın.
Dönüş Değerleri
WEAVE_NO_ERROR
Koşulsuz başarır.

GetQueue

uint8_t * GetQueue(
  void
) const 

GetQueueSize

size_t GetQueueSize(
  void
) const 

Kuyruk Kafası

uint8_t * QueueHead(
  void
) const 

Kuyruk Kuyruk

uint8_t * QueueTail(
  void
) const 

SetQueueHead

void SetQueueHead(
  uint8_t *aQueueHead
)

SetKuyrukUzunluğu

void SetQueueLength(
  size_t aQueueLength
)

WeaveDaireselTLVBffer

 WeaveCircularTLVBuffer(
  uint8_t *inBuffer,
  size_t inBufferLength
)

WeaveCircularTLVBuffer yapıcısı.

Ayrıntılar
parametreler
[in] inBuffer
Kuyruk için destek deposuna bir işaretçi
[in] inBufferLength
Destek deposunun bayt cinsinden uzunluğu

DokumaDaireselTLVBfer

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

WeaveCircularTLVBuffer yapıcısı.

Ayrıntılar
parametreler
[in] inBuffer
Kuyruk için destek deposuna bir işaretçi
[in] inBufferLength
Destek deposunun bayt cinsinden uzunluğu
[in] inHead
Baş için başlangıç ​​noktası. İnHead işaretçi inBuffer ve ve içindeki, yani dairesel bir tamponu için yedekleme mağaza içinde olmalıdır olan (inBuffer [inBufferLength])

Genel statik işlevler

FinalizeBufferFunct

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

A trambolin WeaveCircularTLVBuffer :: FinalizeBuffer .

Ayrıntılar
parametreler
[in,out] ioWriter
TLVWriter bu işlevi çağırarak
[in,out] inBufHandle
Bir sap CircularTLVWriter nesne
[in] inBufStart
verilerin başlangıç işaretçi (den TLVWriter açısından)
[in] inBufLen
tampon içinde verinin uzunluğu ile gösterilen inbufStart
Dönüş Değerleri
WEAVE_NO_ERROR
Koşulsuz olarak.

GetNewBufferFunct

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

Bir trambolin için daha fazla alan getirilemediTLVWriter .

Ayrıntılar
parametreler
[in,out] ioWriter
TLVWriter bu işlevi çağırarak
[in,out] inBufHandle
Bir sap CircularTLVWriter nesne
[out] outBufStart
Yeni arabelleğe işaretçi
[out] outBufLen
Yazmak için mevcut uzunluk
Dönüş Değerleri
WEAVE_NO_ERROR
Başarı üzerine.
other
Fonksiyon tam bir üst düzey elide edemedi ise TLV elemanı.

GetNextBufferFunct

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

A trambolin WeaveCircularTLVBuffer :: GetNextBuffer .

Ayrıntılar
parametreler
[in,out] ioReader
TLVReader bu işlevi çağırarak
[in,out] inBufHandle
Bir sap CircularTLVWriter nesne
[in,out] outBufStart
Veri arabelleğine başvuru. Dönüşte, bu arabellek içinde bir değere ayarlanır.
[out] outBufLen
Dönüşte, arabellekten okunabilecek sürekli bayt sayısını ayarlayın.
Dönüş Değerleri
WEAVE_NO_ERROR
Koşulsuz başarır.