Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

nl::Weave::TLV::TLV 작가

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

Weave TLV 형식으로 데이터를 쓰기 위한 메모리 효율적인 인코더를 제공합니다.

요약

TLV 몇 개는 Weave TLV 데이터에 대한 순방향 스트림 스타일 인코더를 구현합니다. 애플리케이션은 작성기의 Place() 메서드 중 하나를 호출하여 연결된 태그와 값 정보를 필요에 따라 전달하여 데이터를 인코딩에 씁니다. 마찬가지로 애플리케이션은 작성기의 OpenContainer() 또는 EnterContainer() 메서드를 호출하여 TLV 컨테이너 유형(구조, 배열 또는 경로)을 인코딩할 수 있습니다.

TLVViewer 객체는 고정 출력 버퍼 또는 하나 이상의 PacketBuffer 객체 체인에 직접 데이터를 쓸 수 있습니다. 또한 애플리케이션은 자체 GetNewBufferFinalizeBuffer 함수를 제공하여 소켓(예: 소켓 또는 이벤트 대기열)과 같은 임의의 대상에 출력을 전달할 수 있습니다.

상속

직접 알려진 서브클래스: nl::Weave::TLV::CircularTLVwriter

보호된 유형

@72{
  kEndOfContainerMarkerSize = 1
}
enum

공개 유형

FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen) WEAVE_ERROR(*)
TLVwriter 객체의 출력 확정을 실행하는 데 사용되는 함수
GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen) WEAVE_ERROR(*)
새 출력 버퍼 공간을 TLVWRITE에 제공하는 함수

공개 속성

AppData
void *
애플리케이션별 데이터에 사용할 수 있는 포인터 필드입니다.
FinalizeBuffer
TLV작성자가 확정될 때 호출되는 함수에 대한 포인터입니다.
GetNewBuffer
TLVWRITE에 새 출력 버퍼 공간을 제공할 함수에 대한 포인터입니다.
ImplicitProfileId
uint32_t
암시적 형식으로 인코딩되어야 하는 태그의 프로필 ID입니다.

보호된 속성

mBufHandle
uintptr_t
mBufStart
uint8_t *
mContainerType
mLenWritten
uint32_t
mMaxLen
uint32_t
mRemainingLen
uint32_t
mWritePoint
uint8_t *

공개 함수

CloseContainer(TLVWriter & containerWriter)
OpenContainer() 호출 후에 TLV 컨테이너 작성을 완료합니다.
ContinuePutBytes(const uint8_t *buf, uint32_t len)
TLV 바이트 문자열 값을 인코딩합니다.
CopyContainer(TLVReader & container)
TLVReader 객체의 TLV 컨테이너 요소를 복사합니다.
CopyContainer(uint64_t tag, TLVReader & container)
미리 인코딩된 구성원 요소 집합에서 TLV 컨테이너 요소를 인코딩합니다.
CopyContainer(uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen)
사전 인코딩된 컨테이너의 멤버 요소를 포함하는 TLV 컨테이너 요소를 인코딩합니다.
CopyElement(TLVReader & reader)
판독기 객체의 TLV 요소를 작성기로 복사합니다.
CopyElement(uint64_t tag, TLVReader & reader)
EndContainer(TLVType outerContainerType)
TLV 컨테이너 요소의 인코딩을 완료합니다.
Finalize(void)
TLV 인코딩 작성을 완료하세요.
GetContainerType(void) const
TLVwriter가 현재 쓰고 있는 컨테이너의 유형을 반환합니다.
GetLengthWritten(void)
uint32_t
작성기가 초기화된 후 작성된 총 바이트 수를 반환합니다.
Init(uint8_t *buf, uint32_t maxLen)
void
단일 출력 버퍼에 쓸 TLVwriter 객체를 초기화합니다.
Init(PacketBuffer *buf, uint32_t maxLen)
void
단일 PacketBuffer에 기록하기 위해 TLVwriter 객체를 초기화합니다.
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
하나 이상의 PacketBuffers에 작성하도록 TLVwriter 객체를 초기화합니다.
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
void
동적 버퍼에 쓰려면 TLVwriter 객체를 초기화합니다.
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
TLV 컨테이너 요소의 멤버를 쓰기 위한 새 TLVwriter 객체를 초기화합니다.
Put(uint64_t tag, int8_t v)
TLV 부호 있는 정수 값을 인코딩합니다.
Put(uint64_t tag, int8_t v, bool preserveSize)
TLV 부호 있는 정수 값을 인코딩합니다.
Put(uint64_t tag, int16_t v)
Put(uint64_t tag, int16_t v, bool preserveSize)
Put(uint64_t tag, int32_t v)
Put(uint64_t tag, int32_t v, bool preserveSize)
Put(uint64_t tag, int64_t v)
Put(uint64_t tag, int64_t v, bool preserveSize)
Put(uint64_t tag, uint8_t v)
부호 없는 TLV 정수 값을 인코딩합니다.
Put(uint64_t tag, uint8_t v, bool preserveSize)
부호 없는 TLV 정수 값을 인코딩합니다.
Put(uint64_t tag, uint16_t v)
Put(uint64_t tag, uint16_t v, bool preserveSize)
Put(uint64_t tag, uint32_t v)
Put(uint64_t tag, uint32_t v, bool preserveSize)
Put(uint64_t tag, uint64_t v)
Put(uint64_t tag, uint64_t v, bool preserveSize)
Put(uint64_t tag, float v)
Put(uint64_t tag, double v)
TLV 부동 소수점 값을 인코딩합니다.
PutBoolean(uint64_t tag, bool v)
TLV 부울 값을 인코딩합니다.
PutBytes(uint64_t tag, const uint8_t *buf, uint32_t len)
TLV 바이트 문자열 값을 인코딩합니다.
PutNull(uint64_t tag)
TLV null 값을 인코딩합니다.
PutPreEncodedContainer(uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen)
미리 인코딩된 구성원 요소 집합에서 TLV 컨테이너 요소를 인코딩합니다.
PutString(uint64_t tag, const char *buf)
TLV UTF8 문자열 값을 인코딩합니다.
PutString(uint64_t tag, const char *buf, uint32_t len)
TLV UTF8 문자열 값을 인코딩합니다.
PutStringF(uint64_t tag, const char *fmt, ...)
TLV 요소의 형식에 따라 형식이 지정된 문자열 출력을 인코딩합니다.
StartContainer(uint64_t tag, TLVType containerType, TLVType & outerContainerType)
TLV 컨테이너 요소 인코딩을 시작합니다.
StartPutBytes(uint64_t tag, uint32_t totalLen)
TLV 바이트 문자열을 여러 청크로 인코딩합니다.
VPutStringF(uint64_t tag, const char *fmt, va_list ap)
TLV 요소의 형식에 따라 형식이 지정된 문자열 출력을 인코딩합니다.

