nl::Weave::Profiles::BDX_Development::BDXTransfer

#include <src/lib/profiles/bulk-data-transfer/Development/BDXTransferState.h>

這個結構包含代表進行中的 BDX 移轉作業的資料成員。

摘要

BdxProtocol 會使用這些物件來維護通訊協定狀態。這些金鑰由 BdxServer 管理,負責建立及初始化新移轉作業,包括管理連線和 ExchangeContext。

公開屬性

mAmInitiator
bool
mAmSender
bool
mAppState
void *
mBlockCounter
uint32_t
傳輸作業正式開始後,我們預期在傳送時會收到下一個區塊編號:BlockQuery 或 BlockACK。
mBytesSent
uint64_t
mExchangeContext
mFileDesignator
檔案/封鎖相關資料成員 TODO:要移除嗎?還是應該先建立合約,說明這個字串可能是什麼樣子?用途為何?具體來說,它是由 PacketBuffer 提供支援嗎?如果是的話,這應該不會讓整個 XF 留在車上,因為這會佔用大便
mFirstQuery
bool
mHandlers
mIsAccepted
bool
mIsCompletedSuccessfully
bool
mIsInitiated
bool
mIsWideRange
bool
mLength
uint64_t
mMaxBlockSize
uint16_t
mNext)(BDXTransfer &)
mStartOffset
uint64_t
mTransferMode
uint8_t
mVersion
uint8_t

公開函式

DispatchErrorHandler(WEAVE_ERROR anErrorCode)
void
如果已設定錯誤處理常式,請呼叫該程式。
DispatchGetBlockHandler(uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock)
void
如果已設定 get 區塊處理常式,請呼叫該處理常式。
DispatchPutBlockHandler(uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock)
void
如果已設定 put 處理常式,請呼叫該處理常式。
DispatchReceiveAccept(ReceiveAccept *aReceiveAcceptMsg)
調度員只需檢查處理常式是否已設定,然後在已經設定的情況下呼叫它即可。
DispatchRejectHandler(StatusReport *aReport)
void
如果已設定拒絕處理常式,請呼叫該處理常式。
DispatchSendAccept(SendAccept *aSendAcceptMsg)
如果已設定 send 接受處理常式,請呼叫該程式。
DispatchXferDoneHandler(void)
void
如果已設定轉移完成的處理常式,請呼叫該處理常式。
DispatchXferErrorHandler(StatusReport *aXferError)
void
如果已設定轉移錯誤處理常式,請呼叫該處理常式。
GetDefaultFlags(bool aExpectResponse)
uint16_t
這個函式會傳回要與訊息一併傳送的預設標記。
IsAsync(void)
bool
 Returns true if this transfer is asynchronous, false otherwise.
IsDriver(void)
bool
 Returns true if this entity (node) is the driver for this transfer, false otherwise.
Reset(void)
void
 Sets all pointers to NULL, resets counters, etc.
SetHandlers(BDXHandlers aHandlers)
void
這個函式會為這個 BDXTransfer 物件設定處理常式。
Shutdown(void)
void
 Shuts down the current transfer, including closing any open ExchangeContext.

公開屬性

mAmInitiator

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::mAmInitiator

mAmSender

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::mAmSender

mAppState

void * nl::Weave::Profiles::BDX_Development::BDXTransfer::mAppState

mBlockCounter

uint32_t nl::Weave::Profiles::BDX_Development::BDXTransfer::mBlockCounter

傳輸作業正式開始後,我們預期在傳送時會收到下一個區塊編號:BlockQuery 或 BlockACK。

收到後,它應該是我們預計收到的下一個 BlockSend 或最新的 BlockQuery (在傳輸作業正式啟動並送出第一項查詢後)。

mBytesSent

uint64_t nl::Weave::Profiles::BDX_Development::BDXTransfer::mBytesSent

mExchangeContext

ExchangeContext * nl::Weave::Profiles::BDX_Development::BDXTransfer::mExchangeContext

mFileDesignator

ReferencedString nl::Weave::Profiles::BDX_Development::BDXTransfer::mFileDesignator

檔案/封鎖相關資料成員 TODO:要移除嗎?還是應該先建立合約,說明這個字串可能是什麼樣子?用途為何?具體來說,它是由 PacketBuffer 提供支援嗎?如果是的話,這應該不會讓整個 XF 留在車上,因為這會佔用大便

mFirstQuery

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::mFirstQuery

mHandlers

BDXHandlers nl::Weave::Profiles::BDX_Development::BDXTransfer::mHandlers

mIsAccepted

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::mIsAccepted

mIsCompletedSuccessfully

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::mIsCompletedSuccessfully

mIsInitiated

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::mIsInitiated

mIsWideRange

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::mIsWideRange

mLength

uint64_t nl::Weave::Profiles::BDX_Development::BDXTransfer::mLength

mMaxBlockSize

uint16_t nl::Weave::Profiles::BDX_Development::BDXTransfer::mMaxBlockSize

mNext

WEAVE_ERROR(* nl::Weave::Profiles::BDX_Development::BDXTransfer::mNext)(BDXTransfer &)

mStartOffset

uint64_t nl::Weave::Profiles::BDX_Development::BDXTransfer::mStartOffset

mTransferMode

uint8_t nl::Weave::Profiles::BDX_Development::BDXTransfer::mTransferMode

mVersion

