nl::Weave::TLV::TLVReader

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

Weave TLV 형식으로 인코딩된 데이터에 메모리 효율적인 파서를 제공합니다.

요약

TLVReader는 Weave TLV 데이터를 위한 정방향 전용 '풀 스타일' 파서를 구현합니다. TLVReader 객체는 TLV 요소의 시퀀스를 반복하고 콘텐츠를 해석하는 데 사용할 수 있는 커서로 작동합니다. 요소에 배치되면 애플리케이션은 판독기의 Get() 메서드를 호출하여 현재 요소의 유형과 태그를 쿼리하고 연결된 값을 추출할 수 있습니다. 판독기의 Next() 메서드는 요소에서 요소로 이동하는 데 사용됩니다.

TLVReader 객체는 항상 TLV 요소의 앞, 뒤 또는 뒤에 배치됩니다. 처음 초기화되면 TLVReader가 인코딩의 첫 번째 요소 바로 앞에 배치됩니다. 읽기를 시작하려면 애플리케이션에서 Next() 메서드를 처음 호출하여 첫 번째 요소에 리더를 배치해야 합니다. 컨테이너 요소가 구조, 배열 또는 경로와 일치하는 경우 OpenContainer() 또는 EnterContainer() 메서드로 컨테이너의 콘텐츠를 반복할 수 있습니다.

판독기가 TLV 인코딩의 끝부분 또는 컨테이너 내의 마지막 요소에 도달하면 Next() 메서드에서 WEAVE_END_OF_TLV 오류를 반환하여 애플리케이션에 신호를 보냅니다. 판독기는 CloseContainer() / ExitContainer()를 통해 다시 초기화되거나 현재 컨테이너가 종료될 때까지 WEAVE_END_OF_TLV를 계속 반환합니다.

TLVReader 객체는 고정 입력 버퍼 또는 하나 이상의 PacketBuffer 체인에서 직접 데이터를 파싱할 수 있습니다. 또한 애플리케이션은 GetNextBuffer 함수를 제공하여 임의의 소스에서 리더에 데이터를 제공할 수 있습니다(예: 소켓 또는 직렬 포트가 있습니다.

상속

직접 알려진 서브클래스: <ph type="x-smartling-placeholder">
</ph>   nl::Weave::Profiles::DataManagement_Current::CircularEventReader <ph type="x-smartling-placeholder">
</ph>   nl::Weave::TLV::CircularTLVReader

공개 유형

GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*)
파싱할 추가 TLV 데이터를 검색하는 데 사용할 수 있는 함수입니다.

공개 속성

AppData
void *
애플리케이션별 데이터에 사용할 수 있는 포인터 필드입니다.
GetNextBuffer
TLVReader 객체의 입력 데이터를 생성하는 함수에 대한 포인터입니다.
ImplicitProfileId
uint32_t
암시적 형식으로 인코딩된 프로필 태그에 사용될 프로필 ID입니다.

보호된 속성

mBufEnd
const uint8_t *
mBufHandle
uintptr_t
mContainerType
mControlByte
uint16_t
mElemLenOrVal
uint64_t
mElemTag
uint64_t
mLenRead
uint32_t
mMaxLen
uint32_t
mReadPoint
const uint8_t *

공개 함수