공개 정적 함수

FinalizePacketBuffer(TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen)
PacketBuffers 체인에의 쓰기를 위한 TLV화자FinalizeBuffer 함수를 구현합니다.
GetNewBuffer_Malloced(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
동적 버퍼에 작성하기 위한 TLVwriter GetNewBuffer 함수의 구현입니다.
GetNewPacketBuffer(TLVWriter & writer, uintptr_t & bufHandle, uint8_t *& bufStart, uint32_t & bufLen)
PacketBuffers 체인에 쓰기 위한 TLVWRITE GetNewBuffer 함수의 구현.

보호된 함수

IsCloseContainerReserved(void) const
bool
컨테이너가 시작 / 시작할 때 CloseContainer 기호의 공간을 예약해야 하는지 결정합니다.
IsContainerOpen(void) const
bool
SetCloseContainerReserved(bool aCloseContainerReserved)
void
컨테이너가 시작 / 시작할 때 CloseContainer 기호의 공간을 예약해야 하는지 설정합니다.
SetContainerOpen(bool aContainerOpen)
void
WriteData(const uint8_t *p, uint32_t len)
WriteElementHead(TLVElementType elemType, uint64_t tag, uint64_t lenOrVal)
WriteElementWithData(TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen)

보호된 유형

@72

 @72

공개 유형

결승화 BufferFunct

WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)

TLVwriter 객체의 출력 확정을 실행하는 데 사용되는 함수

이 유형의 함수는 TLVwriter'의 Finalize() 메서드가 호출될 때 호출됩니다. 함수는 작성기 객체의 출력 사용과 관련된 모든 정리 또는 완료 작업을 수행해야 합니다. 이러한 예로는 인코딩의 최종 길이를 기록하거나 파일 설명자를 닫는 등의 작업이 있습니다.

세부정보
매개변수
[in] writer
완료 중인 TLVwriter 객체에 대한 참조입니다.
[in,out] bufHandle
이전 GetNewBuffer 함수 호출에서 설정된 uintptr_t 컨텍스트 값입니다.
[in,out] bufStart
현재 및 최종 출력 버퍼의 시작에 대한 포인터입니다.
[in,out] bufLen
bufStart가 가리키는 버퍼에 포함된 바이트 수입니다.
반환 값
WEAVE_NO_ERROR
확정에 성공한 경우
other
완료 중에 오류가 발생했음을 나타내는 기타 위브 또는 플랫폼별 오류 코드

GetNewBufferFunct

WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)

새 출력 버퍼 공간을 TLVWRITE에 제공하는 함수

이 유형의 함수는 TLVwriter가 쓸 새로운 버퍼 공간을 준비하는 데 사용됩니다. 호출될 경우 관련 최대 길이와 함께 새 데이터를 작성해야 하는 메모리 위치에 대한 포인터가 반환됩니다. 함수는 데이터를 저장할 새 버퍼를 할당하거나 기존 버퍼에서 이전에 작성된 데이터를 삭제하여 쓰기 공간을 제공할 수 있습니다.

세부정보
매개변수
[in] writer
새 버퍼 공간을 요청하는 TLVWRITE 객체 참조
[in,out] bufHandle
함수에서 컨텍스트 데이터를 저장하는 데 사용할 수 있는 uintptr_t 값에 대한 참조입니다. 이 값은 첫 번째 호출 전에 0으로 초기화됩니다.
[in,out] bufStart
데이터 포인터에 대한 참조입니다. 함수가 입력되면 bufStart는 현재 출력 버퍼의 시작 부분을 가리킵니다. 종료 시 bufStart는 새 출력 버퍼의 시작을 가리킬 것으로 예상됩니다. 새 포인터 값은 이전 값과 같거나 (예: 함수가 기존 데이터를 다른 곳에서 복사한 경우) 완전히 새로운 위치를 가리킬 수 있습니다.
[in,out] bufLen
부호 없는 정수에 대한 참조입니다. 함수 입력 시 bufLen에는 현재 버퍼에서 사용하지 않는 공간의 바이트 수가 포함됩니다. 종료 시 bufLen에는 새 출력 버퍼에 쓸 수 있는 최대 바이트 수가 포함됩니다.
반환 값
WEAVE_NO_ERROR
함수가 작성기에 대한 추가 버퍼 공간을 제공할 수 있는지 여부입니다.
other
오류가 발생하여 함수가 추가 버퍼 공간을 생성하지 못하도록 하는 기타 Weave 또는 플랫폼별 오류 코드입니다.

