nl::Weave::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffernl::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(*
TLV 요소가 nl::Weave::TLV::WeaveCircularTLVBuffer에서 제거되기 전에 이 요소를 처리하기 위해 호출되는 함수입니다.

공개 속성

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)
WeaveCircularTLVBuffer::FinalizeBuffer의 트램펄린입니다.
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)
WeaveCircularTLVBuffer::GetNextBuffer의 트램펄린입니다.

공개 유형

ProcessEvictedElementFunct

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

TLV 요소가 nl::Weave::TLV::WeaveCircularTLVBuffer에서 제거되기 전에 이 요소를 처리하기 위해 호출되는 함수입니다.

이 유형의 함수는 버퍼에서 제거하려는 TLV 요소를 처리하는 데 사용됩니다. 이 함수에는 삭제할 요소에 배치된 nl::Weave::TLV::TLVReader와 사용자가 콜백을 위한 추가 환경을 제공했을 수 있는 void * 컨텍스트가 제공됩니다. 함수가 요소를 성공적으로 처리한 경우 WEAVE_NO_ERROR를 반환해야 합니다. 이는 WeaveCircularTLVBuffer에 요소가 안전하게 제거될 수 있음을 나타냅니다. 다른 반환 값은 오류로 취급되며 WeaveCircularTLVBuffer가 고려 중인 요소를 제거하는 것을 방지합니다.

참고: 이 콜백은 WeaveCircularTLVBuffer가 요소를 제거하지 않도록 강제하는 데 사용할 수 있습니다. 이는 기본 순환 버퍼가 필요하지만 그 내부의 요소를 재정의하지 않는 것이 필요한 여러 상황에서 유용할 수 있습니다.

세부정보
매개변수
[in] inBuffer
제거가 발생하는 버퍼에 대한 참조
[in] inAppData
이 콜백의 추가 컨텍스트를 포함하는 사용자 제공 구조에 대한 포인터
[in] inReader
제거할 요소에 배치된 TLVReader.
반환 값
WEAVE_NO_ERROR
성공 시 요소가 제거됩니다.
other
이벤트를 처리하는 중에 오류가 발생했습니다. 요소가 버퍼에 남아 있습니다. 이 요소 제거를 트리거한 쓰기 함수가 실패합니다.

공개 속성

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는 변경되지 않습니다.

세부정보
반환 값
WEAVE_NO_ERROR
성공 시
other
콜백 또는 TLVReader에서 반환하는 기타 오류

FinalizeBuffer

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

FinalizeBuffer는 TLVWriter의 출력이 완료될 때 WeaveCircularTLVBuffer 상태를 조정합니다.

이 함수는 큐 꼬리의 위치에 영향을 줍니다.

세부정보
매개변수
[in,out] ioWriter
이 함수를 호출하는 TLVWriter
[in] inBufStart
데이터의 시작을 가리키는 포인터 (TLVWriter 시점)
[in] inBufLen
inbufStart가 가리키는 버퍼의 데이터 길이
반환 값
WEAVE_NO_ERROR
무조건.

GetNewBuffer

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

TLVWriter를 위한 추가 공간을 확보합니다.

실제로는 이 함수는 원형 버퍼에서 요소를 제거하고 이 버퍼 큐의 헤드를 조정합니다.

세부정보
매개변수
[in,out] ioWriter
이 함수를 호출하는 TLVWriter
[out] outBufStart
새 버퍼를 가리키는 포인터
[out] outBufLen
쓰기에 사용할 수 있는 길이
반환 값
WEAVE_NO_ERROR
성공 시
other
함수가 완전한 최상위 TLV 요소를 제거할 수 없는 경우

GetNextBuffer

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

TLVReader를 위한 추가 공간을 확보합니다.

WeaveCircularTLVBuffer에서 제공되는 저장소는 버퍼 내에서 래핑될 수 있습니다. 이 함수를 통해 순환 버퍼의 버퍼링을 TLVReader 제약 조건에 일치시킬 수 있습니다. 판독기는 버퍼에서 최대 mQueueSize바이트를 읽습니다.

세부정보
매개변수
[in] ioReader
TLVReader를 사용하여 이 함수를 호출할 수 있습니다.
[in,out] outBufStart
데이터 버퍼에 대한 참조입니다. 반환 시 이 버퍼 내의 값으로 설정됩니다.
[out] outBufLen
반환 시 버퍼에서 읽을 수 있는 연속 바이트 수로 설정합니다.
반환 값
WEAVE_NO_ERROR
조건 없이 성공합니다.

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 생성자를 사용합니다.

세부정보
매개변수
[in] inBuffer
큐의 백업 저장소를 가리키는 포인터
[in] inBufferLength
지원 저장소의 길이(바이트)

WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer 생성자를 사용합니다.

세부정보
매개변수
[in] inBuffer
큐의 백업 저장소를 가리키는 포인터
[in] inBufferLength
지원 저장소의 길이(바이트)
[in] inHead
헤드의 시작 지점입니다. inHead 포인터는 순환 버퍼의 지원 저장소, 즉 inBuffer 및 &(inBuffer[inBufferLength]) 내에 속해야 합니다.

공개 정적 함수

FinalizeBufferFunct

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

WeaveCircularTLVBuffer::FinalizeBuffer의 트램펄린입니다.

세부정보
매개변수
[in,out] ioWriter
이 함수를 호출하는 TLVWriter
[in,out] inBufHandle
CircularTLVWriter 객체의 핸들
[in] inBufStart
데이터의 시작을 가리키는 포인터 (TLVWriter 시점)
[in] inBufLen
inbufStart가 가리키는 버퍼의 데이터 길이
반환 값
WEAVE_NO_ERROR
무조건.

GetNewBufferFunct

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

TLVWriter를 위한 공간을 더 가져오는 트램펄린입니다.

세부정보
매개변수
[in,out] ioWriter
이 함수를 호출하는 TLVWriter
[in,out] inBufHandle
CircularTLVWriter 객체의 핸들
[out] outBufStart
새 버퍼를 가리키는 포인터
[out] outBufLen
쓰기에 사용할 수 있는 길이
반환 값
WEAVE_NO_ERROR
성공 시
other
함수가 완전한 최상위 TLV 요소를 제거할 수 없는 경우

GetNextBufferFunct

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

WeaveCircularTLVBuffer::GetNextBuffer의 트램펄린입니다.

세부정보
매개변수
[in,out] ioReader
이 함수를 호출하는 TLVReader
[in,out] inBufHandle
CircularTLVWriter 객체의 핸들
[in,out] outBufStart
데이터 버퍼에 대한 참조입니다. 반환 시 이 버퍼 내의 값으로 설정됩니다.
[out] outBufLen
반환 시 버퍼에서 읽을 수 있는 연속 바이트 수로 설정합니다.
반환 값
WEAVE_NO_ERROR
조건 없이 성공합니다.