CloseContainer(TLVReader & containerReader)
OpenContainer()를 호출한 후 TLV 컨테이너 읽기를 완료합니다.
DupBytes(uint8_t *& buf, uint32_t & dataLen)
현재 바이트 또는 UTF8 문자열의 값이 포함된 버퍼를 할당하고 반환합니다.
DupString(char *& buf)
현재 바이트나 UTF8 문자열의 null 종료 값이 포함된 버퍼를 할당하고 반환합니다.
EnterContainer(TLVType & outerContainerType)
TLV 컨테이너 요소의 구성원을 읽기 위한 TLVReader 객체를 준비합니다.
ExitContainer(TLVType outerContainerType)
TLV 컨테이너 읽기를 완료하고 TLVReader 객체가 컨테이너 다음에 오는 요소를 읽을 수 있도록 준비합니다.
Get(bool & v)
현재 요소의 값을 부울 유형으로 가져옵니다.
Get(int8_t & v)
현재 요소의 값을 부호 있는 8비트 정수로 가져옵니다.
Get(int16_t & v)
현재 요소의 값을 부호 있는 16비트 정수로 가져옵니다.
Get(int32_t & v)
현재 요소의 값을 부호 있는 32비트 정수로 가져옵니다.
Get(int64_t & v)
현재 요소의 값을 부호 있는 64비트 정수로 가져옵니다.
Get(uint8_t & v)
현재 요소의 값을 부호 없는 8비트 정수로 가져옵니다.
Get(uint16_t & v)
현재 요소의 값을 부호 없는 16비트 정수로 가져옵니다.
Get(uint32_t & v)
현재 요소의 값을 부호 없는 32비트 정수로 가져옵니다.
Get(uint64_t & v)
현재 요소의 값을 부호 없는 64비트 정수로 가져옵니다.
Get(float & v)
Get(double & v)
현재 요소의 값을 배정밀도 부동 소수점 숫자로 가져옵니다.
GetBufHandle(void) const
uintptr_t
GetBytes(uint8_t *buf, uint32_t bufSize)
현재 바이트 또는 UTF8 문자열 요소의 값을 가져옵니다.
GetContainerType(void) const
TLVReader가 현재 읽고 있는 컨테이너의 유형을 반환합니다.
GetControlByte(void) const
uint16_t
현재 TLV 요소와 연결된 제어 바이트를 반환합니다.
GetDataPtr(const uint8_t *& data)
TLV 바이트 또는 UTF8 문자열 요소의 초기 인코딩된 바이트를 가리키는 포인터를 가져옵니다.
GetLength(void) const
uint32_t
현재 TLV 요소와 연결된 데이터의 길이를 반환합니다.
GetLengthRead(void) const
uint32_t
판독기가 초기화된 이후 읽은 총 바이트 수를 반환합니다.
GetReadPoint(void) const
const uint8_t *
기본 입력 버퍼에서 리더의 현재 위치에 해당하는 지점을 가져옵니다.
GetRemainingLength(void) const
uint32_t
최대 읽기 길이에 도달할 때까지 읽을 수 있는 총 바이트 수를 반환합니다.
GetString(char *buf, uint32_t bufSize)
현재 바이트 또는 UTF8 문자열 요소의 값을 null로 끝나는 문자열로 가져옵니다.
GetTag(void) const
uint64_t
현재 TLV 요소와 연결된 태그를 반환합니다.
GetType(void) const
현재 TLV 요소의 유형을 반환합니다.
Init(const TLVReader & aReader)
void
다른 TLVReader 객체에서 TLVReader 객체를 초기화합니다.
Init(const uint8_t *data, uint32_t dataLen)
void
단일 입력 버퍼에서 읽도록 TLVReader 객체를 초기화합니다.
Init(PacketBuffer *buf, uint32_t maxLen)
void
단일 PacketBuffer에서 읽도록 TLVReader 객체를 초기화합니다.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
하나 이상의 PacketBuffer에서 읽도록 TLVReader 객체를 초기화합니다.
Next(void)
TLVReader 객체를 읽을 다음 TLV 요소로 이동합니다.
Next(TLVType expectedType, uint64_t expectedTag)
TLVReader 객체를 읽을 다음 TLV 요소로 이동하여 새 요소의 유형과 태그를 어설션합니다.
OpenContainer(TLVReader & containerReader)
TLV 컨테이너 요소의 멤버를 읽기 위한 새 TLVReader 객체를 초기화합니다.
Skip(void)
TLVReader 객체를 현재 TLV 요소 바로 뒤로 이동합니다.
VerifyEndOfContainer(void)
TVLReader 객체가 TLV 컨테이너의 끝에 있는지 확인합니다.

보호된 함수

ClearElementState(void)
void
TLVReader의 상태를 지웁니다.
ElementType(void) const
TLVElementType
이는 mControlByte에서 TLVElementType을 반환하는 비공개 메서드입니다.
EnsureData(WEAVE_ERROR noDataErr)
GetElementHeadLength(uint8_t & elemHeadBytes) const
TLV 요소 헤드의 길이를 계산하는 데 사용되는 비공개 메서드입니다.
IsContainerOpen(void) const
bool
ReadData(uint8_t *buf, uint32_t len)
ReadElement(void)
ReadTag(TLVTagControl tagControl, const uint8_t *& p)
uint64_t
SetContainerOpen(bool aContainerOpen)
void
SkipData(void)
현재 TLV에 포함된 데이터를 대상 버퍼 없이 읽어 건너뜁니다.
SkipToEndOfContainer(void)
VerifyElement(void)

보호되는 정적 함수

FailGetNextBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)
GetNextPacketBuffer(TLVReader & reader, uintptr_t & bufHandle, const uint8_t *& bufStart, uint32_t & bufLen)

공개 유형

GetNextBufferFunct

WEAVE_ERROR(* GetNextBufferFunct)(TLVReader &reader, uintptr_t &bufHandle, const uint8_t *&bufStart, uint32_t &bufLen)

파싱할 추가 TLV 데이터를 검색하는 데 사용할 수 있는 함수입니다.

이 유형의 함수는 입력 데이터를 TLVReader에 피드하는 데 사용됩니다. 이 함수를 호출하면 판독기가 더 이상 사용할 수 있는 데이터가 없다는 것을 독자에게 파싱하거나 알릴 수 있는 추가 데이터가 생성됩니다.

세부정보
매개변수
[in] reader
입력 데이터를 요청하는 TLVReader 객체에 대한 참조입니다.
[in,out] bufHandle
함수가 호출 간에 컨텍스트 데이터를 저장하는 데 사용할 수 있는 uintptr_t 값에 대한 참조입니다. 이 값은 첫 번째 호출 전에 0으로 초기화됩니다.
[in,out] bufStart
데이터 포인터 참조입니다. 함수에 들어올 때 bufStart는 리더가 소비한 마지막 TLV 데이터 바이트보다 1바이트를 가리킵니다. 종료 시 bufStart는 파싱할 새 TLV 데이터의 첫 번째 바이트를 가리켜야 합니다. 새 포인터 값은 이전에 사용된 데이터와 동일한 버퍼 내에 있거나 완전히 새로운 버퍼를 가리킬 수 있습니다.
[out] bufLen
함수가 반환되는 TLV 데이터 바이트 수로 설정해야 하는 부호 없는 정수에 대한 참조입니다. 입력 TLV 데이터의 끝에 도달한 경우 함수는 이 값을 0으로 설정해야 합니다.
반환 값
WEAVE_NO_ERROR
함수가 성공적으로 더 많은 TLV 데이터를 생성했거나 입력 데이터의 끝에 도달한 경우 (이 경우 bufLen를 0으로 설정해야 함)
other
함수가 요청된 데이터를 생성하지 못하게 하는 오류가 발생했음을 나타내는 기타 Weave 또는 플랫폼별 오류 코드입니다.