공개 속성

앱 데이터

void * AppData

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

완료 버퍼

FinalizeBufferFunct FinalizeBuffer

TLV작성자가 확정될 때 호출되는 함수에 대한 포인터입니다.

TLVViewer 객체는 Finalize() 메서드가 호출될 때마다 결승화 버퍼 함수를 호출합니다. 애플리케이션은 Finalize()를 호출하기 전에 언제든지 함수 포인터를 설정할 수 있습니다. 기본적으로 포인터는 NULL로 설정되어 있어 Finalize() 메서드가 함수를 호출하지 않습니다.

최종화 함수 구현과 관련된 추가 정보는 최종화 FunFun 유형 유형을 참조하세요.

GetNewBuffer

GetNewBufferFunct GetNewBuffer

TLVWRITE에 새 출력 버퍼 공간을 제공할 함수에 대한 포인터입니다.

TLVwriter 객체는 현재 출력 버퍼 크기를 초과하는 데이터를 쓰려고 시도할 때마다 GetNewBuffer 함수를 호출합니다. NULL (기본값)으로 설정하면 출력 데이터가 현재 버퍼를 오버플로하는 경우 작성기가 WEAVE_ERROR_NO_MEMORY를 반환합니다.

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

GetNewBuffer 함수 구현에 관한 자세한 내용은 GetNewBufferFunct 유형 정의를 참조하세요.

암시적 프로필 ID

uint32_t ImplicitProfileId

암시적 형식으로 인코딩되어야 하는 태그의 프로필 ID입니다.

작성자가 새 요소를 인코딩하라는 요청을 받았을 때 새 요소와 연결된 태그의 프로필 ID가 ImplicitProfileId 멤버의 값과 일치하면 작성기는 태그를 암시적 형식으로 인코딩하며 프로세스에서 프로필 ID는 생략합니다.

기본적으로 ImplicitProfileId 속성은 kProfileIdNotSpecified로 설정되어 작성자가 암시적으로 인코딩된 태그를 내보내지 않도록 지시합니다. 애플리케이션은 언제든지 ImplicitProfileId를 설정하여 인코딩의 현재 지점부터 암시적 형식으로 인코딩 태그를 사용 설정할 수 있습니다. 적절한 프로필 ID는 보통 말하는 애플리케이션 또는 프로토콜의 컨텍스트에 따라 다릅니다.

보호된 속성

mBufHandle

uintptr_t mBufHandle

모바일 시작

uint8_t * mBufStart

mContainerType :

TLVType mContainerType

mLenWrite

uint32_t mLenWritten

mMaxLen

uint32_t mMaxLen

mRemainingLen

uint32_t mRemainingLen

mWritePoint

uint8_t * mWritePoint

공개 함수

닫기 컨테이너

WEAVE_ERROR CloseContainer(
  TLVWriter & containerWriter
)

OpenContainer() 호출 후에 TLV 컨테이너 작성을 완료합니다.

CloseContainer() 메서드는 OpenContainer() 호출 후에 상위 TLV화자 객체의 상태를 복원합니다. OpenContainer()를 호출할 때마다 애플리케이션은 CloseContainer()를 호출하여 동일한 메서드에 관한 참조를 두 메서드에 모두 전달해야 합니다.

CloseContainer()가 반환되면 애플리케이션은 상위 작성자를 계속 사용하여 컨테이너 요소 뒤에 표시되는 추가 TLV 요소를 작성할 수 있습니다. 이 시점에서 제공된 컨테이너 작성기는 다시 초기화되어야 하며 'de-initialized'로 간주되어야 합니다.

세부정보
매개변수
[in] containerWriter
OpenContainer() 메서드에 제공된 TLV 작성기 객체에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_INCORRECT_STATE
제공된 컨테이너 작성기의 상태가 올바르지 않은 경우
WEAVE_ERROR_TLV_CONTAINER_OPEN
제공된 컨테이너 작성기에서 다른 컨테이너 작성기가 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
컨테이너의 인코딩을 완료하는 경우 작성기가 초기화될 때 지정된 최대 바이트 수의 한도가 초과됩니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

연결

WEAVE_ERROR ContinuePutBytes(
  const uint8_t *buf,
  uint32_t len
)

TLV 바이트 문자열 값을 인코딩합니다.

StartStartBytes와 함께 사용해야 합니다.

세부정보
매개변수
[in] buf
인코딩할 바이트 문자열을 포함하는 버퍼에 대한 포인터입니다.
[in] len
인코딩할 바이트 수입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

복사 컨테이너

WEAVE_ERROR CopyContainer(
  TLVReader & container
)

TLVReader 객체의 TLV 컨테이너 요소를 복사합니다.

CopyContainer()TLVReader 객체의 현재 위치에 있는 사전 인코딩된 컨테이너 요소를 복사하여 새 TLV 컨테이너 요소를 인코딩합니다. 이 메서드는 한 번의 호출로 새 컨테이너 요소 전체를 작성하고 컨테이너 유형, 태그 및 요소를 소스 인코딩에서 복사합니다. 메서드가 반환되면 작성기 객체를 컨테이너 요소 뒤에 TLV 요소를 추가하는 데 사용할 수 있습니다.

