nl:: 매트:: TLV:: WeaveCircularTLVBuffer
#include <src/lib/core/WeaveCircularTLVBuffer.h>
WeaveCircularTLVBuffer는 nl::Weave::TLV::TLVWriter와 nl::Weave::TLVTLVReader를 위한 원형 저장소를 제공합니다.
요약
nl::Weave::TLV::TLVWriter는 각 개별 TLV 항목이 제공된 스토리지 내에 완전히 맞다면 TaveCircularTLVBuffer에 제한 없는 수의 TLV 항목을 쓸 수 있습니다. nl::Weave::TLV::TLVReader는 버퍼의 대부분 크기를 읽지만 버퍼 내의 랩어라운드를 수용합니다.
생성자 및 소멸자 |
|
---|---|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength)
|
|
WeaveCircularTLVBuffer(uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead)
|
공개 유형 |
|
---|---|
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:가 제공되며 사용자가 콜백에 대한 추가 환경을 제공했을 수 있는 void * 컨텍스트도 제공됩니다. 함수가 요소를 성공적으로 처리하면 WEAVE_NO_ERROR를 반환해야 합니다. 이는 요소가 안전하게 제거될 수 있음을 WeaveCircularTLVBuffer에 나타냅니다. 다른 모든 반환 값은 오류로 처리되며 WeaveCircularTLVBuffer는 고려 중인 요소를 제거하지 못하게 합니다.
참고: 이 콜백은 WeaveCircularTLVBuffer가 요소를 제거하지 않도록 하는 데 사용할 수 있습니다. 이는 기본 원형 버퍼를 보유하기를 원하지만 그 내부에 있는 요소를 재정의하고 싶지 않은 여러 상황에서 유용할 수 있습니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
공개 속성
모바일 앱 데이터
void * mAppData
제거된 요소를 처리하는 콜백과 함께 사용할 사용자 제공 컨텍스트입니다(선택사항).
암시적 프로필 ID
uint32_t mImplicitProfileId
mProcessEvictedElement
ProcessEvictedElementFunct mProcessEvictedElement
순환 버퍼에서 요소를 제거하기 전에 요소를 처리하는 사용자 제공 콜백입니다(선택사항).
mProcessEvictedElement 함수를 구현하는 방법에 대한 자세한 내용은 ProcessEvictedElementFunct 유형 정의를 참조하세요.
공개 함수
사용 가능한 데이터 길이
size_t AvailableDataLength( void ) const
데이터 길이
size_t DataLength( void ) const
제거
WEAVE_ERROR EvictHead( void )
WeaveCircularTLVBuffer에서 가장 오래된 최상위 TLV 요소를 제거합니다.
이 함수는 버퍼에서 가장 오래된 최상위 TLV 요소를 삭제합니다. 이 함수는 mProcessEvictedElement에 등록된 콜백을 호출하여 삭제 전에 요소를 처리합니다. 콜백이 WEAVE_NO_ERROR 이외의 항목을 반환하면 요소가 삭제되지 않습니다. 마찬가지로 버퍼 내에서 다른 오류가 발생하면 기본 WeaveCircularTLVBuffer는 변경되지 않습니다.
세부정보 | |||||
---|---|---|---|---|---|
반환 값 |
|
완료 버퍼
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
대기열 헤드
uint8_t * QueueHead( void ) const
큐 테일
uint8_t * QueueTail( void ) const
SetQueueHead
void SetQueueHead( uint8_t *aQueueHead )
세트 큐 길이
void SetQueueLength( size_t aQueueLength )
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength )
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
WeaveCircularTLVBuffer
WeaveCircularTLVBuffer( uint8_t *inBuffer, size_t inBufferLength, uint8_t *inHead )
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
공개 정적 함수
완료 버퍼 기능
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에 대한 트램펄린
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|