공개 속성

AppData

void * AppData

애플리케이션별 데이터에 사용할 수 있는 포인터 필드입니다.

GetNextBuffer

GetNextBufferFunct GetNextBuffer

TLVReader 객체의 입력 데이터를 생성하는 함수에 대한 포인터입니다.

NULL (기본값)으로 설정되면 리더는 사용 가능한 입력 데이터가 더 이상 없다고 가정합니다.

GetNextBuffer는 애플리케이션에서 언제든지 설정할 수 있지만 일반적으로 리더가 초기화될 때 설정됩니다.

GetNextBuffer 함수 구현에 관한 자세한 내용은 GetNextBufferFunct 유형 정의를 참고하세요.

ImplicitProfileId

uint32_t ImplicitProfileId

암시적 형식으로 인코딩된 프로필 태그에 사용될 프로필 ID입니다.

판독기는 암시적 형식으로 인코딩된 프로필별 태그를 발견하면 ImplicitProfileId 속성의 값을 태그의 가정된 프로필 ID로 사용합니다.

기본적으로 ImplicitProfileId 속성은 kProfileIdNotSpecified로 설정됩니다. 암시적으로 인코딩된 태그가 포함된 TLV를 디코딩할 때 애플리케이션은 이러한 태그가 있는 TLV 요소를 읽기 전에 ImplicitProfileId를 설정해야 합니다. 일반적으로 프로필 ID는 사용하는 애플리케이션이나 프로토콜의 컨텍스트에 따라 달라집니다.

ImplicitProfileId가 kProfileIdNotSpecified로 설정된 상태에서 암시적으로 인코딩된 태그가 발생하면 리더에서 WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG 오류를 반환합니다.

보호된 속성

mBufEnd

const uint8_t * mBufEnd

mBufHandle

uintptr_t mBufHandle

mContainerType

TLVType mContainerType

mControlByte

uint16_t mControlByte

mElemLenOrVal

uint64_t mElemLenOrVal

mElemTag

uint64_t mElemTag

mLenRead

uint32_t mLenRead

mMaxLen

uint32_t mMaxLen

mReadPoint

const uint8_t * mReadPoint

공개 함수

CloseContainer

WEAVE_ERROR CloseContainer(
  TLVReader & containerReader
)

OpenContainer()를 호출한 후 TLV 컨테이너 읽기를 완료합니다.

CloseContainer() 메서드는 OpenContainer()를 호출한 후 상위 TLVReader 객체의 상태를 복원합니다. OpenContainer() 애플리케이션을 호출할 때마다 해당하는 CloseContainer()를 호출하여 동일한 컨테이너 리더에 대한 참조를 두 메서드에 전달해야 합니다.

CloseContainer()가 반환되면 상위 리더는 컨테이너 뒤에 오는 첫 번째 요소 바로 앞에 배치됩니다. 이 시점부터 애플리케이션은 Next() 메서드를 사용하여 나머지 요소 간에 진행할 수 있습니다.

애플리케이션은 기본 컨테이너의 모든 요소를 읽었는지 여부에 관계없이 언제든지 상위 리더에서 닫기 CloseContainer()를 호출할 수 있습니다. CloseContainer()가 호출된 후 애플리케이션은 컨테이너 리더를 'de-initiald'로 간주해야 합니다. 다시 초기화하지 않고 더 이상 사용해서는 안 됩니다.

세부정보
매개변수
[in] containerReader
OpenContainer() 메서드에 제공된 TLVReader 객체에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_INCORRECT_STATE
판독기에서 OpenContainer()가 호출되지 않았거나 컨테이너 리더가 OpenContainer() 메서드에 전달된 컨테이너 리더와 일치하지 않는 경우
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_INVALID_TLV_ELEMENT
판독기에 잘못되었거나 지원되지 않는 TLV 요소 유형이 발생한 경우
WEAVE_ERROR_INVALID_TLV_TAG
리더가 잘못된 컨텍스트에서 TLV 태그를 발견한 경우
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

DupBytes

WEAVE_ERROR DupBytes(
  uint8_t *& buf,
  uint32_t & dataLen
)

현재 바이트 또는 UTF8 문자열의 값이 포함된 버퍼를 할당하고 반환합니다.

이 메서드는 현재 위치의 바이트 또는 UTF-8 문자열 요소와 연관된 데이터의 사본을 생성하고 그 사본을 반환합니다. 버퍼의 메모리는 malloc()을 사용하여 가져오며 더 이상 필요하지 않은 경우 호출자에 의해 free()로 해제되어야 합니다.

