Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

nl ::織り:: TLV :: TLVReader

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

織りでエンコードされたデータのためのメモリ効率的なパーサ提供TLVのフォーマット。

概要

TLVReaderは織りのための順方向のみ、「プル型」のパーサーを実装TLVのデータを。TLVReaderのオブジェクトは、一連の反復処理するために使用することができるカーソルとして動作TLVの要素とその内容を解釈します。要素上に配置されたとき、アプリケーションは、読者のに電話をかけることができるのGet()現在の要素のタイプとタグを照会するために、任意の関連する値を抽出する方法。読者の次のページ()メソッドは、要素から要素へ前進させるために使用されます。

TLVReaderのオブジェクトは、常に上または後に、前のいずれかに配置されたTLVの要素。最初に初期化するとき、TLVReaderは、符号化の最初の要素の直前に配置されています。読み取りを開始するために、アプリケーションが最初にコールしなければならない次のページ()の最初の要素にリーダーを配置する方法。コンテナ要素がencounteredeither構造である場合、アレイまたはA paththe OpenContainer()またはEnterContainer()メソッドは、容器の内容物を反復処理するために使用することができます。

読者はの終わりに達したときのTLVエンコーディングを、または容器内の最後の要素は、からWEAVE_END_OF_TLVエラーを返すことによって、アプリケーションを通知次に()メソッド。それが再初期化されるまで、読者がWEAVE_END_OF_TLVを返すし続ける、または現在のコンテナが終了する(介しCloseContainer() / ExitContainer() )。

TLVReaderのオブジェクトは、固定された入力バッファから、または1つ以上のPacketBuffersの鎖から直接データを解析することができます。また、アプリケーションは、供給することができGetNextBuffer任意のソース、例えば、Aソケットまたはシリアルポートからリーダーにフィードデータに関数を。

継承

直接既知のサブクラス:
  nl :: Weave :: Profiles :: DataManagement_Current :: CircularEventReader
  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)
読み取り完了のTLVを呼び出した後の容器をOpenContainer() 。
DupBytes (uint8_t *& buf, uint32_t & dataLen)
現在のバイトまたはUTF8文字列の値を含むバッファを割り当てて返します。
DupString (char *& buf)
現在のバイトまたはUTF8文字列のヌル終了値を含むバッファを割り当てて返します。
EnterContainer ( TLVType & outerContainerType)
準備TLVReaderののメンバー読み込むためのオブジェクトをTLVのコンテナ要素を。
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 (constTLVReader & aReader)
void
初期化TLVReaderの別のオブジェクトをTLVReaderのオブジェクト。
Init (const uint8_t *data, uint32_t dataLen)
void
初期化TLVReaderの単一の入力バッファから読み出しすることを目的とします。
Init ( PacketBuffer *buf, uint32_t maxLen)
void
初期化TLVReaderの単一PacketBufferから読み取ることを目的とします。
Init ( PacketBuffer *buf, uint32_t maxLen, bool allowDiscontiguousBuffers)
void
初期化TLVReaderの一つ以上のPacketBuffersから読み取ることを目的とします。
Next (void)
進歩はTLVReaderの次のオブジェクトのTLV要素が読み取られます。
Next ( TLVType expectedType, uint64_t expectedTag)
進歩TLVReaderの次のオブジェクトのTLV要素は、新しい要素のタイプとタグをアサートし、読み取ることができます。
OpenContainer (TLVReader & containerReader)
新しい初期化TLVReaderののメンバー読み取るためのオブジェクトTLVのコンテナ要素を。
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最後を超えた1つのバイトを指しTLVのデータ・バイトは、読者によって消費しました。終了時には、bufStartは新しいの最初のバイトを指すように期待されているTLVの解析されるデータ。新しいポインター値は、以前に消費されたデータと同じバッファー内にある場合もあれば、まったく新しいバッファーを指している場合もあります。
[out] bufLen
関数の数に設定する必要があることを、符号なし整数への参照TLVデータが返されるバイト。入力の終わり場合TLVのデータに達した、この関数はこの値を0に設定する必要があります。
戻り値
WEAVE_NO_ERROR
機能が正常より生成した場合のTLVデータ、または入力データの終わりに達した( bufLenこの場合には0に設定されるべきです)。
other
関数が要求されたデータを生成するのを妨げるエラーが発生したことを示すその他のウィーブまたはプラットフォーム固有のエラーコード。