세부정보
매개변수
[in] container
복사할 사전 인코딩된 TLV 컨테이너를 식별하는 TLVReader 객체에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_INCORRECT_STATE
제공된 판독기가 컨테이너 요소에 배치되지 않은 경우
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_TLV_UNDERRUN
제공된 판독기와 연결된 기본 TLV 인코딩이 조기에 종료된 경우
WEAVE_ERROR_INVALID_TLV_ELEMENT
제공된 리더에 유효하지 않거나 지원되지 않는 TLV 요소 유형이 있는 경우
WEAVE_ERROR_INVALID_TLV_TAG
제공된 리더에 잘못된 컨텍스트에서 TLV 태그가 발생했거나 새 컨테이너가 작성되는 컨텍스트에서 소스 컨테이너와 연결된 태그가 잘못되었거나 부적절합니다.
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수 또는 Reader 객체와 연결된 GetNextBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

복사 컨테이너

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  TLVReader & container
)

미리 인코딩된 구성원 요소 집합에서 TLV 컨테이너 요소를 인코딩합니다.

CopyContainer() 메서드는 TLVReader 객체에서 가져온 일련의 멤버 요소를 포함하는 새로운 TLV 컨테이너 요소 (구조, 배열 또는 경로)를 인코딩합니다. 메서드가 호출되면 제공된 리더 객체가 TLV 컨테이너 요소에 배치되어야 합니다. 새로 인코딩된 컨테이너는 유형 및 멤버를 입력 컨테이너와 동일하게 유지합니다. 새 컨테이너의 태그가 입력 매개변수로 지정됩니다.

메서드가 반환되면 작성기 객체를 컨테이너 요소 뒤에 TLV 요소를 추가하는 데 사용할 수 있습니다.

세부정보
매개변수
[in] tag
TLV 태그는 컨테이너로 인코딩되거나, 컨테이너가 태그 없이 인코딩되어야 하는 경우에는 AnonymousTag입니다. 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] container
유형과 멤버를 복사해야 하는 사전 인코딩된 TLV 컨테이너를 식별하는 TLVReader 객체에 관한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_INCORRECT_STATE
제공된 판독기가 컨테이너 요소에 배치되지 않은 경우
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_TLV_UNDERRUN
제공된 판독기와 연결된 기본 TLV 인코딩이 조기에 종료된 경우
WEAVE_ERROR_INVALID_TLV_ELEMENT
제공된 리더에 유효하지 않거나 지원되지 않는 TLV 요소 유형이 있는 경우
WEAVE_ERROR_INVALID_TLV_TAG
제공된 판독기가 잘못된 컨텍스트에서 TLV 태그를 경험하거나 제공된 태그가 새 컨테이너가 작성되는 컨텍스트에서 잘못되었거나 부적절합니다.
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수 또는 Reader 객체와 연결된 GetNextBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

복사 컨테이너

WEAVE_ERROR CopyContainer(
  uint64_t tag,
  const uint8_t *encodedContainer,
  uint16_t encodedContainerLen
)

사전 인코딩된 컨테이너의 멤버 요소를 포함하는 TLV 컨테이너 요소를 인코딩합니다.

CopyContainer() 메서드는 사전 인코딩된 컨테이너의 콘텐츠에서 가져온 구성원 요소 집합을 포함하는 새 TLV 컨테이너 요소 (구조, 배열 또는 경로)를 인코딩합니다. 메서드가 호출되면 제공된 입력 버퍼의 데이터가 TLV 컨테이너 요소로 파싱되며, 입력 컨테이너와 동일한 유형과 멤버를 가진 새 컨테이너가 작성됩니다. 새 컨테이너의 태그가 입력 매개변수로 지정됩니다.

메서드가 반환되면 작성기 객체를 컨테이너 요소 뒤에 TLV 요소를 추가하는 데 사용할 수 있습니다.

세부정보
매개변수
[in] tag
TLV 태그는 컨테이너로 인코딩되거나, 컨테이너가 태그 없이 인코딩되어야 하는 경우에는 AnonymousTag입니다. 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] encodedContainer
유형과 멤버를 복사해야 하는 사전 인코딩된 TLV 컨테이너를 포함하는 버퍼입니다.
[in] encodedContainerLen
사전 인코딩된 컨테이너의 길이(바이트)입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_TLV_UNDERRUN
인코딩된 컨테이너가 조기에 종료된 경우
WEAVE_ERROR_INVALID_TLV_ELEMENT
인코딩된 컨테이너에 유효하지 않거나 지원되지 않는 TLV 요소 유형이 있습니다.
WEAVE_ERROR_INVALID_TLV_TAG
인코딩된 컨테이너에 잘못된 컨텍스트에 TLV 태그가 포함되어 있거나 제공된 태그가 새 컨테이너가 작성되는 컨텍스트에서 잘못되었거나 부적절합니다.
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수 또는 Reader 객체와 연결된 GetNextBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

복사 요소

WEAVE_ERROR CopyElement(
  TLVReader & reader
)

판독기 객체의 TLV 요소를 작성기로 복사합니다.

CopyElement() 메서드는 유형 및 태그, 값을 TLVReader 객체에서 가져오는 새로운 TLV 요소를 인코딩합니다. 메서드가 호출되면 제공된 리더 객체가 소스 TLV 요소에 위치해야 합니다. 새로 인코딩된 요소는 입력 컨테이너와 동일한 유형, 태그 및 콘텐츠를 갖습니다. 제공된 요소가 TLV 컨테이너 (구조, 배열 또는 경로)인 경우 컨테이너의 전체 콘텐츠가 복사됩니다.