세부정보
매개변수
[out] buf
성공 시 dataLen바이트의 힙 할당 버퍼가 할당될 포인터에 대한 참조입니다.
[out] dataLen
성공 시 buf의 크기(바이트 단위)에 대한 스토리지 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 바이트 또는 UTF8 문자열이 아니거나 리더가 요소에 배치되지 않은 경우입니다.
WEAVE_ERROR_NO_MEMORY
출력 버퍼에 메모리를 할당할 수 없는 경우입니다.
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
타겟 플랫폼이 malloc() 및 free()를 지원하지 않는 경우.
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

DupString

WEAVE_ERROR DupString(
  char *& buf
)

현재 바이트나 UTF8 문자열의 null 종료 값이 포함된 버퍼를 할당하고 반환합니다.

이 메서드는 버퍼를 만들고 현재 위치에서 바이트 또는 UTF-8 문자열 요소와 연관된 데이터의 null로 종료된 사본을 반환합니다. 버퍼의 메모리는 malloc()을 사용하여 가져오며 더 이상 필요하지 않은 경우 호출자에 의해 free()로 해제되어야 합니다.

세부정보
매개변수
[out] buf
성공 시 힙 할당 버퍼가 할당될 포인터에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 바이트 또는 UTF8 문자열이 아니거나 리더가 요소에 배치되지 않은 경우입니다.
WEAVE_ERROR_NO_MEMORY
출력 버퍼에 메모리를 할당할 수 없는 경우입니다.
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_UNSUPPORTED_WEAVE_FEATURE
타겟 플랫폼이 malloc() 및 free()를 지원하지 않는 경우.
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

TLV 컨테이너 요소의 구성원을 읽기 위한 TLVReader 객체를 준비합니다.

EnterContainer() 메서드는 TLV 컨테이너의 구성원 요소 (구조, 배열 또는 경로)를 읽기 시작하도록 현재 TLVReader 객체를 준비합니다. 애플리케이션은 EnterContainer()를 호출할 때마다 이에 상응하는 ExitContainer()를 호출해야 합니다.

EnterContainer()가 호출되면 TLVReader 객체가 읽을 컨테이너 요소에 배치되어야 합니다. 이 메서드는 TLVType 값에 대한 참조를 인수로 사용합니다. 이 참조는 컨테이너를 읽는 동안 리더의 컨텍스트를 저장하는 데 사용됩니다.

EnterContainer() 메서드가 반환되면 판독기가 컨테이너의 첫 번째 구성원 앞에 배치됩니다. Next()를 반복적으로 호출하면 컬렉션 멤버를 통해 판독기가 끝에 도달할 때까지 계속 진행되며, 이때 판독기는 WEAVE_END_OF_TLV를 반환합니다.

애플리케이션이 컨테이너 읽기를 완료하면 ExitContainer() 메서드를 호출하여 컨테이너 이후에 요소 읽기를 계속할 수 있습니다.

세부정보
매개변수
[out] outerContainerType
리더의 컨텍스트를 수신할 TLVType 값에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_INCORRECT_STATE
현재 요소가 컨테이너 요소에 배치되지 않은 경우.

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

TLV 컨테이너 읽기를 완료하고 TLVReader 객체가 컨테이너 다음에 오는 요소를 읽을 수 있도록 준비합니다.

ExitContainer() 메서드는 EnterContainer()를 호출한 후 TLVReader 객체의 상태를 복원합니다. EnterContainer()를 호출할 때마다 애플리케이션에서 해당하는 ExitContainer()를 호출하여 EnterContainer() 메서드에서 반환된 컨텍스트 값을 전달해야 합니다.

ExitContainer()가 반환되면 판독기는 컨테이너 뒤에 오는 첫 번째 요소 바로 앞에 배치됩니다. 이 시점부터 애플리케이션은 Next() 메서드를 사용하여 나머지 요소 간에 진행할 수 있습니다.

EnterContainer()가 호출되면 애플리케이션은 기본 컨테이너의 모든 요소를 읽었는지 여부에 관계없이 언제든지 판독기에서 ExitContainer()를 호출할 수 있습니다.

세부정보
매개변수
[in] outerContainerType
EnterContainer() 메서드에 의해 반환된 TLVType 값입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_INCORRECT_STATE
판독기에서 OpenContainer()가 호출되지 않았거나 컨테이너 리더가 OpenContainer() 메서드에 전달된 컨테이너 리더와 일치하지 않는 경우
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_INVALID_TLV_ELEMENT
판독기에 잘못되었거나 지원되지 않는 TLV 요소 유형이 발생한 경우
WEAVE_ERROR_INVALID_TLV_TAG
리더가 잘못된 컨텍스트에서 TLV 태그를 발견한 경우
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

가져오기

WEAVE_ERROR Get(
  bool & v
)

현재 요소의 값을 부울 유형으로 가져옵니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 불리언 유형이 아니거나 리더가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  int8_t & v
)

현재 요소의 값을 부호 있는 8비트 정수로 가져옵니다.

인코딩된 정수 값이 출력 데이터 유형보다 크면 결과 값이 잘립니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 정수 유형 (부호 있음 또는 부호 없음)이 아니거나 판독기가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  int16_t & v
)

현재 요소의 값을 부호 있는 16비트 정수로 가져옵니다.

인코딩된 정수 값이 출력 데이터 유형보다 크면 결과 값이 잘립니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 정수 유형 (부호 있음 또는 부호 없음)이 아니거나 판독기가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  int32_t & v
)