パブリック属性

アプリデータ

void * AppData

アプリケーション固有のデータに使用できるポインタフィールド。

GetNextBuffer

GetNextBufferFunct GetNextBuffer

以下のための入力データを生成する関数へのポインタTLVReaderのオブジェクト。

NULL(デフォルト値)に設定すると、リーダーはそれ以上入力データが利用できないと想定します。

GetNextBufferは、アプリケーションによっていつでも設定できますが、通常、リーダーが初期化されるときに設定されます。

GetNextBuffer関数の実装の詳細については、GetNextBufferFunct型の定義を参照してください。

ImplicitProfileId

uint32_t ImplicitProfileId

暗黙的な形式でエンコードされたプロファイルタグに使用されるプロファイルID。

読者は暗黙の形で符号化されたプロファイル固有のタグを検出したとき、それはの値使用ImplicitProfileIdタグに対して仮定プロファイルIDとしての性質を。

デフォルトでは、 ImplicitProfileIdプロパティはkProfileIdNotSpecifiedに設定されています。デコード時TLV暗黙的に符号化されたタグを含む、アプリケーションが設定する必要がありImplicitProfileId前の任意の読み取りにTLVのようなタグを有する要素。適切なプロファイル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
)

読み取り完了のTLVを呼び出した後の容器をOpenContainer() 。