세부정보
매개변수
[in] reader
복사해야 하는 사전 인코딩된 TLV 요소를 식별하는 TLVReader 객체에 대한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_INCORRECT_STATE
제공된 리더가 요소에 배치되지 않은 경우
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_TLV_UNDERRUN
제공된 판독기와 연결된 기본 TLV 인코딩이 조기에 종료된 경우
WEAVE_ERROR_INVALID_TLV_ELEMENT
제공된 리더에 유효하지 않거나 지원되지 않는 TLV 요소 유형이 있는 경우
WEAVE_ERROR_INVALID_TLV_TAG
제공된 판독기가 잘못된 컨텍스트에서 TLV 태그를 경험하거나 제공된 태그가 새 컨테이너가 작성되는 컨텍스트에서 잘못되었거나 부적절합니다.
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수 또는 Reader 객체와 연결된 GetNextBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

복사 요소

WEAVE_ERROR CopyElement(
  uint64_t tag,
  TLVReader & reader
)

엔드컨테이너

WEAVE_ERROR EndContainer(
  TLVType outerContainerType
)

TLV 컨테이너 요소의 인코딩을 완료합니다.

EndContainer() 메서드는 TLV 컨테이너 요소의 인코딩을 완료하고 이전 StartContainer() 호출 후에 TLVWrite 객체의 상태를 복원합니다. StartContainer()를 호출할 때마다 애플리케이션에서 {EndContainer()를 호출하여 StartContainer() 호출에서 반환된 TLVType 값을 전달해야 합니다. EndContainer()가 반환되면 작성기 객체를 사용하여 컨테이너 요소를 따르는 추가 TLV 요소를 작성할 수 있습니다.

세부정보
매개변수
[in] outerContainerType
StartContainer() 메서드에서 반환된 TLVType 값입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_INCORRECT_STATE
해당하는 StartContainer() 호출이 이루어지지 않은 경우
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

완료

WEAVE_ERROR Finalize(
  void
)

TLV 인코딩 작성을 완료하세요.

Finalize() 메서드는 기본 출력 버퍼에 TLV 인코딩을 작성하는 프로세스를 완료합니다. 이 메서드는 버퍼 콘텐츠를 사용하기 전에 애플리케이션에서 호출해야 합니다. Finalize()는 현재 작성기에 대해 열려 있는 컨테이너 작성기가 없는 경우에만 호출할 수 있습니다. OpenContainer()을 참고하세요.

세부정보
반환 값
WEAVE_NO_ERROR
인코딩이 성공적으로 완료되었는지 확인합니다.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
other
구성된 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

GetContainerType

TLVType GetContainerType(
  void
) const 

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

GetContainerType() 메서드는 현재 TLV 작성기에서 작성 중인 TLV 컨테이너의 유형을 반환합니다. TLV화자가 컨테이너 내에서 요소를 쓰지 않는 경우 (즉, 인코딩의 가장 바깥쪽에 작성하는 경우) 메서드는 kTLVType_NotSpecified를 반환합니다.

세부정보
반환
현재 컨테이너의 TLVType 또는 TLVWRITE가 컨테이너 내에 요소를 쓰지 않는 경우 kTLVType_NotSpecified

GetLength필드

uint32_t GetLengthWritten(
  void
)

작성기가 초기화된 후 작성된 총 바이트 수를 반환합니다.

세부정보
반환
작성기가 초기화된 후 작성된 총 바이트 수입니다.

Init

void Init(
  uint8_t *buf,
  uint32_t maxLen
)

단일 출력 버퍼에 쓸 TLVwriter 객체를 초기화합니다.

세부정보
매개변수
[in] buf
TLV를 작성해야 하는 버퍼에 대한 포인터입니다.
[in] maxLen
출력 버퍼에 기록해야 하는 최대 바이트 수입니다.

Init

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

단일 PacketBuffer에 기록하기 위해 TLVwriter 객체를 초기화합니다.

쓰기는 제공된 버퍼에서 기존 데이터의 마지막 바이트 바로 뒤에 시작됩니다.

세부정보
매개변수
[in] buf
TLV를 작성해야 하는 PacketBuffer의 포인터입니다.
[in] maxLen
출력 버퍼에 기록해야 하는 최대 바이트 수입니다.

Init

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

하나 이상의 PacketBuffers에 작성하도록 TLVwriter 객체를 초기화합니다.

쓰기는 지정된 버퍼에 있는 기존 데이터의 마지막 바이트 바로 뒤에 시작됩니다. allowDiscontiguousBuffers가 true인 경우 작성된 데이터의 양을 수용하기 위해 필요에 따라 제공된 패킷에 추가 PacketBuffers가 할당되고 연결됩니다. 지정된 출력 버퍼가 이미 버퍼 체인의 최상위에 있는 경우 새 버퍼가 할당되기 전에 체인의 후속 버퍼에 출력이 기록됩니다.

세부정보
매개변수
[in] buf
TLV 데이터를 작성해야 하는 PacketBuffer의 포인터입니다.
[in] maxLen
출력 버퍼에 기록해야 하는 최대 바이트 수입니다.
[in] allowDiscontiguousBuffers
true인 경우 PacketBuffers 체인에 데이터를 쓰고, 작성된 데이터를 저장하는 데 필요한 새 버퍼를 할당합니다. false인 경우 쓰기 데이터가 초기 출력 버퍼에서 사용할 수 있는 공간을 초과하면 WEAVE_ERROR_BUFFER_TOO_BIG로 쓰기가 실패합니다.

InitMalloced

void InitMalloced(
  uint8_t *& outBuf,
  uint32_t initialBufSize,
  uint32_t maxLen
)

동적 버퍼에 쓰려면 TLVwriter 객체를 초기화합니다.

세부정보
매개변수
[in] buf
할당된 버퍼를 수신할 포인터에 대한 참조입니다.
[in] maxLen
출력 버퍼에 기록해야 하는 최대 바이트 수입니다.
[in] initialBufSize
버퍼에 할당해야 하는 초기 바이트 수입니다.

OpenContainer

WEAVE_ERROR OpenContainer(
  uint64_t tag,
  TLVType containerType,
  TLVWriter & containerWriter
)

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

OpenContainer() 메서드는 TLV 컨테이너 요소 (구조, 배열 또는 경로)를 인코딩에 작성하는 데 사용됩니다. 이 메서드는 새 컨테이너의 유형 및 태그 (있는 경우)를 가져오며, 컨테이너의 요소를 쓰기 위해 초기화되는 새로운 작성자 객체 (컨테이너 작성기)에 대한 참조를 사용합니다. 애플리케이션은 컨테이너 작성기를 사용하여 새 컨테이너의 멤버를 작성한 후 CloseContainer()를 호출하여 컨테이너 인코딩을 완료합니다.

컨테이너 작성기가 열려 있는 동안에는 애플리케이션이 상위 작성기의 상태를 호출하거나 다른 방식으로 변경해서는 안 됩니다.

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

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

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v
)