현재 요소의 값을 부호 있는 32비트 정수로 가져옵니다.

인코딩된 정수 값이 출력 데이터 유형보다 크면 결과 값이 잘립니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 정수 유형 (부호 있음 또는 부호 없음)이 아니거나 판독기가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  int64_t & v
)

현재 요소의 값을 부호 있는 64비트 정수로 가져옵니다.

인코딩된 정수 값이 출력 데이터 유형보다 크면 결과 값이 잘립니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 정수 유형 (부호 있음 또는 부호 없음)이 아니거나 판독기가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  uint8_t & v
)

현재 요소의 값을 부호 없는 8비트 정수로 가져옵니다.

인코딩된 정수 값이 출력 데이터 유형보다 크면 결과 값이 잘립니다. 마찬가지로 인코딩된 정수 값이 음수이면 값은 부호 없는 값으로 변환됩니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 정수 유형 (부호 있음 또는 부호 없음)이 아니거나 판독기가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  uint16_t & v
)

현재 요소의 값을 부호 없는 16비트 정수로 가져옵니다.

인코딩된 정수 값이 출력 데이터 유형보다 크면 결과 값이 잘립니다. 마찬가지로 인코딩된 정수 값이 음수이면 값은 부호 없는 값으로 변환됩니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 정수 유형 (부호 있음 또는 부호 없음)이 아니거나 판독기가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  uint32_t & v
)

현재 요소의 값을 부호 없는 32비트 정수로 가져옵니다.

인코딩된 정수 값이 출력 데이터 유형보다 크면 결과 값이 잘립니다. 마찬가지로 인코딩된 정수 값이 음수이면 값은 부호 없는 값으로 변환됩니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 정수 유형 (부호 있음 또는 부호 없음)이 아니거나 판독기가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  uint64_t & v
)

현재 요소의 값을 부호 없는 64비트 정수로 가져옵니다.

인코딩된 정수 값이 음수이면 값은 부호 없는 값으로 변환됩니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 정수 유형 (부호 있음 또는 부호 없음)이 아니거나 판독기가 요소 위에 배치되지 않은 경우입니다.

가져오기

WEAVE_ERROR Get(
  float & v
)

가져오기

WEAVE_ERROR Get(
  double & v
)

현재 요소의 값을 배정밀도 부동 소수점 숫자로 가져옵니다.

세부정보
매개변수
[out] v
현재 TLV 요소와 연결된 값을 수신합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 부동 소수점 유형이 아니거나 리더가 요소 위에 배치되어 있지 않은 경우입니다.

GetBufHandle

uintptr_t GetBufHandle(
  void
) const 

GetBytes

WEAVE_ERROR GetBytes(
  uint8_t *buf,
  uint32_t bufSize
)

현재 바이트 또는 UTF8 문자열 요소의 값을 가져옵니다.

필요한 입력 버퍼 크기를 확인하려면 GetBytes()를 호출하기 전에 GetLength() 메서드를 호출합니다.

세부정보
매개변수
[in] buf
문자열 데이터를 수신할 버퍼에 대한 포인터입니다.
[in] bufSize
buf가 가리키는 버퍼의 크기(바이트)입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 바이트 또는 UTF8 문자열이 아니거나 리더가 요소에 배치되지 않은 경우입니다.
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 버퍼가 너무 작아서 현재 요소와 연결된 데이터를 보관할 수 없는 경우입니다.
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

GetContainerType

TLVType GetContainerType(
  void
) const 

TLVReader가 현재 읽고 있는 컨테이너의 유형을 반환합니다.

GetContainerType() 메서드는 TLVReader가 읽고 있는 TLV 컨테이너의 유형을 반환합니다. TLVReaderTLV 인코딩의 가장 바깥쪽 수준 (즉, 가장 바깥쪽 TLV 요소의 앞, 뒤)에 배치되면 메서드는 kTLVType_NotSpecified를 반환합니다.

세부정보
반환
현재 컨테이너의 TLVType 또는 TLVReader가 컨테이너 내에 배치되지 않은 경우 kTLVType_NotSpecified입니다.

GetControlByte

uint16_t GetControlByte(
  void
) const 

현재 TLV 요소와 연결된 제어 바이트를 반환합니다.

누구도 제어 바이트에 관해 알 필요가 없으며 TLV의 내부 구현에서만 제어 바이트에 액세스할 수 있어야 합니다. 하지만 제어 바이트에 액세스할 수 있으면 TLV디버그유틸리티 (TLV 버퍼 콘텐츠를 출력할 때 태그 제어 바이트를 디코딩하려고 시도)의 디버깅 목적으로 유용합니다.

세부정보
반환
현재 TLV 요소와 연결된 제어 바이트를 포함하는 부호 없는 정수입니다. 판독기가 요소 위에 배치되지 않은 경우 kTLVControlByte_NotSpecified가 반환됩니다.

GetDataPtr

WEAVE_ERROR GetDataPtr(
  const uint8_t *& data
)

TLV 바이트 또는 UTF8 문자열 요소의 초기 인코딩된 바이트를 가리키는 포인터를 가져옵니다.

