nl:: Weave:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer는 nl::Weave::TLV::TLVWriter 및 nl::Weave::TLVTLVReader의 원형 스토리지를 제공합니다.
요약
nl::Weave::TLV::TLVWriter는 각 개별 TLV 항목이 제공된 저장소 내에 완전히 맞는 경우 WeaveCircularTLVBuffer에 무제한의 TLV 항목을 작성할 수 있습니다. nl::Weave::TLV::TLVReader는 버퍼의 크기를 최대 크기로 읽지만 버퍼 내의 랩어라운드를 수용합니다.
생성자 및 소멸자 |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
WeaveCircularTLVBuffer 생성자에 전달됩니다.
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
WeaveCircularTLVBuffer 생성자에 전달됩니다.
|
공개 유형 |
|
---|---|
ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
|
WEAVE_ERROR(*) nl::Weave::TLV::WeaveCircularTLVBuffer에서 제거되기 전에 TLV 요소를 처리하기 위해 호출되는 함수입니다. |
공개 속성 |
|
---|---|
mAppData
|
void *
제거된 요소를 처리하는 콜백과 함께 사용할, 사용자가 제공한 선택적 컨텍스트입니다.
|
mImplicitProfileId
|
uint32_t
|
mProcessEvictedElement
|
순환 버퍼에서 요소를 제거하기 전에 요소를 처리하는 선택적 사용자 제공 콜백입니다.
|
공개 함수 |
|
---|---|
AvailableDataLength(void) const
|
size_t
|
DataLength(void) const
|
size_t
|
EvictHead(void)
|
WeaveCircularTLVBuffer에서 가장 오래된 최상위 TLV 요소를 제거합니다.
|
FinalizeBuffer(TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
|
FinalizeBuffer는 TLVWriter의 출력 완료 시
WeaveCircularTLVBuffer 상태를 조정합니다. |
GetNewBuffer(TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen)
|
TLVWriter를 위한 추가 공간을 가져옵니다.
|
GetNextBuffer(TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
TLVReader를 위한 추가 공간을 가져옵니다.
|
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
|
공개 정적 함수 |
|
---|---|
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의 추가 공간을 가져오는 트램펄린입니다.
|
GetNextBufferFunct(TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen)
|
공개 유형
ProcessEvictedElementFunct
WEAVE_ERROR(* ProcessEvictedElementFunct)(WeaveCircularTLVBuffer &inBuffer, void *inAppData, TLVReader &inReader)
nl::Weave::TLV::WeaveCircularTLVBuffer에서 제거되기 전에 TLV 요소를 처리하기 위해 호출되는 함수입니다.
이 유형의 함수는 버퍼에서 축출되려는 TLV 요소를 처리하는 데 사용됩니다. 이 함수에는 삭제할 요소에 배치된 nl::Weave::TLV::TLVReader가 제공되며, 사용자가 콜백에 추가 환경을 제공했을 수 있는 void * 컨텍스트도 제공됩니다. 함수가 요소를 성공적으로 처리하면 WEAVE_NO_ERROR를 반환해야 합니다. 이는 요소가 안전하게 제거될 수 있음을 WeaveCircularTLVBuffer에 나타냅니다. 다른 반환 값은 모두 오류로 취급되며 WeaveCircularTLVBuffer가 고려 중인 요소를 제거하지 못하게 합니다.
참고: 이 콜백은 WeaveCircularTLVBuffer가 요소를 제거하지 않도록 강제하는 데 사용할 수 있습니다. 이는 기본 순환 버퍼를 보유하지만 내부의 요소를 재정의하지 않으려는 경우 여러 상황에서 유용할 수 있습니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
공개 속성
mAppData
void * mAppData
제거된 요소를 처리하는 콜백과 함께 사용할, 사용자가 제공한 선택적 컨텍스트입니다.
mImplicitProfileId
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
순환 버퍼에서 요소를 제거하기 전에 요소를 처리하는 선택적 사용자 제공 콜백입니다.
mProcessEvictedElement 함수 구현에 대한 자세한 내용은 ProcessEvictedElementFunct 유형 정의를 참조하세요.
공개 함수
AvailableDataLength
size_t AvailableDataLength( void ) const
DataLength
size_t DataLength( void ) const
EvictHead
WEAVE_ERROR EvictHead( void )
WeaveCircularTLVBuffer에서 가장 오래된 최상위 TLV 요소를 제거합니다.
이 함수는 버퍼에서 가장 오래된 최상위 TLV 요소를 삭제합니다. 이 함수는 mProcessEvictedElement에 등록된 콜백을 호출하여 제거 전에 요소를 처리합니다. 콜백이 WEAVE_NO_ERROR 이외의 값을 반환하는 경우 요소는 삭제되지 않습니다. 마찬가지로 다른 오류가 발생하면 버퍼 내에 요소가 없으면 기본 WeaveCircularTLVBuffer는 변경되지 않습니다.
세부정보 | |||||
---|---|---|---|---|---|
반환 값 |
|
FinalizeBuffer
WEAVE_ERROR FinalizeBuffer( TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen )
FinalizeBuffer는 TLVWriter의 출력 완료 시 WeaveCircularTLVBuffer
상태를 조정합니다.
이 함수는 큐 꼬리의 위치에 영향을 미칩니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
GetNewBuffer
WEAVE_ERROR GetNewBuffer( TLVWriter & ioWriter, uint8_t *& outBufStart, uint32_t & outBufLen )
GetNextBuffer
WEAVE_ERROR GetNextBuffer( TLVReader & ioReader, const uint8_t *& outBufStart, uint32_t & outBufLen )
TLVReader를 위한 추가 공간을 가져옵니다.
WeaveCircularTLVBuffer에서 제공하는 저장소는 버퍼 내에서 랩어라운드일 수 있습니다. 이 함수는 순환 버퍼의 버퍼링을 TLVReader 제약 조건에 일치시키는 기능을 제공합니다. 판독기는 버퍼에서 최대 mQueueSize
바이트를 읽습니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
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 생성자에 전달됩니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
WeaveCircularTLVBuffer 생성자에 전달됩니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
공개 정적 함수
FinalizeBufferFunct
WEAVE_ERROR FinalizeBufferFunct( TLVWriter & ioWriter, uintptr_t inBufHandle, uint8_t *inBufStart, uint32_t inBufLen )
WeaveCircularTLVBuffer::FinalizeBuffer에 대한 트램펄린
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
GetNewBufferFunct
WEAVE_ERROR GetNewBufferFunct( TLVWriter & ioWriter, uintptr_t & inBufHandle, uint8_t *& outBufStart, uint32_t & outBufLen )
TLVWriter의 추가 공간을 가져오는 트램펄린입니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
GetNextBufferFunct
WEAVE_ERROR GetNextBufferFunct( TLVReader & ioReader, uintptr_t & inBufHandle, const uint8_t *& outBufStart, uint32_t & outBufLen )
WeaveCircularTLVBuffer::GetNextBuffer의 트램펄린
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|