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(*)
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가 요소를 제거하지 않도록 강제하는 데 사용할 수 있습니다. 이는 기본 순환 버퍼를 보유하지만 내부의 요소를 재정의하지 않으려는 경우 여러 상황에서 유용할 수 있습니다.

세부정보
매개변수
[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
무조건 성공합니다.