이 메서드는 기본 입력 버퍼 내의 인코딩된 문자열 값인 직접 포인터를 반환합니다. 성공하려면 이 메서드에는 문자열 값 전체가 단일 버퍼에 있어야 합니다. 그렇지 않으면 메서드는 WEAVE_ERROR_TLV_UNDERRUN을 반환합니다. 이로 인해 인접하지 않은 여러 버퍼에서 데이터를 읽을 때 메서드를 제한적으로 사용할 수 있습니다.

세부정보
매개변수
[out] data
기본 문자열 데이터에 대한 포인터를 수신하는 const 포인터에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 바이트 또는 UTF8 문자열이 아니거나 리더가 요소에 배치되지 않은 경우입니다.
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 너무 일찍 종료되었거나 현재 문자열 요소의 값이 단일 연속 버퍼 내에 포함되어 있지 않은 경우입니다.
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

GetLength

uint32_t GetLength(
  void
) const 

현재 TLV 요소와 연결된 데이터의 길이를 반환합니다.

데이터 길이는 UTF8 문자열 또는 바이트 문자열 유형의 요소에만 적용됩니다. UTF8 문자열의 경우 반환되는 값은 문자 수가 아니라 문자열의 바이트 수입니다.

세부정보
반환
현재 TLV 요소와 연결된 데이터의 길이 (바이트)입니다. 현재 요소가 UTF8 문자열 또는 바이트 문자열이 아니거나 판독기가 요소에 배치되지 않은 경우에는 0입니다.

GetLengthRead

uint32_t GetLengthRead(
  void
) const 

판독기가 초기화된 이후 읽은 총 바이트 수를 반환합니다.

세부정보
반환
판독기가 초기화된 이후 읽은 총 바이트 수입니다.

GetReadPoint

const uint8_t * GetReadPoint(
  void
) const 

기본 입력 버퍼에서 리더의 현재 위치에 해당하는 지점을 가져옵니다.

세부정보
반환
리더의 현재 위치에 해당하는 기본 입력 버퍼의 포인터입니다.

GetRemainingLength

uint32_t GetRemainingLength(
  void
) const 

최대 읽기 길이에 도달할 때까지 읽을 수 있는 총 바이트 수를 반환합니다.

세부정보
반환
최대 읽기 길이에 도달할 때까지 읽을 수 있는 총 바이트 수입니다.

GetString

WEAVE_ERROR GetString(
  char *buf,
  uint32_t bufSize
)

현재 바이트 또는 UTF8 문자열 요소의 값을 null로 끝나는 문자열로 가져옵니다.

필요한 입력 버퍼 크기를 확인하려면 GetBytes()를 호출하기 전에 GetLength() 메서드를 호출합니다. null 문자를 수용하려면 입력 버퍼가 문자열 길이보다 1바이트 이상 커야 합니다.

세부정보
매개변수
[in] buf
바이트 문자열 데이터를 수신할 버퍼에 대한 포인터입니다.
[in] bufSize
buf가 가리키는 버퍼의 크기(바이트)입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
현재 요소가 TLV 바이트 또는 UTF8 문자열이 아니거나 리더가 요소에 배치되지 않은 경우입니다.
WEAVE_ERROR_BUFFER_TOO_SMALL
제공된 버퍼가 너무 작아서 현재 요소와 연결된 데이터를 보관할 수 없는 경우입니다.
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

GetTag

uint64_t GetTag(
  void
) const 

현재 TLV 요소와 연결된 태그를 반환합니다.

GetTag()에 의해 반환된 값은 태그 유형을 확인하고 다양한 태그 필드 값을 추출하는 데 태그 유틸리티 함수 (IsProfileTag(), IsContextTag(), ProfileIdFromTag() 등)와 함께 사용할 수 있습니다.

세부정보
반환
현재 TLV 요소와 연결된 태그에 관한 정보를 포함하는 부호 없는 정수입니다.

GetType

TLVType GetType(
  void
) const 

현재 TLV 요소의 유형을 반환합니다.

세부정보
반환
현재 TLV 요소의 데이터 유형을 설명하는 TLVType 값입니다. 리더가 TLV 요소에 위치하지 않은 경우 반환 값은 kTLVType_NotSpecified가 됩니다.

Init

void Init(
  const TLVReader & aReader
)

다른 TLVReader 객체에서 TLVReader 객체를 초기화합니다.

세부정보
매개변수
[in] aReader
초기화를 위한 TLVReader의 읽기 전용 참조입니다.

Init

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

단일 입력 버퍼에서 읽도록 TLVReader 객체를 초기화합니다.

세부정보
매개변수
[in] data
파싱할 TLV 데이터가 포함된 버퍼를 가리키는 포인터입니다.
[in] dataLen
파싱할 TLV 데이터의 길이입니다.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

단일 PacketBuffer에서 읽도록 TLVReader 객체를 초기화합니다.

파싱은 버퍼의 시작 위치 (buf->DataStart())에서 시작하여 버퍼의 데이터가 끝날 때까지 (buf->Datalen()으로 표시됨) 또는 maxLen 바이트가 파싱될 때까지 계속됩니다.

세부정보
매개변수
[in] buf
파싱할 TLV 데이터가 포함된 PacketBuffer에 대한 포인터입니다.
[in] maxLen
파싱할 최대 바이트입니다. 기본값은 입력 버퍼의 데이터 양입니다.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen,
  bool allowDiscontiguousBuffers
)

