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::ReceiveRejected

当接收者是发起者时,ReceiveRejected 消息用于拒绝提议的广告交易平台。

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

当发件人是发起人时,SendAccept 消息用于接受建议的广告交易平台。

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

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

nl::Weave::Profiles::BDX_Development::SendRejected

当发件人是发起人时,SendRejected 消息可用于拒绝提议的广告交易平台。

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

类型定义符

Bxx 客户端

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 消息时调用的回调函数。

它的职责是确定您是否要接受该接收,以及接受 aXfer->mIsaccept=true,以便协议向发起方发送接受消息。BDXTransfer 对象会启动到默认设置。非常适合将特定于应用的状态(打开的文件句柄等)附加到 aXfer->mAppState。此时,您还应向 BDXTransfer 对象附加进行区块处理等必要处理程序。如果返回 kStatus_Success 以外的错误代码,则传输会被拒绝,并且协议将使用代码处理拒绝消息的发送。

详细信息
参数
[in] aXfer
指向与此转移作业关联的 BDXTransfer 的指针
[in] aReceiveInitMsg
指向我们正在处理的 ReceiveInit 消息的指针

遭拒处理程序

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->mIsaccept=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 传输是有可能恢复的(可能是暂时的,例如暂时从 PacketBuffer 恢复),因此,调用 Shutdown() 的选项将由应用程序员及其定义的回调决定。TODO:验证这一点并将其与 BDX 文档中的语言保持一致,其中声明:“&A TransferError] 任一方可随时发送,以提前结束批量数据传输。”

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

函数

GetBDXAck 标志

uint16_t GetBDXAckFlag(
  ExchangeContext *anEc
)

GetBDXAckFlag 根据广告交易平台上下文的连接(没有针对 TCP 的请求确认)以及对 WRMP 的编译时支持,为 RequestAck 字段返回适当的标记。

详细信息
参数
[in] anEc
获取标记时所基于的交换上下文
返回值
0 或 kSendFlag_RequestAck