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

nl :: 짜다:: TLV :: WeaveCircularTLVBuffer

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

WeaveCircularTLVBuffer는 용 원형 저장소 제공NL :: 직조 : TLV : TLVWriter 및 NL :: 직조 :: TLVTLVReader한다.

요약

NL :: 위브 :: TLV :: TLVWriter가 의 억제 할 수 쓸 수 TLV를 받는 항목 WeaveCircularTLVBuffer을 한 각 개별로 TLV의 전체 제공된 스토리지 내에서 항목 적합.NL :: 위브 :: 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 :: 직조 : TLV : WeaveCircularTLVBuffer .

공용 속성

mAppData
void *
제거 된 요소를 처리하는 콜백과 함께 사용할 선택적 사용자 제공 컨텍스트입니다.
mImplicitProfileId
uint32_t
mProcessEvictedElement
순환 버퍼에서 요소를 제거하기 전에 요소를 처리하는 선택적 사용자 제공 콜백입니다.

공공 기능

AvailableDataLength (void) const
size_t
DataLength (void) const
size_t
EvictHead (void)
가장 오래된 최고 수준의 퇴거 TLV의 의 요소 WeaveCircularTLVBuffer을 .
FinalizeBuffer (TLVWriter & ioWriter, uint8_t *inBufStart, uint32_t inBufLen)
FinalizeBuffer는 조정 WeaveCircularTLVBuffer 로부터의 출력의 완료에 상태TLVWriter .
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 :: 직조 : TLV : WeaveCircularTLVBuffer .

이러한 유형의 기능은 처리에 사용되는 TLV의 버퍼에서 제거 될 약 소자. 함수는 주어진 될NL :: 위브 : TLV : TLVReader 사용자가 콜백 추가적인 환경을 제공하고있다 삭제하려고 소자뿐만 아니라 무효 * 컨텍스트에 위치. 함수가 성공적으로 요소를 처리하는 경우, 그것은 반환해야 WEAVE_NO_ERROR을 ; 받는 사람이 의미 WeaveCircularTLVBuffer 요소가 안전하게 퇴거 할 수있다. 다른 리턴 값은 에러로 처리하고, 방지 할 WeaveCircularTLVBuffer을 고려 요소를 퇴거.

참고 :이 콜백은 강제로 사용할 수 있습니다 WeaveCircularTLVBuffer을 하지 EVICT 요소에. 이는 기본 순환 버퍼를 갖고 싶지만 그 안에있는 요소를 재정의하지 않는 것이 필요한 여러 상황에서 유용 할 수 있습니다.

세부
매개 변수
[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
)

가장 오래된 최고 수준의 퇴거 TLV의 의 요소 WeaveCircularTLVBuffer을 .

이 함수는 오래된 최상위 제거 TLV의 버퍼 소자. 이 기능은 등록 된 콜백을 호출한다 mProcessEvictedElement 제거 전의 요소를 처리한다. 콜백은 아무것도하지만 반환하는 경우 WEAVE_NO_ERROR를 , 요소가 제거되지 않습니다. 다른 오류가 버퍼 내에 요소가 발생하지 않으면 마찬가지로 등 기본 WeaveCircularTLVBuffer는 변하지 않는다.

세부
반환 값
WEAVE_NO_ERROR
성공에.
other
다른 오류에 콜백 나에 의해 중 반환TLVReader .

FinalizeBuffer

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

FinalizeBuffer는 조정 WeaveCircularTLVBuffer 로부터의 출력의 완료에 상태TLVWriter .

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

세부
매개 변수
[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
)

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
무조건 성공합니다.