하나 이상의 PacketBuffer에서 읽도록 TLVReader 객체를 초기화합니다.

파싱은 초기 버퍼의 시작 위치 (buf->DataStart())에서 시작됩니다. allowDiscontiguousBuffers가 true인 경우 판독기는 Next() 포인터로 연결된 버퍼 체인을 통해 진행합니다. 파싱은 버퍼 체인의 모든 데이터가 사용되거나 (buf->Datalen()으로 표시됨) maxLen 바이트가 파싱될 때까지 계속됩니다.

세부정보
매개변수
[in] buf
파싱할 TLV 데이터가 포함된 PacketBuffer에 대한 포인터입니다.
[in] maxLen
파싱할 최대 바이트입니다. 기본값은 입력 버퍼 체인의 총 데이터 양입니다.
[in] allowDiscontiguousBuffers
true인 경우 현재 버퍼의 모든 데이터가 사용된 후 체인의 다음 버퍼로 넘어갑니다. false인 경우 초기 버퍼의 끝에서 파싱을 중지합니다.

다음

WEAVE_ERROR Next(
  void
)

TLVReader 객체를 읽을 다음 TLV 요소로 이동합니다.

Next() 메서드는 동일한 포함 컨텍스트에 있는 TLV 인코딩의 다음 요소에 판독기 객체를 배치합니다. 특히 판독기가 TLV 인코딩의 가장 바깥쪽 수준에 위치한 경우 Next()를 호출하면 리더가 다음 최상위 요소로 진행됩니다. 판독기가 TLV 컨테이너 요소 (구조, 배열 또는 경로) 내에 배치된 경우 Next()를 호출하면 판독기가 컨테이너의 다음 구성원 요소로 넘어갑니다.

Next()는 리더 동작을 현재 포함 컨텍스트로 제한하므로 리더가 컨테이너 요소에 배치되었을 때 Next()를 호출하면 컨테이너 위로 이동하여 컨테이너 뒤의 첫 번째 요소에 도달할 때까지 멤버 요소 (및 중첩된 컨테이너의 멤버)를 건너뜁니다.

특정 포함 컨텍스트 내에 추가 요소가 없으면 Next() 메서드가 WEAVE_END_OF_TLV 오류를 반환하고 판독기의 위치가 변경되지 않은 상태로 유지됩니다.

세부정보
반환 값
WEAVE_NO_ERROR
리더가 새 요소에 성공적으로 배치되었는지 여부
WEAVE_END_OF_TLV
사용할 수 있는 추가 요소가 없는 경우입니다.
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_INVALID_TLV_ELEMENT
판독기에 잘못되었거나 지원되지 않는 TLV 요소 유형이 발생한 경우
WEAVE_ERROR_INVALID_TLV_TAG
리더가 잘못된 컨텍스트에서 TLV 태그를 발견한 경우
WEAVE_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
판독기가 해당 프로필 ID를 알 수 없는 암시적으로 인코딩된 TLV 태그를 발견한 경우
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

다음

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

TLVReader 객체를 읽을 다음 TLV 요소로 이동하여 새 요소의 유형과 태그를 어설션합니다.

Next(TLVTypeexpectedType, uint64_texpectedTag) 메서드는 Next()와 동작이 동일한 편의 메서드이지만 새 TLV 요소의 유형과 태그가 제공된 인수와 일치하는지도 확인합니다.

세부정보
매개변수
[in] expectedType
다음 요소에 예상되는 데이터 유형입니다.
[in] expectedTag
다음 요소의 예상 태그입니다.
반환 값
WEAVE_NO_ERROR
리더가 새 요소에 성공적으로 배치되었는지 여부
WEAVE_END_OF_TLV
사용할 수 있는 추가 요소가 없는 경우입니다.
WEAVE_ERROR_WRONG_TLV_TYPE
새 요소의 유형이 expectedType 인수의 값과 일치하지 않는 경우
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
새 요소와 연결된 태그가 expectedTag 인수의 값과 일치하지 않는 경우
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_INVALID_TLV_ELEMENT
판독기에 잘못되었거나 지원되지 않는 TLV 요소 유형이 발생한 경우
WEAVE_ERROR_INVALID_TLV_TAG
리더가 잘못된 컨텍스트에서 TLV 태그를 발견한 경우
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

TLV 컨테이너 요소의 멤버를 읽기 위한 새 TLVReader 객체를 초기화합니다.

OpenContainer() 메서드는 TLV 컨테이너의 구성원 요소 (구조, 배열 또는 경로)를 읽기 위한 새 TLVReader 객체를 초기화합니다. OpenContainer()가 호출되면 현재 TLVReader 객체가 읽을 컨테이너 요소에 배치되어야 합니다. 이 메서드는 컨테이너를 읽도록 초기화되는 새 리더에 대한 참조를 유일한 인수로 받습니다. 이 판독기를 컨테이너 판독기라고 하며, OpenContainer()가 호출되는 리더를 상위 판독기라고 합니다.

OpenContainer() 메서드가 반환되면 컨테이너 리더가 컨테이너의 첫 번째 구성원 바로 앞에 배치됩니다. 컨테이너 리더에서 Next()를 호출하면 컬렉션의 멤버를 통해 컬렉션 멤버를 탐색하고 끝에 도달할 때까지 판독기가 WEAVE_END_OF_TLV를 반환합니다.