CloseContainer()メソッドは、親の状態復元TLVReaderのを呼び出した後、オブジェクトをOpenContainer() 。すべての呼び出しのためOpenContainer()アプリケーションは、に対応するコールしなければならない)CloseContainerを(両方の方法に同一の容器リーダへの参照を渡し。

CloseContainer()戻り、親リーダは、容器を次の最初の要素の直前に配置されています。この時点から、アプリケーションが使用でき次に()任意の残りの要素を介して前進させる方法。

アプリケーションは、近くに呼び出すことができますCloseContainer()にかかわらず、根本的なコンテナ内のすべての要素が読み込まれたかどうかの、任意の時点で親リーダーにします。後CloseContainerは()アプリケーションは、コンテナの読者デ初期化」を検討すべきであると再初期化をすることなく、さらにそれを使用してはならない、と呼ばれてきました。

詳細
パラメーター
[in] containerReader
参照TLVReaderとに供給されたオブジェクトOpenContainer()メソッド。
戻り値
WEAVE_NO_ERROR
メソッドが成功した場合。
WEAVE_ERROR_INCORRECT_STATE
場合OpenContainer()がリーダーで呼び出されていない、コンテナの読者はに渡された1一致しない場合、またはOpenContainer()メソッドを。
WEAVE_ERROR_TLV_UNDERRUN
基礎となる場合TLVのエンコードが途中で終了しました。
WEAVE_ERROR_INVALID_TLV_ELEMENT
読者は、無効またはサポートされていない場合に発生したTLVの要素の型を。
WEAVE_ERROR_INVALID_TLV_TAG
読者が発生した場合にはTLVの無効なコンテキスト内のタグを。
other
構成によって返された他の織物またはプラットフォームエラーコードGetNextBuffer()関数。 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()関数。 GetNextBufferがNULL以外の場合にのみ可能です。

DupString

WEAVE_ERROR DupString(
  char *& buf
)

現在のバイトまたはUTF8文字列のヌル終了値を含むバッファを割り当てて返します。

このメソッドは、現在の位置にあるバイトまたはUTF-8文字列要素に関連付けられたデータのヌル終了コピーのバッファを作成して返します。バッファのメモリは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()関数。 GetNextBufferがNULL以外の場合にのみ可能です。

EnterContainer

WEAVE_ERROR EnterContainer(
  TLVType & outerContainerType
)

準備TLVReaderののメンバー読み込むためのオブジェクトをTLVのコンテナ要素を。

EnterContainer()メソッドは、現在準備TLVReaderのメンバー要素読み込みを開始することを目的とTLVの容器(構造、配列またはパス)。すべての呼び出しについてEnterContainer()アプリケーションがへの対応コールしなければなりませんExitContainerを() 。

場合EnterContainer()が呼び出されTLVReaderのオブジェクトが読み出されるコンテナ要素上に配置されなければなりません。このメソッドは、コンテナーの読み取り中にリーダーのコンテキストを保存するために使用されるTLVType値への参照を引数として取ります。

場合EnterContainer()メソッド戻り、リーダは、容器の最初のメンバーの直前に配置されます。繰り返し呼び出す次は()最後に到達するまで、読者がWEAVE_END_OF_TLVを返します。その時点で、コレクションのメンバーを介してリーダを進めます。

アプリケーションは、コンテナを読み終えた後には、呼び出すことにより、コンテナの後の要素を読み続けることができExitContainer()メソッドを。

詳細
パラメーター
[out] outerContainerType
リーダーのコンテキストを受け取るTLVType値への参照。
戻り値
WEAVE_NO_ERROR
メソッドが成功した場合。
WEAVE_ERROR_INCORRECT_STATE
現在の要素がコンテナ要素に配置されていない場合。

ExitContainer

WEAVE_ERROR ExitContainer(
  TLVType outerContainerType
)

読み取り完了TLVのコンテナをし、準備TLVReaderのコンテナの後に要素を読み取るためにオブジェクトを。

ExitContainer()メソッドは、状態復元TLVReaderのを呼び出した後、オブジェクトをEnterContainer() 。すべての呼び出しについてEnterContainer()アプリケーションは、に対応するコールしなければなりませんExitContainerを()によって返されたコンテキスト値渡し、 EnterContainer()メソッドを。

ExitContainer()戻り、読者は、容器を次の最初の要素の直前に配置されています。この時点から、アプリケーションが使用でき次に()任意の残りの要素を介して前進させる方法。

一旦EnterContainer()が呼び出された、アプリケーションが呼び出すことができExitContainerを()にかかわらず、根本的なコンテナ内のすべての要素が読み込まれたかどうかの、任意の時点でリーダー。

詳細
パラメーター
[in] outerContainerType
返されたTLVType値EnterContainer()メソッド。
戻り値
WEAVE_NO_ERROR
メソッドが成功した場合。
WEAVE_ERROR_INCORRECT_STATE
場合OpenContainer()がリーダーで呼び出されていない、コンテナの読者はに渡された1一致しない場合、またはOpenContainer()メソッドを。
WEAVE_ERROR_TLV_UNDERRUN
基礎となる場合TLVのエンコードが途中で終了しました。
WEAVE_ERROR_INVALID_TLV_ELEMENT
読者は、無効またはサポートされていない場合に発生したTLVの要素の型を。
WEAVE_ERROR_INVALID_TLV_TAG
読者が発生した場合にはTLVの無効なコンテキスト内のタグを。
other
構成によって返された他の織物またはプラットフォームエラーコードGetNextBuffer()関数。 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文字列要素の値を取得します。

必要な入力バッファのサイズを決定するために、呼び出しGETLENGTH()を呼び出す前法)(GetBytesメソッドを

詳細
パラメーター
[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()関数。 GetNextBufferがNULL以外の場合にのみ可能です。

GetContainerType

TLVType GetContainerType(
  void
) const 

その中に容器の種類を返しますTLVReaderが現在読んでいるし。

GetContainerType()メソッドは、のタイプを返しTLVをその内部容器TLVReaderが読んでいるの。場合TLVReaderはの最も外側のレベルに配置されるTLV (最も外側の日以降、すなわち前コードTLVの要素)は、この方法は、kTLVType_NotSpecifiedを返します。

詳細
戻り値
現在のコンテナのTLVType、又はkTLVType_NotSpecified場合TLVReaderは、容器内に配置されていません。

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()関数。 GetNextBufferがNULL以外の場合にのみ可能です。

GetLength

uint32_t GetLength(
  void
) const 

現在関連付けられているデータの長さを返しTLVの要素を。

データ長は、UTF8文字列またはバイト文字列タイプの要素にのみ適用されます。 UTF8文字列の場合、返される値は文字数ではなく、文字列のバイト数です。

詳細
戻り値
現在関連付けられているデータの長さ(バイト単位) TLVの要素、または0現在の要素がUTF8文字列またはバイト文字列でない場合、またはリーダーが要素上に配置されていない場合。

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で終了する文字列として取得します。

必要な入力バッファのサイズを決定するために、呼び出しGETLENGTH()を呼び出す前法)(GetBytesメソッドを。入力バッファは、ヌル文字に対応するために、文字列の長さより少なくとも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()関数。 GetNextBufferがNULL以外の場合にのみ可能です。

GetTag

uint64_t GetTag(
  void
) const 

現在関連付けられたタグを返しTLVの要素を。

返される値のgetTag()がタグユーティリティ関数と共に使用することができる( IsProfileTag() 、 IsContextTag() 、 ProfileIdFromTag()等)は、タグの種類を決定し、様々なタグフィールドの値を抽出します。

詳細
戻り値
現在に関連付けられたタグの情報を含む符号なし整数のTLV要素。

GetType

TLVType GetType(
  void
) const 

現在のタイプを返しTLVの要素を。

詳細
戻り値
現在のデータタイプ記述TLVType値TLVの要素。読者が上に配置されていない場合のTLV要素、戻り値はkTLVType_NotSpecifiedあろう。

初期化

void Init(
  const TLVReader & aReader
)

初期化TLVReaderの別のオブジェクトをTLVReaderのオブジェクト。

詳細
パラメーター
[in] aReader
読み取り専用参照TLVReaderからこれを初期化します。

初期化

void Init(
  const uint8_t *data,
  uint32_t dataLen
)

初期化TLVReaderの単一の入力バッファから読み出しすることを目的とします。

詳細
パラメーター
[in] data
含むバッファへのポインタのTLVデータが解析されます。
[in] dataLen
長さのTLVデータが解析されます。

初期化

void Init(
  PacketBuffer *buf,
  uint32_t maxLen
)

初期化TLVReaderの単一PacketBufferから読み取ることを目的とします。

解析はバッファの開始位置(buf-> DataStart())から始まり、バッファ内のデータの終わり(buf-> Datalen()で示される)またはmaxLenバイトが解析されるまで続きます。

詳細
パラメーター
[in] buf
含有PacketBufferへのポインタのTLVデータが解析されます。
[in] maxLen
解析するバイトの最大値。デフォルトは、入力バッファー内のデータ量です。

初期化

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

初期化TLVReaderの一つ以上のPacketBuffersから読み取ることを目的とします。

解析は、初期バッファーの開始位置(buf-> DataStart())から始まります。 allowDiscontiguousBuffersがtrueの場合、読者は彼らによってリンクされたバッファのチェーンを進める次の()のポインタ。解析は、バッファチェーン内のすべてのデータが消費されるまで(buf-> Datalen()で示されるように)、またはmaxLenバイトが解析されるまで続行されます。

詳細
パラメーター
[in] buf
含有PacketBufferへのポインタのTLVデータが解析されます。
[in] maxLen
解析するバイトの最大値。デフォルトは、入力バッファチェーン内のデータの合計量です。
[in] allowDiscontiguousBuffers
trueの場合、現在のバッファー内のすべてのデータが消費されたら、チェーン内の次のバッファーに進みます。 falseの場合、初期バッファーの終わりで解析を停止します。

WEAVE_ERROR Next(
  void
)

進歩はTLVReaderの次のオブジェクトのTLV要素が読み取られます。

次に()メソッド位置の次の要素にリーダーオブジェクトTLV同じ包含コンテキストでその存在をコードします。具体的には、読者はの最も外側のレベルに位置している場合にTLVを呼び出し、エンコーディング()次に、次の、最上位要素を読者に進めます。リーダーが内部に配置されている場合TLVの呼び出し、コンテナ要素(構造、配列またはパス) 次に()を容器の次部材要素を読者に進めます。

以来、 次に()を呼び出して、現在の封じ込めコンテキストにリーダ運動を拘束次へ()が最初に到達するまで、リーダは、コンテナ要素上に配置されたときは、そのメンバー要素(及び任意のネストされたコンテナのメンバー)をスキップし、容器の上に進めますコンテナの後の要素。

特定の封じ込めコンテキスト内のさらなる要素が存在しない場合に次のページ()メソッドは、返され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
読者は、暗黙的に符号化された発生した場合TLVの対応するプロファイルIDが未知であるタグ。
other
構成によって返された他の織物またはプラットフォームエラーコードGetNextBuffer()関数。 GetNextBufferがNULL以外の場合にのみ可能です。

WEAVE_ERROR Next(
  TLVType expectedType,
  uint64_t expectedTag
)

進歩TLVReaderの次のオブジェクトのTLV要素は、新しい要素のタイプとタグをアサートし、読み取ることができます。

次に(TLVType expectedType、uint64_tをexpectedTag)メソッドは、同じ挙動有する便利な方法である)次に(だけでなく、新規のタイプとタグことを確認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()関数。 GetNextBufferがNULL以外の場合にのみ可能です。

OpenContainer

WEAVE_ERROR OpenContainer(
  TLVReader & containerReader
)

新しい初期化TLVReaderののメンバー読み取るためのオブジェクトTLVのコンテナ要素を。

OpenContainer()メソッドは、新しい初期化TLVReaderのメンバー要素読み取るためのオブジェクトTLVの容器(構造、配列またはパス)。場合OpenContainer()が呼び出され、現在のTLVReaderのオブジェクトが読み取られるコンテナ要素上に配置されなければなりません。このメソッドは、コンテナーを読み取るために初期化される新しいリーダーへの参照を唯一の引数として取ります。その上に、リーダながら読者は、容器のリーダーとして知られているOpenContainer()は、親リーダとして知られて呼ばれています。

場合OpenContainer()メソッド戻り、容器リーダは、容器の最初のメンバーの直前に配置されます。呼び出し次へ()端に到達するまで容器リーダーでは、読者が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の要素。

スキップ()メソッド位置は、リーダーオブジェクトは直ちに現在の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の無効なコンテキスト内のタグを。
other
構成によって返された他の織物またはプラットフォームエラーコードGetNextBuffer()関数。 GetNextBufferがNULL以外の場合にのみ可能です。

PreventEndOfContainer

WEAVE_ERROR VerifyEndOfContainer(
  void
)

TVLReaderオブジェクトはの端にあることを確認TLVの容器。

VerifyEndOfContainer()メソッド検証をもはや存在しないことTLVの電流内に読み取られる要素TLVの容器は。 This is a convenience method that is equivalent to calling Next() and checking for a return value of WEAVE_END_OF_TLV.

詳細
戻り値
WEAVE_NO_ERROR
If there are no further TLV elements to be read.
WEAVE_ERROR_UNEXPECTED_TLV_ELEMENT
If another TLV element was found in the collection.
WEAVE_ERROR_TLV_UNDERRUN
If the underlying TLV encoding ended prematurely.
WEAVE_ERROR_INVALID_TLV_ELEMENT
If the reader encountered an invalid or unsupported TLV element type.
WEAVE_ERROR_INVALID_TLV_TAG
If the reader encountered a TLV tag in an invalid context.
other
Other Weave or platform error codes returned by the configured GetNextBuffer() function. Only possible when GetNextBuffer is non-NULL.

保護された機能

ClearElementState

void ClearElementState(
  void
)

Clear the state of theTLVReader .

This method is used to position the reader before the first TLV , between TLVs or after the last TLV .

ElementType

TLVElementType ElementType(
  void
) const 

This is a private method that returns the TLVElementType from mControlByte.

EnsureData

WEAVE_ERROR EnsureData(
  WEAVE_ERROR noDataErr
)

GetElementHeadLength

WEAVE_ERROR GetElementHeadLength(
  uint8_t & elemHeadBytes
) const 

This is a private method used to compute the length of a TLV element head.

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
)

Skip any data contained in the current TLV by reading over it without a destination buffer.

詳細
戻り値
WEAVE_NO_ERROR
If the reader was successfully positioned at the end of the data.
other
Other Weave or platform error codes returned by the configured GetNextBuffer() function. Only possible when GetNextBuffer is non-NULL.

SkipToEndOfContainer

WEAVE_ERROR SkipToEndOfContainer(
  void
)

VerifyElement

WEAVE_ERROR VerifyElement(
  void
)

Protected static functions

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
)