TLV 부호 있는 정수 값을 인코딩합니다.

편의를 위해 제공되는 오버로드된 멤버 함수입니다. 위의 함수는 허용하는 인수에 한해 위 함수와 다릅니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] v
인코딩할 값입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int8_t v,
  bool preserveSize
)

TLV 부호 있는 정수 값을 인코딩합니다.

편의를 위해 제공되는 오버로드된 멤버 함수입니다. 위의 함수는 허용하는 인수에 한해 위 함수와 다릅니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] v
인코딩할 값입니다.
[in] preserveSize
값을 입력 유형과 같은 수의 바이트로 인코딩해야 하는 경우 참입니다. 값을 나타내는 데 필요한 최소 바이트 수로 인코딩해야 하는 경우 false입니다. 참고: 애플리케이션은 이 매개변수를 false로 설정하는 것이 좋습니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int16_t v,
  bool preserveSize
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int32_t v,
  bool preserveSize
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  int64_t v,
  bool preserveSize
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v
)

부호 없는 TLV 정수 값을 인코딩합니다.

편의를 위해 제공되는 오버로드된 멤버 함수입니다. 위의 함수는 허용하는 인수에 한해 위 함수와 다릅니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] v
인코딩할 값입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint8_t v,
  bool preserveSize
)

부호 없는 TLV 정수 값을 인코딩합니다.

편의를 위해 제공되는 오버로드된 멤버 함수입니다. 위의 함수는 허용하는 인수에 한해 위 함수와 다릅니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] v
인코딩할 값입니다.
[in] preserveSize
값을 입력 유형과 같은 수의 바이트로 인코딩해야 하는 경우 참입니다. 값을 나타내는 데 필요한 최소 바이트 수로 인코딩해야 하는 경우 false입니다. 참고: 애플리케이션은 이 매개변수를 false로 설정하는 것이 좋습니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint16_t v,
  bool preserveSize
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint32_t v,
  bool preserveSize
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  uint64_t v,
  bool preserveSize
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  float v
)

Put

WEAVE_ERROR Put(
  uint64_t tag,
  double v
)

TLV 부동 소수점 값을 인코딩합니다.

편의를 위해 제공되는 오버로드된 멤버 함수입니다. 위의 함수는 허용하는 인수에 한해 위 함수와 다릅니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] v
인코딩할 값입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

PutBoolean

WEAVE_ERROR PutBoolean(
  uint64_t tag,
  bool v
)

TLV 부울 값을 인코딩합니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] v
인코딩할 값입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

PutBytes

WEAVE_ERROR PutBytes(
  uint64_t tag,
  const uint8_t *buf,
  uint32_t len
)

TLV 바이트 문자열 값을 인코딩합니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] buf
인코딩할 바이트 문자열을 포함하는 버퍼에 대한 포인터입니다.
[in] len
인코딩할 바이트 수입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

Null

WEAVE_ERROR PutNull(
  uint64_t tag
)

TLV null 값을 인코딩합니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

CapPreEnencodedContainer

WEAVE_ERROR PutPreEncodedContainer(
  uint64_t tag,
  TLVType containerType,
  const uint8_t *data,
  uint32_t dataLen
)

미리 인코딩된 구성원 요소 집합에서 TLV 컨테이너 요소를 인코딩합니다.

PlacePreEnencodedContainer() 메서드는 사전 인코딩된 버퍼에서 가져온 구성원 요소 집합을 포함하는 새 TLV 컨테이너 요소 (구조, 배열 또는 경로)를 인코딩합니다. 입력 버퍼는 지정된 컨테이너 유형과 관련된 규칙을 준수하는 전체 태그 인코딩 TLV 요소를 0개 이상 포함해야 합니다 (예: 구조 멤버에는 태그가 있어야 하지만 배열 멤버는 태그가 없어야 함).

이 메서드는 한 번의 호출로 컨테이너 요소의 전체를 인코딩합니다. PlacePreEnencodedContainer()가 반환되면 작성기 객체를 컨테이너 요소 뒤에 추가 TLV 요소를 쓰는 데 사용할 수 있습니다.

세부정보
매개변수
[in] tag
TLV 태그는 컨테이너로 인코딩되거나, 컨테이너가 태그 없이 인코딩되어야 하는 경우에는 AnonymousTag입니다. 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] containerType
인코딩할 컨테이너 유형입니다. kTLVType_Structure, kTLVType_Array, kTLVType_Path 중 하나여야 합니다.
[in] data
새 컨테이너의 구성원이 될 더 많은 인코딩된 TLV 요소가 없는 버퍼에 대한 포인터.
[in] dataLen
data 버퍼의 바이트 수입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_WRONG_TLV_TYPE
containerType에 대해 지정된 값이 잘못된 경우
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

