nl:: Weave:: TLV:: TLVWriter
#include <src/lib/core/WeaveTLV.h>
Weave TLV 形式でデータを書き込むためのメモリ効率の高いエンコーダを提供します。
概要
TLVWriter は、Weave TLV データ用の転送専用のストリーム形式のエンコーダを実装します。アプリケーションは、ライターの Put() メソッドの 1 つを呼び出し、必要に応じて関連するタグや値の情報を渡すことで、エンコードにデータを書き込みます。同様に、アプリケーションは、ライターの OpenContainer() または EnterContainer() メソッドを呼び出して、TLV コンテナタイプ(構造体、配列、パス)をエンコードできます。
TLVWriter オブジェクトは、固定出力バッファ、または 1 つ以上の 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
TLVWriter オブジェクトを初期化して、単一の PacketBuffer に書き込みます。
|
Init(PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
|
void
TLVWriter オブジェクトを初期化して、1 つ以上の PacketBuffers に書き込みます。
|
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 コンテナ要素をエンコードします。このメソッドは、1 回の呼び出しで新しいコンテナ要素全体を書き込み、コンテナのタイプ、タグ、要素をソース エンコードからコピーします。メソッドが戻ると、ライター オブジェクトを使用して、コンテナ要素の後に追加の 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 )
TLVWriter オブジェクトを初期化して、1 つ以上の PacketBuffers に書き込みます。
指定したバッファ内の既存データの最後のバイトの直後に書き込みが開始されます。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 関数ポインタ
詳細 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||||
戻り値 |
|
データに
WEAVE_ERROR Put( uint64_t tag, int8_t v )
TLV 符号付き整数値をエンコードします。
これはオーバーロードされたメンバー関数であり、便宜上提供されています。上記の関数との違いは、受け付ける引数のみです。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
データに
WEAVE_ERROR Put( uint64_t tag, int8_t v, bool preserveSize )
TLV 符号付き整数値をエンコードします。
これはオーバーロードされたメンバー関数であり、便宜上提供されています。上記の関数との違いは、受け付ける引数のみです。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
データに
WEAVE_ERROR Put( uint64_t tag, int16_t v )
データに
WEAVE_ERROR Put( uint64_t tag, int16_t v, bool preserveSize )
データに
WEAVE_ERROR Put( uint64_t tag, int32_t v )
データに
WEAVE_ERROR Put( uint64_t tag, int32_t v, bool preserveSize )
データに
WEAVE_ERROR Put( uint64_t tag, int64_t v )
データに
WEAVE_ERROR Put( uint64_t tag, int64_t v, bool preserveSize )
データに
WEAVE_ERROR Put( uint64_t tag, uint8_t v )
TLV 符号なし整数値をエンコードします。
これはオーバーロードされたメンバー関数であり、便宜上提供されています。上記の関数との違いは、受け付ける引数のみです。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
データに
WEAVE_ERROR Put( uint64_t tag, uint8_t v, bool preserveSize )
TLV 符号なし整数値をエンコードします。
これはオーバーロードされたメンバー関数であり、便宜上提供されています。上記の関数との違いは、受け付ける引数のみです。
詳細 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||
戻り値 |
|
データに
WEAVE_ERROR Put( uint64_t tag, uint16_t v )
データに
WEAVE_ERROR Put( uint64_t tag, uint16_t v, bool preserveSize )
データに
WEAVE_ERROR Put( uint64_t tag, uint32_t v )
データに
WEAVE_ERROR Put( uint64_t tag, uint32_t v, bool preserveSize )
データに
WEAVE_ERROR Put( uint64_t tag, uint64_t v )
データに
WEAVE_ERROR Put( uint64_t tag, uint64_t v, bool preserveSize )
データに
WEAVE_ERROR Put( uint64_t tag, float v )
データに
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 要素が含まれている必要があります(たとえば、構造体メンバーにはタグが必要ですが、配列メンバーにはタグがありません)。
このメソッドは 1 回の呼び出しでコンテナ要素全体をエンコードします。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 は sprintf に類似しており、出力は文字バッファではなく TLV 要素に格納されます。拡張された printf 機能が使用可能な場合、この関数は結果の文字列を不連続な基盤となるストレージに出力できます。この実装では、次の printf の拡張機能がサポートされています。
プラットフォームには、putchar の代わりにカスタム コールバックを呼び出す機能を提供する、コールバック ベースの vcbprintf
が用意されています。
プラットフォームは vsnprintf_ex
という vsnprintf
のバリアントを提供します。これは vsnprintf とまったく同じように動作しますが、出力の最初の n
文字を省略するためのプロビジョニングがあります。
コールバック ベースの関数は最もシンプルで、使用するコードの量も最も少ないものの、さまざまな関数 vsprintf_ex
のほうがスタックの消費量が少なくなります。
上記のいずれも使用できない場合でも、プラットフォームが malloc
を提供している場合、関数は出力を保持するために一時バッファを割り当てます。プラットフォームが printf ファミリーと malloc のどちらの拡張機能も提供していない場合、現在の TLV ストレージの連続状態に収まるように出力が切り捨てられます
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
StartContainer
WEAVE_ERROR StartContainer( uint64_t tag, TLVType containerType, TLVType & outerContainerType )
新しい TLV コンテナ要素のエンコードを開始します。
StartContainer() メソッドは、TLV コンテナ要素(構造、配列、パス)をエンコードに書き込むために使用されます。このメソッドは、新しいコンテナのタイプとタグ(存在する場合)と、TLVType 値への参照を受け取ります。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 は sprintf に類似しており、出力は文字バッファではなく TLV 要素に格納されます。拡張された printf 機能が使用可能な場合、この関数は結果の文字列を不連続な基盤となるストレージに出力できます。この実装では、次の printf の拡張機能がサポートされています。
プラットフォームには、putchar の代わりにカスタム コールバックを呼び出す機能を提供する、コールバック ベースの vcbprintf
が用意されています。
プラットフォームは vsnprintf_ex
という vsnprintf
のバリアントを提供します。これは vsnprintf とまったく同じように動作しますが、出力の最初の n
文字を省略するためのプロビジョニングがあります。
コールバック ベースの関数は最もシンプルで、使用するコードの量も最も少ないものの、さまざまな関数 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() 関数は、エンコードを保存するために必要に応じて基盤となる動的バッファのサイズを 2 倍にすることで、新しい出力空間を 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() 関数は、エンコードを格納するために必要に応じて 1 つ以上の PacketBuffers のチェーンを割り当てることで、TLVWriter に新しい出力スペースを提供します。この関数は、TLVWriter の GetNewBuffer 関数ポインタに割り当てられるように設計されています。
TLVWriter で GetNewPacketBuffer を使用する場合は、対応する 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 )