nl::Weave::Profiles::BDX_Development

此命名空间包括 Weave 中用于批量数据传输 (BDX) 配置文件的所有接口,这些接口正处于开发阶段,不应用于生产用途。

摘要

枚举

@80 枚举
@81 枚举
@82 枚举
@83 枚举

类型定义符

BdxClient typedef
BdxServer typedef
ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode) typedef
void(*
每当发生 Weave 错误,而该错误无法通过错误代码直接返回至用户应用定义的控制流时,系统就会调用该处理程序。
GetBlockHandler)(BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock) typedef
void(*
Get a block of data to be transmitted.
PutBlockHandler)(BDXTransfer *aXfer, uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock) typedef
void(*
处理由长度为 aLength 的 aDataBlock 所指向的数据块。
ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg) typedef
在目的地接受先前发送的 ReceiveInit 时调用的回调。
ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg) typedef
uint16_t(*
收到 ReceiveInit 消息时调用的回调。
RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport) typedef
void(*
如果之前有一条 Init 消息被目的地拒绝,则调用该方法。
SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg) typedef
在目的地接受先前发送的 SendInit 时调用的回调。
SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg) typedef
uint16_t(*
收到 SendInit 消息时调用的回调。
XferDoneHandler)(BDXTransfer *aXfer) typedef
void(*
处理转移完成的情况。
XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError) typedef
void(*
处理 BDX 接收或发送的 TransferError 消息。

函数

GetBDXAckFlag(ExchangeContext *anEc)
uint16_t
GetBDXAckFlag 根据交换上下文的连接(TCP 无请求确认)和 WRMP 的编译时支持为 RequestAck 字段返回适当的标记。

nl::Weave::Profiles::BDX_Development::BdxNode
nl::Weave::Profiles::BDX_Development::BlockAck

BlockAck 消息用于确认数据块。

nl::Weave::Profiles::BDX_Development::BlockAckV1

BlockAckV1 消息用于确认数据块。

nl::Weave::Profiles::BDX_Development::BlockEOF

BlockEOF 消息用于将最后一个数据块从发送者传输到接收者。

nl::Weave::Profiles::BDX_Development::BlockEOFAck

BlockEOFAck 消息用于确认最后一个数据块。

nl::Weave::Profiles::BDX_Development::BlockEOFAckV1

BlockEOFAckV1 消息用于确认最后一个数据块。

nl::Weave::Profiles::BDX_Development::BlockEOFV1

BlockEOFV1 消息用于将最后一个数据块从发送者传输到接收者。

nl::Weave::Profiles::BDX_Development::BlockQuery

BlockQuery 消息用于请求将一块数据从发送方传输到接收器。

nl::Weave::Profiles::BDX_Development::BlockQueryV1

BlockQueryV1 消息用于请求将一块数据从发送者传输到接收者。

nl::Weave::Profiles::BDX_Development::BlockSend

BlockSend 消息用于将数据块从发送者传输到接收者。

nl::Weave::Profiles::BDX_Development::BlockSendV1

BlockSendV1 消息用于将数据块从发送者传输到接收者。

nl::Weave::Profiles::BDX_Development::ReceiveAccept

当接收方是发起者时,ReceiveAccept 消息用于接受提议的交换。

nl::Weave::Profiles::BDX_Development::ReceiveInit

当接收方是发起方时,ReceiveInit 消息用于发起交换。

nl::Weave::Profiles::BDX_Development::ReceiveReject

如果发送者是发起者,则 ReceiveReject 消息用于拒绝提议的广告交易平台对话。

nl::Weave::Profiles::BDX_Development::SendAccept

如果发送者是发起者,则 SendAccept 消息用于接受提议的交换。

nl::Weave::Profiles::BDX_Development::SendInit

SendInit 消息可用于在发送者是发起者时发起交换。

nl::Weave::Profiles::BDX_Development::SendReject

如果发送者是发起者,则 SendReject 消息用于拒绝提议的换行。

nl::Weave::Profiles::BDX_Development::TransferError

错误消息用于报告错误和取消交换。

结构体

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

此结构包含表示有效 BDX 传输的数据成员。

命名空间

nl::Weave::Profiles::BDX_Development::BdxProtocol

枚举

@80

 @80

@81

 @81

@82

 @82

@83

 @83

类型定义符

BdxClient

BdxNode BdxClient

BdxServer

BdxNode BdxServer

ErrorHandler

void(* ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode)

每当发生 Weave 错误,而该错误无法通过错误代码直接返回至用户应用定义的控制流时,系统就会调用该处理程序。

也就是说,如果在签名返回类型为 void(例如,响应传入的 Weave 消息,甚至由协议分派)的其他处理程序中出现错误,则会调用此处理程序,以便用户确定是否可以恢复传输并继续,或者他们是否应调用 Shutdown()。请注意,在 BDXTransfer 初始化过多(例如,传输对象过多)之前,有可能出现错误。在这种情况下,Weave 将记录上述错误,协议将清理其分配的任何必要状态。

具体说明
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针
[in] anErrorCode
我们需要处理的错误代码

GetBlockHandler

void(* GetBlockHandler)(BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock)

Get a block of data to be transmitted.

调用方提供缓冲空间(缓冲区和缓冲区长度,以引用方式传入)。被调用方(用户应用)应使用提供的缓冲区,但出于向后兼容性方面的原因,可以返回自己的缓冲区。被调用方提供的总字节数不得超过 aLength。返回时,aLength 包含读入缓冲区的实际字节数。

具体说明
参数
[in] aXfer
与此正在进行的转账关联的 BDXTransfer
[in,out] aLength
在此块中读取和存储的数据的长度。调用该函数时,其中包含传入 aDataBlock 的缓冲区的长度。返回时,该变量包含实际读取的数据长度。
[in,out] aDataBlock
指向数据块的指针。在输入时,它包含框架提供的缓冲区;被调用方可以使用该空间填充缓冲区,或提供自己的缓冲空间(对于向后兼容的应用)。使用提供的缓冲区的应用不得假定任何对齐方式。
[out] aLastBlock
如果块应作为 BlockEOF 发送且传输已完成,则为 true,否则为 false

PutBlockHandler

void(* PutBlockHandler)(BDXTransfer *aXfer, uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock)

处理由长度为 aLength 的 aDataBlock 所指向的数据块。

这可能需要将其写入一个文件,并在 isLastBlock 为 true 时关闭该文件。

具体说明
参数
[in] aXfer
与此正在进行的转账关联的 BDXTransfer
[in] aLength
在指定块中读取和存储的数据的长度
[in] aDataBlock
实际的数据块
[in] aLastBlock
如果块是作为 BlockEOF 接收的,并且传输已完成,则为 true,否则为 false。如果为 true,程序员可能应该最终确定所有文件句柄,请记住,XferDoneHandler 将在此操作之后调用

ReceiveAcceptHandler

WEAVE_ERROR(* ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg)

在目的地接受先前发送的 ReceiveInit 时调用的回调。

如果您在开始转移时没有打开文件,或为转移分配资源。

具体说明
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针
[in] aReceiveAcceptMsg
指向我们正在处理的 ReceiveAccept 消息的指针

ReceiveInitHandler

uint16_t(* ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg)

收到 ReceiveInit 消息时调用的回调。

它的作用是确定您是否要接受 Receive,如果是,则设置 aXfer->mIsAccepted=true,以便协议向发起者发送接受消息。BDXTransfer 对象会启动为默认设置。此时非常适合将任何应用特定状态(打开文件句柄等)附加到 aXfer->mAppState。此时,您还应将必需的处理程序(例如块处理)附加到 BDXTransfer 对象。如果返回除 kStatus_Success 以外的错误代码,系统会假定传输被拒绝,并且协议将处理发送包含该代码的拒绝消息。

具体说明
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针
[in] aReceiveInitMsg
一个指针,指向我们正在处理的 ReceiveInit 消息

RejectHandler

void(* RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport)

如果之前有一条 Init 消息被目的地拒绝,则调用该方法。

具体说明
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针
[in] aReport
指向我们正在处理的 StatusReport 消息遭拒的指针

SendAcceptHandler

WEAVE_ERROR(* SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg)

在目的地接受先前发送的 SendInit 时调用的回调。

如果您在开始转移时没有打开文件,或为转移分配资源。

具体说明
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针
[in] aSendAcceptMsg
一个指针,指向我们正在处理的 SendAccept 消息

SendInitHandler

uint16_t(* SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg)

收到 SendInit 消息时调用的回调。

它的任务是确定您是否要接受 SendInit,如果接受,则设置 aXfer->mIsAccepted=true,以便协议向发起者发送接受消息。BDXTransfer 对象会启动为默认设置。此时非常适合将任何应用特定状态(打开文件句柄等)附加到 aXfer->mAppState。此时,您还应将必需的处理程序(例如块处理)附加到 BDXTransfer 对象。如果返回除 WEAVE_NO_ERROR 以外的错误代码,系统会认为传输被拒绝,并且协议将处理发送包含该代码的拒绝消息。

具体说明
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针
[in] aSendInitMsg
一个指针,指向我们正在处理的 SendInit 消息

XferDoneHandler

void(* XferDoneHandler)(BDXTransfer *aXfer)

处理转移完成的情况。

具体说明
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针

XferErrorHandler

void(* XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError)

处理 BDX 接收或发送的 TransferError 消息。

注意:系统会假定 BDX 传输是可恢复的(可能是暂时的,例如暂时从 PacketBuffers 输出),因此调用 Shutdown() 的选项由应用编程人员及其定义的回调决定。TODO:对此进行核实,并使其与 BDX 文档中的语言保持一致,该文档中声明:“[A TransferError] 任一方随时可发送用于提前结束批量数据传输。”

具体说明
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针
[in] aXferError
指向我们正在处理的 StatusReport 消息错误的指针

函数

GetBDXAckFlag

uint16_t GetBDXAckFlag(
  ExchangeContext *anEc
)

GetBDXAckFlag 根据交换上下文的连接(TCP 无请求确认)和 WRMP 的编译时支持为 RequestAck 字段返回适当的标记。

具体说明
参数
[in] anEc
我们应根据什么交换上下文获取标记
返回值
0 或 kSendFlag_RequestAck