퍼스트링

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf
)

TLV UTF8 문자열 값을 인코딩합니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] buf
인코딩할 null로 끝나는 UTF-8 문자열 포인터입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

퍼스트링

WEAVE_ERROR PutString(
  uint64_t tag,
  const char *buf,
  uint32_t len
)

TLV UTF8 문자열 값을 인코딩합니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] buf
인코딩할 UTF-8 문자열에 대한 포인터입니다.
[in] len
인코딩할 문자열의 길이 (바이트)입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

푸링F

WEAVE_ERROR PutStringF(
  uint64_t tag,
  const char *fmt,
  ...
)

TLV 요소의 형식에 따라 형식이 지정된 문자열 출력을 인코딩합니다.

CapStringF는 출력이 문자 버퍼가 아닌 TLV 요소에 저장되는 스프린트와 유사합니다. 확장된 printf 기능을 사용할 수 있는 경우 함수는 결과 문자열을 불연속 기본 스토리지에 출력할 수 있습니다. 구현은 다음과 같은 printf 개선사항을 지원합니다.

플랫폼에서는 putchar 대신 맞춤 콜백을 호출하는 기능을 제공하는 콜백 기반 vcbprintf를 제공합니다.

플랫폼은 출력의 처음 n 문자를 생략하는 조항을 제외하고 Vnprintf와 똑같이 동작하는 vsnprintf_ex라는 vsnprintf 변형을 제공합니다.

콜백 기반 함수는 가장 간단하고 코드양을 최소한으로 사용할 수 있지만 vsprintf_ex의 다양한 함수는 더 적은 스택을 사용합니다.

위의 둘 다 사용할 수 없지만 플랫폼에서 malloc를 제공하면 함수에서 출력을 보유하기 위해 임시 버퍼를 할당합니다. 플랫폼에서 printf 계열 또는 malloc에 대한 개선사항을 모두 제공하지 않는 경우 출력은 현재 TLV 저장소의 연속 상태에 맞도록 잘립니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] fmt
인수 목록의 형식을 지정하는 데 사용되는 형식 문자열입니다. printf 함수 패밀리의 형식 문자열과 동일한 구문과 규칙을 따릅니다.
[in] ...
Aspect에 따라 출력값에서 형식을 지정할 인수 목록입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
other
기본 TLV화자 메서드 WriteElementHead 또는 GetNewBuffer 호출에 실패하면 오류가 호출 스택에 즉시 전달됩니다.

시작 컨테이너

WEAVE_ERROR StartContainer(
  uint64_t tag,
  TLVType containerType,
  TLVType & outerContainerType
)

TLV 컨테이너 요소 인코딩을 시작합니다.

StartContainer() 메서드는 TLV 컨테이너 요소 (구조, 배열, 경로)를 인코딩에 작성하는 데 사용됩니다. 이 메서드는 새 컨테이너의 유형 및 태그 (있는 경우) 및 컨테이너를 작성하는 데 사용되는 작성자의 현재 컨텍스트를 저장하는 데 사용될 TLVType 값에 대한 참조를 취합니다.

StartContainer() 메서드가 반환되면 애플리케이션에서 현재 TLVwriter 객체를 사용하여 컨테이너의 요소를 작성해야 합니다. 완료되면 애플리케이션에서 EndContainer() 메서드를 호출하여 컨테이너의 인코딩을 완료해야 합니다.

세부정보
매개변수
[in] tag
TLV 태그는 컨테이너로 인코딩되거나, 컨테이너가 태그 없이 인코딩되어야 하는 경우에는 AnonymousTag입니다. 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] containerType
인코딩할 컨테이너 유형입니다. kTLVType_Structure, kTLVType_Array, kTLVType_Path 중 하나여야 합니다.
[out] outerContainerType
작성자의 컨텍스트를 수신할 TLVType 값에 관한 참조입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_WRONG_TLV_TYPE
containerType에 대해 지정된 값이 잘못된 경우
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

시작 바이트

WEAVE_ERROR StartPutBytes(
  uint64_t tag,
  uint32_t totalLen
)

TLV 바이트 문자열을 여러 청크로 인코딩합니다.

이 매개변수는 FollowPlace에 사용해야 합니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] totalLen
인코딩할 총 바이트 수입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
WEAVE_ERROR_TLV_CONTAINER_OPEN
컨테이너 작성기가 현재 작성자에서 열려 있지만 아직 닫지 않은 경우
WEAVE_ERROR_INVALID_TLV_TAG
지정된 태그 값이 잘못되었거나 쓰기 권한이 있는 컨텍스트에 부적절한 경우
WEAVE_ERROR_BUFFER_TOO_SMALL
값을 쓰는 경우 작성기가 초기화될 때 지정된 최대 바이트 수 제한을 초과합니다.
WEAVE_ERROR_NO_MEMORY
메모리 부족으로 인해 출력 버퍼 할당을 시도할 수 없습니다.
other
구성된 GetNewBuffer() 또는 FinalizeBuffer() 함수에서 반환하는 기타 Weave 또는 플랫폼별 오류입니다.

VPlaceStringF

WEAVE_ERROR VPutStringF(
  uint64_t tag,
  const char *fmt,
  va_list ap
)

TLV 요소의 형식에 따라 형식이 지정된 문자열 출력을 인코딩합니다.

