Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

nl::매트::TLV::WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffernl::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가 요소를 제거하지 않도록 하는 데 사용할 수 있습니다. 이는 기본 원형 버퍼를 보유하기를 원하지만 그 내부에 있는 요소를 재정의하고 싶지 않은 여러 상황에서 유용할 수 있습니다.

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

공개 속성

모바일 앱 데이터

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_NO_ERROR
성공 시
other
콜백 또는 TLVReader에서 반환한 기타 오류

완료 버퍼

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 

대기열 헤드

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 생성자:

세부정보
매개변수
[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]) 내에 있어야 합니다.

공개 정적 함수

완료 버퍼 기능

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
무조건 성공