nl::Weave::Profiles::ReferencedTLVData

#include <src/lib/profiles/common/WeaveMessage.h>

同樣地,我們需要能夠表示 TLV 資料中的大型舊 blob。

摘要

繼承

沿用自: nl::Weave::Profiles::RetainedPacketBuffer

建構函式和解構函式

ReferencedTLVData(void)
-------------- TLV 資料定義 --------------

公開類型

TLVWriteCallback)(TLV::TLVWriter &aWriter, void *aAppState) typedef
void(*

公開屬性

theData
uint8_t *
theLength
uint16_t
theMaxLength
uint16_t

公開函式

free(void)
void
釋放 ReferencedTLVData 物件,您只需將其取消定義。
init(System::PacketBuffer *aBuffer)
初始化具有 PacketBuffer 的 ReferencedTLVData 物件。
init(MessageIterator & i)
初始化指定 MessageIteratorReferencedTLVData 物件。
init(uint16_t aLength, uint16_t aMaxLength, uint8_t *aByteString)
指定位元組字串的 ReferencedTLVObject。
init(TLVWriteCallback aWriteCallback, void *anAppState)
根據回呼函式初始化 RefererencedTLVData 物件。
isEmpty(void)
bool
檢查 ReferencedTLVData 物件中是否有任何內容。
isFree(void)
bool
檢查 ReferencedTLVData 物件是否為「免費」,也就是
operator==(const ReferencedTLVData &) const
bool
檢查 ReferencedTLVData 物件並比較另一個物件是否相等。
pack(System::PacketBuffer *buff)
ReferencedTLVData 物件直接封裝至 PacketBuffer。
pack(MessageIterator & i, uint32_t maxLen)
packedLength(void)
uint16_t
系統會假設物件已封裝至緩衝區中,才傳回資料長度。

公開的靜態函式

parse(System::PacketBuffer *buff, ReferencedTLVData & aTarget)
從提供的 PacketBuffer 剖析 ReferencedTLVData 物件。
parse(MessageIterator & i, ReferencedTLVData & aTarget)
從提供的 MessageIterator 剖析 ReferencedTLVData 物件。

公開類型

TLVWriteCallback

void(* TLVWriteCallback)(TLV::TLVWriter &aWriter, void *aAppState)

公開屬性

theData

uint8_t * theData

theLength

uint16_t theLength

theMaxLength

uint16_t theMaxLength

公開函式

ReferencedTLVData

 ReferencedTLVData(
  void
)

-------------- TLV 資料定義 --------------

TLV 資料的無引數建構函式。提供自由/未初始化的物件,此物件必須依循此處定義的其中一個 init() 方法,才算有用。

免費

void free(
  void
)

釋放 ReferencedTLVData 物件,您只需將其取消定義。

init

WEAVE_ERROR init(
  System::PacketBuffer *aBuffer
)

初始化具有 PacketBuffer 的 ReferencedTLVData 物件。

針對具有完整 TLV 的緩衝區初始化 ReferencedTLVData 物件。上述情況假設緩衝區「只有」包含 TLV

詳細資料
參數
[in] aBuffer
TLV 所在的訊息緩衝區。
傳回值
WEAVE_NO_ERROR
無條件

init

WEAVE_ERROR init(
  MessageIterator & i
)

初始化指定 MessageIteratorReferencedTLVData 物件。

初始化指定 MessageIteratorReferencedTLVData 物件。在此情況下,TLV 就是緩衝區的最後一個部分,我們會傳遞指向該緩衝區的訊息疊代器。

詳細資料
參數
[in] i
指向要擷取 TLV 的訊息疊代器。
傳回值
WEAVE_NO_ERROR
無條件

init

WEAVE_ERROR init(
  uint16_t aLength,
  uint16_t aMaxLength,
  uint8_t *aByteString
)

指定位元組字串的 ReferencedTLVObject。

使用內含 TLV 的位元組字串初始化 ReferencedTLVData 物件。如果沒有 PacketrBuffer,我們會使用這個初始化器來建立封裝和傳送。

詳細資料
參數
[in] aLength
TLV 資料長度
[in] aMaxLength
緩衝區總長度
[in] aByteString
字串資料的指標
傳回值
WEAVE_NO_ERROR
無條件

init

WEAVE_ERROR init(
  TLVWriteCallback aWriteCallback,
  void *anAppState
)

根據回呼函式初始化 RefererencedTLVData 物件。

初始化 ReferencedTLVData 物件。這個版本不會明確提供資料,而是在需要封裝和傳送參照資料時,提供函式、寫入回呼和參照物件,這個物件會連同 TLVWriter 物件一併傳遞至該物件。該回呼的簽名為:

typedef void (*TLVWriteCallback)(TLV::TLVWriter &aWriter, void *aAppState);

詳細資料
參數
[in] aWriteCallback
要在寫入 TLV 時呼叫的函式。
[in] anAppState
要連同寫入者傳遞至回呼的應用程式狀態物件。
傳回值
WEAVE_NO_ERROR
成功時。
WEAVE_ERROR_INVALID_ARGUMENT
未提供寫入回呼。

空白

bool isEmpty(
  void
)

檢查 ReferencedTLVData 物件中是否有任何內容。

這類物件有以下兩種可能的方式例如文字、圖片、模型可以長度為 0,「或是」無法寫入回呼。

詳細資料
傳回
如果資料集長度為 0 或目前沒有寫入回呼,傳回 true,否則傳回 false。

isFree

bool isFree(
  void
)

檢查 ReferencedTLVData 物件是否為「免費」,也就是

未定義。

詳細資料
傳回
如果物件未定義,則為 true,否則傳回 false。

運算子==

bool operator==(
  const ReferencedTLVData &
) const 

檢查 ReferencedTLVData 物件並比較另一個物件是否相等。

請注意,只有在兩個物件具備實際資料,且由緩衝區或字串支援時,才適合使用這個方法。

詳細資料
參數
[in] Another
要檢查的物件
傳回值
true
物件相等。
false
物件字串不相等。

WEAVE_ERROR pack(
  System::PacketBuffer *buff
)

ReferencedTLVData 物件直接封裝至 PacketBuffer。

詳細資料
參數
[in] buff
要填滿的緩衝區。
傳回
WEAVE_ERROR 表示基礎 pack 呼叫成功。

WEAVE_ERROR pack(
  MessageIterator & i,
  uint32_t maxLen
)

packedLength

uint16_t packedLength(
  void
)

系統會假設物件已封裝至緩衝區中,才傳回資料長度。

詳細資料
傳回
已封裝資料的整數長度。

公開的靜態函式

parse

WEAVE_ERROR parse(
  System::PacketBuffer *buff,
  ReferencedTLVData & aTarget
)

從提供的 PacketBuffer 剖析 ReferencedTLVData 物件。

ReferencedTLVData 物件從內緩衝區剖析 (假設該物件僅包含 TLV)。

詳細資料
參數
[in] buff
要讀取的緩衝區
[out] aTarget
要「填入」的 ReferencedTLVData 物件結果。
傳回
WEAVE_ERROR 表示基礎剖析呼叫成功。

parse

WEAVE_ERROR parse(
  MessageIterator & i,
  ReferencedTLVData & aTarget
)

從提供的 MessageIterator 剖析 ReferencedTLVData 物件。

MessageIterator 物件剖析 ReferenceTLVData 物件,該物件會假設為位於訊息的 TLV 部分。

請注意,系統不會顯示實際的「剖析」會執行此作業,因為 TLV 會留在緩衝區中,並未進行任何操作。這個方法主要只設定 ReferencedTLVData 結構,供日後使用。

詳細資料
參數
[in] i
剖析訊息的疊代器。
[out] aTarget
要放入剖析結果的位置。
傳回值
WEAVE_NO_ERROR
無條件