CapStringF는 출력이 문자 버퍼가 아닌 TLV 요소에 저장되는 스프린트와 유사합니다. 확장된 printf 기능을 사용할 수 있는 경우 함수는 결과 문자열을 불연속 기본 스토리지에 출력할 수 있습니다. 구현은 다음과 같은 printf 개선사항을 지원합니다.

플랫폼에서는 putchar 대신 맞춤 콜백을 호출하는 기능을 제공하는 콜백 기반 vcbprintf를 제공합니다.

플랫폼은 출력의 처음 n 문자를 생략하는 조항을 제외하고 Vnprintf와 똑같이 동작하는 vsnprintf_ex라는 vsnprintf 변형을 제공합니다.

콜백 기반 함수는 가장 간단하고 코드양을 최소한으로 사용할 수 있지만 vsprintf_ex의 다양한 함수는 더 적은 스택을 사용합니다.

위의 둘 다 사용할 수 없지만 플랫폼에서 malloc를 제공하면 함수에서 출력을 보유하기 위해 임시 버퍼를 할당합니다. 플랫폼에서 printf 계열 또는 malloc에 대한 개선사항을 모두 제공하지 않는 경우 출력은 현재 TLV 저장소의 연속 상태에 맞도록 잘립니다.

세부정보
매개변수
[in] tag
값으로 인코딩할 TLV 태그 또는 값이 태그 없이 인코딩되어야 하는 경우 AnonymousTag 태그 값은 태그 정의 함수 ProfileTag(), ContextTag() 또는 CommonTag() 중 하나로 구성해야 합니다.
[in] fmt
인수 목록의 형식을 지정하는 데 사용되는 형식 문자열입니다. printf 함수 패밀리의 형식 문자열과 동일한 구문과 규칙을 따릅니다.
[in] ap
Aspect에 따라 출력값에서 형식을 지정할 인수 목록입니다.
반환 값
WEAVE_NO_ERROR
메서드가 성공한 경우.
other
기본 TLV화자 메서드 WriteElementHead 또는 GetNewBuffer 호출에 실패하면 오류가 호출 스택에 즉시 전달됩니다.

공개 정적 함수

완료 PacketBuffer

WEAVE_ERROR FinalizePacketBuffer(
  TLVWriter & writer,
  uintptr_t bufHandle,
  uint8_t *bufStart,
  uint32_t dataLen
)

PacketBuffers 체인에의 쓰기를 위한 TLV화자FinalizeBuffer 함수를 구현합니다.

FinalizePacketBuffer() 함수는 TLV화자를 사용하여 PacketBuffers 체인에 쓸 때 필요한 완성을 실행합니다. 이 함수는 GetNewPacketBuffer() 함수와 함께 사용하도록 설계되었습니다.

FinalizePacketBuffer() 함수의 API에 관한 자세한 내용은FinalizeBufferFunct 유형 정의를 참고하세요.

GetNewBuffer_Malloced

WEAVE_ERROR GetNewBuffer_Malloced(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

동적 버퍼에 작성하기 위한 TLVwriter GetNewBuffer 함수의 구현입니다.

GetNewBuffer_Malloced() 함수는 인코딩을 저장하는 데 필요한 기본 동적 버퍼 크기를 두 배로 하여 새로운 출력 공간을 TLVwriter에 제공합니다. 함수는 TLVwriter GetNewBuffer 함수 포인터에 할당되도록 설계되었습니다.

GetNewBuffer_Malloced() 함수의 API에 관한 추가 정보는 GetNewBufferFunct 유형 정의를 참조하세요.

GetNewPacketBuffer

WEAVE_ERROR GetNewPacketBuffer(
  TLVWriter & writer,
  uintptr_t & bufHandle,
  uint8_t *& bufStart,
  uint32_t & bufLen
)

PacketBuffers 체인에 쓰기 위한 TLVWRITE GetNewBuffer 함수의 구현.

GetNewPacketBuffer() 함수는 인코딩을 저장하는 데 필요한 하나 이상의 PacketBuffers 체인을 할당하여 TLVwriter에 새로운 출력 공간을 제공합니다. 함수는 TLVwriter GetNewBuffer 함수 포인터에 할당되도록 설계되었습니다.

NewLV와 함께 GetNewPacketBuffer를 사용할 때는 버퍼 체인을 마무리하기 위해 해당하는 FinalizePacketBuffer() 함수 (또는 이와 동등한 함수)도 사용해야 합니다.

GetNewPacketBuffer() 함수의 API에 관한 추가 정보는 GetNewBufferFunct 유형 정의를 참조하세요.

보호된 함수

IsCloseContainerScheduled

bool IsCloseContainerReserved(
  void
) const 

컨테이너가 시작 / 시작할 때 CloseContainer 기호의 공간을 예약해야 하는지 결정합니다.

IsContainerOpen

bool IsContainerOpen(
  void
) const 

SetCloseContainerScheduled

void SetCloseContainerReserved(
  bool aCloseContainerReserved
)

컨테이너가 시작 / 시작할 때 CloseContainer 기호의 공간을 예약해야 하는지 설정합니다.

SetContainerOpen

void SetContainerOpen(
  bool aContainerOpen
)

쓰기 데이터

WEAVE_ERROR WriteData(
  const uint8_t *p,
  uint32_t len
)

쓰기 요소 헤드

WEAVE_ERROR WriteElementHead(
  TLVElementType elemType,
  uint64_t tag,
  uint64_t lenOrVal
)

쓰기 요소 포함 데이터

WEAVE_ERROR WriteElementWithData(
  TLVType type,
  uint64_t tag,
  const uint8_t *data,
  uint32_t dataLen
)