uint8_t nl::Weave::Profiles::BDX_Development::BDXTransfer::mVersion

公開函式

DispatchErrorHandler

void nl::Weave::Profiles::BDX_Development::BDXTransfer::DispatchErrorHandler(
  WEAVE_ERROR anErrorCode
)

如果已設定錯誤處理常式,請呼叫該程式。

如果未設定,請一併關閉轉移作業做為預設行為。

詳細資料
參數
[in] anErrorCode
要處理的錯誤代碼

DispatchGetBlockHandler

void nl::Weave::Profiles::BDX_Development::BDXTransfer::DispatchGetBlockHandler(
  uint64_t *aLength,
  uint8_t **aDataBlock,
  bool *aLastBlock
)

如果已設定 get 區塊處理常式,請呼叫該處理常式。

詳細資料
參數
[in] aLength
區塊長度
[in] aDataBlock
指向資料區塊的指標
[in] aLastBlock
如果這是傳輸中的最後一個區塊,則為 True

DispatchPutBlockHandler

void nl::Weave::Profiles::BDX_Development::BDXTransfer::DispatchPutBlockHandler(
  uint64_t aLength,
  uint8_t *aDataBlock,
  bool aLastBlock
)

如果已設定 put 處理常式,請呼叫該處理常式。

詳細資料
參數
[in] aLength
區塊長度
[in] aDataBlock
指向資料區塊的指標
[in] aLastBlock
如果這是傳輸中的最後一個區塊,則為 True

DispatchReceiveAccept

WEAVE_ERROR nl::Weave::Profiles::BDX_Development::BDXTransfer::DispatchReceiveAccept(
  ReceiveAccept *aReceiveAcceptMsg
)

調度員只需檢查處理常式是否已設定,然後在已經設定的情況下呼叫它即可。

如果已設定接受處理常式,請呼叫該處理常式。

因此,這些呼叫應做為呼叫回呼的公用介面,而該介面不得直接由應用程式外輕觸。未來的 BDXTransfer 有可能在使用委派物件的情況下,可能會使用委派物件,而不是儲存每個回呼的個別指標。

詳細資料
參數
[in] aReceiveAcceptMsg
「Receive」ReceiveAccept訊息尚待處理
傳回
錯誤值

DispatchRejectHandler

void nl::Weave::Profiles::BDX_Development::BDXTransfer::DispatchRejectHandler(
  StatusReport *aReport
)

如果已設定拒絕處理常式,請呼叫該處理常式。

如果未設定,請一併關閉轉移作業做為預設行為。

詳細資料
參數
[in] aReport
待處理的 StatusReport 訊息

DispatchSendAccept

WEAVE_ERROR nl::Weave::Profiles::BDX_Development::BDXTransfer::DispatchSendAccept(
  SendAccept *aSendAcceptMsg
)

如果已設定 send 接受處理常式,請呼叫該程式。

詳細資料
參數
[in] aSendAcceptMsg
SendAccept 訊息尚待處理
傳回
錯誤值

DispatchXferDoneHandler

void nl::Weave::Profiles::BDX_Development::BDXTransfer::DispatchXferDoneHandler(
  void
)

如果已設定轉移完成的處理常式,請呼叫該處理常式。

如果未設定,請一併關閉轉移作業做為預設行為。

DispatchXferErrorHandler

void nl::Weave::Profiles::BDX_Development::BDXTransfer::DispatchXferErrorHandler(
  StatusReport *aXferError
)

如果已設定轉移錯誤處理常式,請呼叫該處理常式。

如果未設定,請一併關閉轉移作業做為預設行為。

詳細資料
參數
[in] aXferError
處理錯誤的狀態報告

GetDefaultFlags

uint16_t nl::Weave::Profiles::BDX_Development::BDXTransfer::GetDefaultFlags(
  bool aExpectResponse
)

這個函式會傳回要與訊息一併傳送的預設標記。

詳細資料
參數
[in] aExpectResponse
如果我們預期收到這封郵件的回覆,
傳回
要傳送的標記

IsAsync

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::IsAsync(
  void
)

 Returns true if this transfer is asynchronous, false otherwise.

詳細資料
傳回
如果傳輸為非同步,則為 true。

IsDriver

bool nl::Weave::Profiles::BDX_Development::BDXTransfer::IsDriver(
  void
)

 Returns true if this entity (node) is the driver for this transfer, false otherwise.

詳細資料
傳回
如果這個實體是本次轉移作業的驅動因素,則為 true

重設

void nl::Weave::Profiles::BDX_Development::BDXTransfer::Reset(
  void
)

 Sets all pointers to NULL, resets counters, etc.

關機時呼叫。

SetHandlers

void nl::Weave::Profiles::BDX_Development::BDXTransfer::SetHandlers(
  BDXHandlers aHandlers
)

這個函式會為這個 BDXTransfer 物件設定處理常式。

建議您一律使用這個方法,而不是手動設定,因為儲存處理常式函式指標的方式並非公用 API 的一部分。

即可

詳細資料
參數
[in] aHandlers
要呼叫的回呼處理常式結構

關閉

void nl::Weave::Profiles::BDX_Development::BDXTransfer::Shutdown(
  void
)

 Shuts down the current transfer, including closing any open ExchangeContext.

請把握這個機會,釋出與這項移轉作業相關聯的任何資源,以及您的應用程式邏輯。