컨테이너 리더가 열려 있는 동안 애플리케이션은 상위 리더를 호출하거나 상위 리더의 상태를 변경해서는 안 됩니다. 애플리케이션에서 컨테이너 리더 사용을 마치면 상위 리더에서 CloseContainer()를 호출하고 컨테이너 리더를 인수로 전달하여 이를 닫아야 합니다. 애플리케이션은 기본 컨테이너에 포함된 모든 요소를 읽거나 읽지 않고 언제든지 컨테이너 리더를 닫을 수 있습니다. 컨테이너 리더가 닫힌 후에도 애플리케이션에서는 상위 리더를 계속 사용할 수 있습니다.

컨테이너 리더는 상위 리더에서 다양한 구성 속성을 상속합니다. 이는 다음과 같습니다.

  • 암시적 프로필 ID (ImplicitProfileId)
  • 애플리케이션 데이터 포인터 (AppData)
  • GetNextBuffer 함수 포인터

세부정보
매개변수
[out] containerReader
현재 컨테이너 요소의 멤버를 읽기 위해 초기화될 TLVReader 객체에 대한 참조입니다. 제공된 객체와 연결된 모든 데이터를 덮어씁니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우입니다.
WEAVE_ERROR_INCORRECT_STATE
현재 요소가 컨테이너 요소에 배치되지 않은 경우.

건너뛰기

WEAVE_ERROR Skip(
  void
)

TLVReader 객체를 현재 TLV 요소 바로 뒤로 이동합니다.

Skip() 메서드는 현재 TLV 요소 바로 에 판독기 객체를 배치합니다. 이렇게 하면 이후에 Next()를 호출하면 판독기가 다음 요소로 진행됩니다. Next()와 마찬가지로, 호출 시점에 판독기가 컨테이너 요소에 배치되면 컨테이너의 멤버를 건너뜁니다. 리더가 어떤 요소에서도 위치에 있지 않으면 해당 위치는 변경되지 않습니다.

세부정보
반환 값
WEAVE_NO_ERROR
리더가 새 요소에 성공적으로 배치되었는지 여부
WEAVE_END_OF_TLV
사용할 수 있는 추가 요소가 없는 경우입니다.
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_INVALID_TLV_ELEMENT
판독기에 잘못되었거나 지원되지 않는 TLV 요소 유형이 발생한 경우
WEAVE_ERROR_INVALID_TLV_TAG
리더가 잘못된 컨텍스트에서 TLV 태그를 발견한 경우
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

VerifyEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

TVLReader 객체가 TLV 컨테이너의 끝에 있는지 확인합니다.

VerifyEndOfContainer() 메서드는 현재 TLV 컨테이너 내에서 읽을 TLV 요소가 더 이상 없는지 확인합니다. 이는 Next()를 호출하고 WEAVE_END_OF_TLV의 반환 값을 확인하는 것과 동일한 편의 메서드입니다.

세부정보
반환 값
WEAVE_NO_ERROR
더 이상 읽을 TLV 요소가 없는 경우입니다.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
컬렉션에서 다른 TLV 요소가 발견된 경우
WEAVE_ERROR_TLV_UNDERRUN
기본 TLV 인코딩이 조기 종료된 경우입니다.
WEAVE_ERROR_INVALID_TLV_ELEMENT
판독기에 잘못되었거나 지원되지 않는 TLV 요소 유형이 발생한 경우
WEAVE_ERROR_INVALID_TLV_TAG
리더가 잘못된 컨텍스트에서 TLV 태그를 발견한 경우
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

보호된 함수

ClearElementState

void ClearElementState(
  void
)

TLVReader의 상태를 지웁니다.

이 메서드는 첫 번째 TLV 앞, TLV 사이 또는 마지막 TLV 뒤에 리더를 배치하는 데 사용됩니다.

ElementType

TLVElementType ElementType(
  void
) const 

이는 mControlByte에서 TLVElementType을 반환하는 비공개 메서드입니다.

EnsureData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

TLV 요소 헤드의 길이를 계산하는 데 사용되는 비공개 메서드입니다.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

ReadData

WEAVE_ERROR ReadData(
  uint8_t *buf,
  uint32_t len
)

ReadElement

WEAVE_ERROR ReadElement(
  void
)

ReadTag

uint64_t ReadTag(
  TLVTagControl tagControl,
  const uint8_t *& p
)

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

SkipData

WEAVE_ERROR SkipData(
  void
)

현재 TLV에 포함된 데이터를 대상 버퍼 없이 읽어 건너뜁니다.

세부정보
반환 값
WEAVE_NO_ERROR
리더가 데이터의 끝에 성공적으로 배치되었는지 여부
other
구성된 GetNextBuffer() 함수에서 반환하는 다른 Weave 또는 플랫폼 오류 코드 GetNextBuffer가 NULL이 아닌 경우에만 가능합니다.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

VerifyElement

WEAVE_ERROR VerifyElement(
  void
)

보호되는 정적 함수

FailGetNextBuffer

WEAVE_ERROR FailGetNextBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)

GetNextPacketBuffer

WEAVE_ERROR GetNextPacketBuffer(
  TLVReader & reader,
  uintptr_t & bufHandle,
  const uint8_t *& bufStart,
  uint32_t & bufLen
)