nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Weave TLV 형식으로 데이터를 쓰기 위한 메모리 효율적인 인코더를 제공합니다.
요약
TLVWriter는 Weave TLV 데이터를 위한 정방향 전용 스트림 스타일 인코더를 구현합니다. 애플리케이션은 작성기의 Put() 메서드 중 하나를 호출하고 필요에 따라 연결된 태그 및 값 정보를 전달하여 데이터를 인코딩에 씁니다. 마찬가지로 애플리케이션은 작성자의 OpenContainer() 또는 EnterContainer() 메서드를 호출하여 TLV 컨테이너 유형(구조, 배열 또는 경로)을 인코딩할 수 있습니다.
TLVWriter 객체는 고정 출력 버퍼 또는 하나 이상의 PacketBuffer 객체 체인에 직접 데이터를 쓸 수 있습니다. 또한 애플리케이션은 자체 GetNewBuffer
및 FinalizeBuffer
함수를 제공하여 임의의 대상(예: 소켓 또는 이벤트 큐에서
사용할 수 있습니다
상속
직접 알려진 서브클래스: nl::Weave::TLV::CircularTLVWriter
보호된 유형 |
|
---|---|
@72{
|
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(*) TLVWriter에 새 출력 버퍼 공간을 제공하는 함수입니다. |
공개 속성 |
|
---|---|
AppData
|
void *
애플리케이션별 데이터에 사용할 수 있는 포인터 필드입니다.
|
FinalizeBuffer
|
TLVWriter가 완료될 때 호출될 함수에 대한 포인터입니다.
|
GetNewBuffer
|
TLVWriter에 새 출력 버퍼 공간을 제공하는 함수에 대한 포인터입니다.
|
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)
|
|
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
하나 이상의 PacketBuffer에 쓰도록 TLVWriter 객체를 초기화합니다.
|
InitMalloced(uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen)
|
void
동적 버퍼에 쓰도록 TLVWriter 객체를 초기화합니다.
|
OpenContainer(uint64_t tag, TLVType containerType, TLVWriter & containerWriter)
|
|
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)
|
PacketBuffer 체인에 쓰기 위한 TLVWriter 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)
|
PacketBuffer 체인에 쓰기 위한 TLVWriter 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
공개 유형
FinalizeBufferFunct
WEAVE_ERROR(* FinalizeBufferFunct)(TLVWriter &writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t bufLen)
TLVWriter 객체에서 출력을 완료하는 데 사용되는 함수입니다.
이 유형의 함수는 TLVWriter의 Finalize() 메서드가 호출될 때 호출됩니다. 이 함수는 작성기 객체의 출력 소비와 관련하여 필요한 정리 또는 완료를 실행해야 합니다. 예를 들면 인코딩의 최종 길이를 기록하거나 파일 설명자를 닫는 작업 등이 있습니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
GetNewBufferFunct
WEAVE_ERROR(* GetNewBufferFunct)(TLVWriter &writer, uintptr_t &bufHandle, uint8_t *&bufStart, uint32_t &bufLen)
TLVWriter에 새 출력 버퍼 공간을 제공하는 함수입니다.
이 유형의 함수는 TLVWriter가 쓸 새 버퍼 공간을 준비하는 데 사용됩니다. 이 함수를 호출하면 관련 최대 길이와 함께 새 데이터를 작성해야 하는 메모리 위치에 대한 포인터가 반환됩니다. 이 함수는 데이터를 보유할 새 버퍼를 할당하거나 기존 버퍼에서 이전에 작성된 데이터를 삭제하여 쓰기 공간을 제공할 수 있습니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
공개 속성
AppData
void * AppData
애플리케이션별 데이터에 사용할 수 있는 포인터 필드입니다.
FinalizeBuffer
FinalizeBufferFunct FinalizeBuffer
TLVWriter가 완료될 때 호출될 함수에 대한 포인터입니다.
TLVWriter 객체는 Finalize() 메서드가 호출될 때마다 FinalizeBuffer 함수를 호출합니다. 애플리케이션은 Finalize()를 호출하기 전 언제든지 함수 포인터를 설정할 수 있습니다. 기본적으로 포인터는 NULL로 설정되므로 Finalize() 메서드가 함수 호출을 건너뜁니다.
FinalizeBuffer 함수 구현에 관한 자세한 내용은 FinalizeBufferFunct 유형 정의를 참고하세요.
GetNewBuffer
GetNewBufferFunct GetNewBuffer
TLVWriter에 새 출력 버퍼 공간을 제공하는 함수에 대한 포인터입니다.
TLVWriter 객체는 현재 출력 버퍼의 크기를 초과하는 데이터를 쓰려고 시도할 때마다 GetNewBuffer 함수를 호출합니다. NULL (기본값)으로 설정된 경우 작성기는 출력 데이터가 현재 버퍼를 오버플로하는 경우 WEAVE_ERROR_NO_MEMORY를 반환합니다.
GetNewBuffer는 애플리케이션이 언제든지 설정할 수 있지만 일반적으로 작성자가 초기화될 때 설정됩니다.
GetNewBuffer 함수 구현에 관한 자세한 내용은 GetNewBufferFunct 유형 정의를 참고하세요.
ImplicitProfileId
uint32_t ImplicitProfileId
암시적 형식으로 인코딩되어야 하는 태그의 프로필 ID입니다.
작성자가 새 요소를 인코딩하라는 요청을 받았을 때 새 요소와 연결된 태그의 프로필 ID가 ImplicitProfileId
멤버의 값과 일치하면 작성자는 프로세스에서 프로필 ID를 생략하고 암시적 형식으로 태그를 인코딩합니다.
기본적으로 ImplicitProfileId
속성은 kProfileIdNotSpecified로 설정되며, 이는 작성자에 암시적으로 인코딩된 태그를 내보내지 않도록 지시합니다. 애플리케이션은 언제든지 ImplicitProfileId
를 설정하여 인코딩의 현재 지점에서 시작하는 암시적 형식의 인코딩 태그를 사용 설정할 수 있습니다. 설정할 적절한 프로필 ID는 일반적으로 말하는 애플리케이션 또는 프로토콜의 컨텍스트에 따라 다릅니다.
보호된 속성
mBufHandle
uintptr_t mBufHandle
mBufStart
uint8_t * mBufStart
mContainerType
TLVType mContainerType
mLenWritten
uint32_t mLenWritten
mMaxLen
uint32_t mMaxLen
mRemainingLen
uint32_t mRemainingLen
mWritePoint
uint8_t * mWritePoint
공개 함수
CloseContainer
WEAVE_ERROR CloseContainer( TLVWriter & containerWriter )
OpenContainer()를 호출한 후 TLV 컨테이너 쓰기를 완료합니다.
CloseContainer() 메서드는 OpenContainer()를 호출한 후 상위 TLVWriter 객체의 상태를 복원합니다. OpenContainer() 애플리케이션을 호출할 때마다 해당하는 CloseContainer()를 호출하여 동일한 컨테이너 작성기에 대한 참조를 두 메서드에 전달해야 합니다.
CloseContainer()가 반환되면 애플리케이션은 상위 작성자를 계속 사용하여 컨테이너 요소 뒤에 표시되는 추가 TLV 요소를 작성할 수 있습니다. 이 시점에서 제공된 컨테이너 작성기는 '초기화되지 않은' 것으로 간주되어야 합니다. 다시 초기화하지 않고 사용하면 안 됩니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
ContinuePutBytes
WEAVE_ERROR ContinuePutBytes( const uint8_t *buf, uint32_t len )
TLV 바이트 문자열 값을 인코딩합니다.
StartPutBytes와 함께 사용해야 합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
CopyContainer
WEAVE_ERROR CopyContainer( TLVReader & container )
TLVReader 객체에서 TLV 컨테이너 요소를 복사합니다.
CopyContainer()는 TLVReader 객체의 현재 위치에 있는 사전 인코딩된 컨테이너 요소를 복사하여 새 TLV 컨테이너 요소를 인코딩합니다. 이 메서드는 한 번의 호출로 새 컨테이너 요소 전체를 쓰고, 소스 인코딩에서 컨테이너의 유형, 태그, 요소를 복사합니다. 메서드가 반환되면 작성기 객체를 사용하여 컨테이너 요소 다음에 추가 TLV 요소를 작성할 수 있습니다.
세부정보 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||||||||
반환 값 |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, TLVReader & container )
사전 인코딩된 멤버 요소 집합에서 TLV 컨테이너 요소를 인코딩합니다.
CopyContainer() 메서드는 TLVReader 객체에서 가져온 멤버 요소 집합을 포함하는 새로운 TLV 컨테이너 요소 (구조, 배열 또는 경로)를 인코딩합니다. 메서드가 호출되면 제공된 리더 객체가 TLV 컨테이너 요소에 배치되어야 합니다. 새로 인코딩된 컨테이너는 입력 컨테이너와 동일한 유형 및 구성원을 갖게 됩니다. 새 컨테이너의 태그가 입력 매개변수로 지정됩니다.
메서드가 반환되면 작성기 객체를 사용하여 컨테이너 요소 다음에 추가 TLV 요소를 작성할 수 있습니다.
세부정보 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||||||||
반환 값 |
|
CopyContainer
WEAVE_ERROR CopyContainer( uint64_t tag, const uint8_t *encodedContainer, uint16_t encodedContainerLen )
사전 인코딩된 컨테이너의 멤버 요소를 포함하는 TLV 컨테이너 요소를 인코딩합니다.
CopyContainer() 메서드는 사전 인코딩된 제공된 컨테이너의 콘텐츠에서 가져온 멤버 요소 집합을 포함하는 새 TLV 컨테이너 요소 (구조, 배열 또는 경로)를 인코딩합니다. 메서드가 호출되면 제공된 입력 버퍼의 데이터가 TLV 컨테이너 요소로 파싱되고, 입력 컨테이너와 동일한 유형과 멤버를 갖는 새 컨테이너가 작성됩니다. 새 컨테이너의 태그가 입력 매개변수로 지정됩니다.
메서드가 반환되면 작성기 객체를 사용하여 컨테이너 요소 다음에 추가 TLV 요소를 작성할 수 있습니다.
세부정보 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||||||
반환 값 |
|
CopyElement
WEAVE_ERROR CopyElement( TLVReader & reader )
판독기 객체의 TLV 요소를 작성기에 복사합니다.
CopyElement() 메서드는 유형, 태그, 값을 TLVReader 객체에서 가져오는 새로운 TLV 요소를 인코딩합니다. 메서드가 호출되면 제공된 리더 객체가 소스 TLV 요소에 배치되어야 합니다. 새로 인코딩된 요소는 입력 컨테이너와 동일한 유형, 태그, 콘텐츠를 갖게 됩니다. 제공된 요소가 TLV 컨테이너 (구조, 배열 또는 경로)인 경우 컨테이너의 전체 콘텐츠가 복사됩니다.
세부정보 | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||||||||
반환 값 |
|
CopyElement
WEAVE_ERROR CopyElement( uint64_t tag, TLVReader & reader )
EndContainer
WEAVE_ERROR EndContainer( TLVType outerContainerType )
TLV 컨테이너 요소의 인코딩을 완료합니다.
EndContainer() 메서드는 TLV 컨테이너 요소의 인코딩을 완료하고 StartContainer()를 이전에 호출한 후 TLVWrite 객체의 상태를 복원합니다. StartContainer()를 호출할 때마다 애플리케이션에서 해당하는 EndContainer()를 호출하여 StartContainer() 호출에서 반환된 TLVType 값을 전달해야 합니다. EndContainer()가 반환되면 작성기 개체를 사용하여 컨테이너 요소 뒤에 오는 추가 TLV 요소를 작성할 수 있습니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
마무리
WEAVE_ERROR Finalize( void )
TLV 인코딩 작성을 완료합니다.
Finalize() 메서드는 TLV 인코딩을 기본 출력 버퍼에 쓰는 프로세스를 완료합니다. 이 메서드는 버퍼의 콘텐츠를 사용하기 전에 애플리케이션에서 호출해야 합니다. 현재 작성기에 열려 있는 컨테이너 작성기가 없는 경우에만 Finalize()를 호출할 수 있습니다. OpenContainer()
를 참고하세요.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
반환 값 |
|
GetContainerType
TLVType GetContainerType( void ) const
GetLengthWritten
uint32_t GetLengthWritten( void )
작성기가 초기화된 이후 쓴 총 바이트 수를 반환합니다.
세부정보 | |
---|---|
반환 |
작성기가 초기화된 이후 쓴 총 바이트 수입니다.
|
Init
void Init( uint8_t *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen )
Init
void Init( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers )
하나 이상의 PacketBuffer에 쓰도록 TLVWriter 객체를 초기화합니다.
지정된 버퍼에 있는 기존 데이터의 마지막 바이트의 직후에 쓰기가 시작됩니다. allowDiscontiguousBuffers
가 true인 경우 작성된 데이터의 양을 수용하기 위해 필요에 따라 추가 PacketBuffer가 할당되어 제공된 버퍼에 연결됩니다. 지정된 출력 버퍼가 이미 버퍼 체인의 헤드인 경우, 새 버퍼가 할당되기 전에 체인의 후속 버퍼에 출력이 작성됩니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
InitMalloced
void InitMalloced( uint8_t *& outBuf, uint32_t initialBufSize, uint32_t maxLen )
동적 버퍼에 쓰도록 TLVWriter 객체를 초기화합니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
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 부호 있는 정수 값을 인코딩합니다.
이는 오버로드된 멤버 함수로, 편의를 위해 제공됩니다. 위의 함수와 허용되는 인수만 다릅니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
Put
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
TLV 부호 있는 정수 값을 인코딩합니다.
이는 오버로드된 멤버 함수로, 편의를 위해 제공됩니다. 위의 함수와 허용되는 인수만 다릅니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
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 정수 값을 인코딩합니다.
이는 오버로드된 멤버 함수로, 편의를 위해 제공됩니다. 위의 함수와 허용되는 인수만 다릅니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
Put
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
부호 없는 TLV 정수 값을 인코딩합니다.
이는 오버로드된 멤버 함수로, 편의를 위해 제공됩니다. 위의 함수와 허용되는 인수만 다릅니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
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 부동 소수점 값을 인코딩합니다.
이는 오버로드된 멤버 함수로, 편의를 위해 제공됩니다. 위의 함수와 허용되는 인수만 다릅니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
PutBoolean
WEAVE_ERROR PutBoolean( uint64_t tag, bool v )
TLV 불리언 값을 인코딩합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
PutBytes
WEAVE_ERROR PutBytes( uint64_t tag, const uint8_t *buf, uint32_t len )
TLV 바이트 문자열 값을 인코딩합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
PutNull
WEAVE_ERROR PutNull( uint64_t tag )
TLV null 값을 인코딩합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
PutPreEncodedContainer
WEAVE_ERROR PutPreEncodedContainer( uint64_t tag, TLVType containerType, const uint8_t *data, uint32_t dataLen )
사전 인코딩된 멤버 요소 집합에서 TLV 컨테이너 요소를 인코딩합니다.
PutPreEncodedContainer() 메서드는 사전 인코딩된 버퍼에서 가져온 멤버 요소 집합을 포함하는 새로운 TLV 컨테이너 요소 (구조, 배열 또는 경로)를 인코딩합니다. 입력 버퍼는 0개 이상의 완전히 인코딩된 TLV 요소를 포함하고, 지정된 컨테이너 유형과 관련된 규칙을 준수하는 태그를 포함해야 합니다 (예: 구조 멤버에는 태그가 있어야 하지만 배열 멤버는 없어야 함).
이 메서드는 한 번의 호출로 컨테이너 요소 전체를 인코딩합니다. PutPreEncodedContainer()가 반환되면 작성기 객체를 사용하여 컨테이너 요소 다음에 추가 TLV 요소를 작성할 수 있습니다.
세부정보 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||||
반환 값 |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf )
TLV UTF8 문자열 값을 인코딩합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
PutString
WEAVE_ERROR PutString( uint64_t tag, const char *buf, uint32_t len )
TLV UTF8 문자열 값을 인코딩합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
PutStringF
WEAVE_ERROR PutStringF( uint64_t tag, const char *fmt, ... )
TLV 요소의 형식에 따라 형식이 지정된 문자열 출력을 인코딩합니다.
PutStringF는 문자 버퍼가 아닌 TLV 요소에 출력이 저장되는 sprintf의 아날로그입니다. 확장된 printf 기능을 사용할 수 있는 경우 이 함수는 결과 문자열을 비연속 기본 저장소에 출력할 수 있습니다. 구현은 다음과 같은 printf 개선사항을 지원합니다.
플랫폼은 putchar 대신 맞춤 콜백을 호출하는 기능을 제공하는 콜백 기반 vcbprintf
를 제공합니다.
플랫폼은 vsnprintf_ex
라는 vsnprintf
의 변형을 제공합니다. 이 변형은 출력의 처음 n
문자를 생략하는 조항이 있다는 점을 제외하고 vsnprintf와 동일하게 동작합니다.
콜백 기반 함수가 가장 간단하고 코드를 가장 적게 사용하지만 vsprintf_ex
다양한 함수는 스택을 더 적게 사용합니다.
위의 두 메서드를 모두 사용할 수 없지만 플랫폼에서 malloc
를 제공하는 경우 이 함수는 출력을 저장할 임시 버퍼를 할당합니다. 플랫폼이 printf 계열이나 malloc에 개선사항을 제공하지 않으면 현재 TLV 저장소의 연속 상태에 맞도록 출력이 잘립니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
새로운 TLV 컨테이너 요소의 인코딩을 시작합니다.
StartContainer() 메서드는 TLV 컨테이너 요소 (구조, 배열, 경로)를 인코딩에 작성하는 데 사용됩니다. 메서드는 새 컨테이너의 유형과 태그 (있는 경우)와 TLVType 값에 대한 참조를 가져옵니다. 이 참조는 컨테이너를 작성하는 데 사용되는 동안 작성자의 현재 컨텍스트를 저장하는 데 사용됩니다.
StartContainer() 메서드가 반환되면 애플리케이션은 현재 TLVWriter 객체를 사용하여 컨테이너의 요소를 작성해야 합니다. 완료되면 애플리케이션에서 EndContainer() 메서드를 호출하여 컨테이너 인코딩을 완료해야 합니다.
세부정보 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||||
반환 값 |
|
StartPutBytes
WEAVE_ERROR StartPutBytes( uint64_t tag, uint32_t totalLen )
TLV 바이트 문자열을 여러 청크로 인코딩합니다.
ContinuePutBytes와 함께 사용해야 합니다.
세부정보 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||||||
반환 값 |
|
VPutStringF
WEAVE_ERROR VPutStringF( uint64_t tag, const char *fmt, va_list ap )
TLV 요소의 형식에 따라 형식이 지정된 문자열 출력을 인코딩합니다.
PutStringF는 문자 버퍼가 아닌 TLV 요소에 출력이 저장되는 sprintf의 아날로그입니다. 확장된 printf 기능을 사용할 수 있는 경우 이 함수는 결과 문자열을 비연속 기본 저장소에 출력할 수 있습니다. 구현은 다음과 같은 printf 개선사항을 지원합니다.
플랫폼은 putchar 대신 맞춤 콜백을 호출하는 기능을 제공하는 콜백 기반 vcbprintf
를 제공합니다.
플랫폼은 vsnprintf_ex
라는 vsnprintf
의 변형을 제공합니다. 이 변형은 출력의 처음 n
문자를 생략하는 조항이 있다는 점을 제외하고 vsnprintf와 동일하게 동작합니다.
콜백 기반 함수가 가장 간단하고 코드를 가장 적게 사용하지만 vsprintf_ex
다양한 함수는 스택을 더 적게 사용합니다.
위의 두 메서드를 모두 사용할 수 없지만 플랫폼에서 malloc
를 제공하는 경우 이 함수는 출력을 저장할 임시 버퍼를 할당합니다. 플랫폼이 printf 계열이나 malloc에 개선사항을 제공하지 않으면 현재 TLV 저장소의 연속 상태에 맞도록 출력이 잘립니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
공개 정적 함수
FinalizePacketBuffer
WEAVE_ERROR FinalizePacketBuffer( TLVWriter & writer, uintptr_t bufHandle, uint8_t *bufStart, uint32_t dataLen )
PacketBuffer 체인에 쓰기 위한 TLVWriter FinalizeBuffer 함수의 구현입니다.
FinalizePacketBuffer() 함수는 TLVWriter를 사용하여 PacketBuffer 체인에 쓸 때 필요한 완료 작업을 수행합니다. 이 함수는 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 )
PacketBuffer 체인에 쓰기 위한 TLVWriter GetNewBuffer 함수의 구현입니다.
GetNewPacketBuffer() 함수는 인코딩을 저장하는 데 필요한 경우 하나 이상의 PacketBuffer 체인을 할당하여 TLVWriter에 새 출력 공간을 제공합니다. 이 함수는 TLVWriter GetNewBuffer 함수 포인터에 할당되도록 설계되었습니다.
GetNewPacketBuffer를 TLVWriter와 함께 사용할 때는 해당하는 FinalizePacketBuffer() 함수 또는 이에 상응하는 함수를 사용하여 버퍼 체인을 완료해야 합니다.
GetNewPacketBuffer() 함수의 API에 대한 자세한 내용은 GetNewBufferFunct 유형 정의를 참조하세요.
보호된 함수
IsCloseContainerReserved
bool IsCloseContainerReserved( void ) const
컨테이너를 시작하거나 여는 시점에 컨테이너가 CloseContainer 기호를 위한 공간을 남겨야 하는지 여부를 결정합니다.
IsContainerOpen
bool IsContainerOpen( void ) const
SetCloseContainerReserved
void SetCloseContainerReserved( bool aCloseContainerReserved )
컨테이너를 시작하거나 여는 시점에 컨테이너가 CloseContainer 기호를 위한 공간을 예약해야 하는지 여부를 설정합니다.
SetContainerOpen
void SetContainerOpen( bool aContainerOpen )
WriteData
WEAVE_ERROR WriteData( const uint8_t *p, uint32_t len )
WriteElementHead
WEAVE_ERROR WriteElementHead( TLVElementType elemType, uint64_t tag, uint64_t lenOrVal )
WriteElementWithData
WEAVE_ERROR WriteElementWithData( TLVType type, uint64_t tag, const uint8_t *data, uint32_t dataLen )