nl:: Weave:: Profiles:: BDX_Development
此命名空间包括 Weave 中用于批量数据传输 (BDX) 配置文件且处于开发阶段且不应用于生产用途的所有接口。
摘要
枚举 |
|
---|---|
@80
|
枚举 |
@81
|
枚举 |
@82
|
枚举 |
@83
|
枚举 |
类型定义符 |
|
---|---|
BdxClient
|
typedef |
BdxServer
|
typedef |
ErrorHandler)(BDXTransfer *aXfer, WEAVE_ERROR anErrorCode)
|
typedefvoid(*
每当遇到 Weave 错误而无法通过错误代码直接返回至用户应用定义的控制流时,系统就会调用此处理程序。 |
GetBlockHandler)(BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock)
|
typedefvoid(*
Get a block of data to be transmitted. |
PutBlockHandler)(BDXTransfer *aXfer, uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock)
|
typedefvoid(*
处理长度为 aLength 的 aDataBlock 指向的数据块。 |
ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg)
|
typedef 当目的地接受先前发送的 ReceiveInit 时调用的回调。 |
ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg)
|
typedefuint16_t(*
收到 ReceiveInit 消息时调用的回调函数。 |
RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport)
|
typedefvoid(*
如果目标位置拒绝了以前的某条 Init 消息,则调用此语句。 |
SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg)
|
typedef 当目的地接受先前发送的 SendInit 时调用的回调。 |
SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg)
|
typedefuint16_t(*
收到 SendInit 消息时调用的回调函数。 |
XferDoneHandler)(BDXTransfer *aXfer)
|
typedefvoid(*
处理转移完成的情况。 |
XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError)
|
typedefvoid(*
处理 BDX 接收或发送的 TransferError 消息。 |
函数 |
|
---|---|
GetBDXAckFlag(ExchangeContext *anEc)
|
uint16_t
GetBDXAckFlag 根据广告交易平台上下文的连接(没有针对 TCP 的请求确认)以及对 WRMP 的编译时支持,为 RequestAck 字段返回适当的标记。
|
结构体 |
|
---|---|
nl:: |
|
nl:: |
此结构包含表示活跃 BDX 传输的数据成员。 |
命名空间 |
|
---|---|
nl:: |
枚举
@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 会记录上述错误,而协议将负责清理它分配的所有必要状态。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
GetBlockHandler
void(* GetBlockHandler)(BDXTransfer *aXfer, uint64_t *aLength, uint8_t **aDataBlock, bool *aLastBlock)
Get a block of data to be transmitted.
调用方提供缓冲空间(缓冲区和缓冲区的长度,通过引用传入)。被调用方(用户应用)应使用提供的缓冲区,但出于向后兼容性方面的原因,可能会返回自己的缓冲区。被调用方提供的字节数不得超过 aLength
。返回时,aLength
会包含读取到缓冲区的实际字节数。
详细信息 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
PutBlockHandler 类中的方法
void(* PutBlockHandler)(BDXTransfer *aXfer, uint64_t aLength, uint8_t *aDataBlock, bool aLastBlock)
处理长度为 aLength 的 aDataBlock 指向的数据块。
这可能需要将其写入文件,并在 isLastBlock 为 true 时关闭上述文件。
详细信息 | |||||||||
---|---|---|---|---|---|---|---|---|---|
参数 |
|
ReceiveAcceptHandler 类中的方法
WEAVE_ERROR(* ReceiveAcceptHandler)(BDXTransfer *aXfer, ReceiveAccept *aReceiveAcceptMsg)
当目的地接受先前发送的 ReceiveInit 时调用的回调。
如果您想在发起转移时打开或分配转移的资源,不妨借此机会打开文件。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
ReceiveInitHandler 类
uint16_t(* ReceiveInitHandler)(BDXTransfer *aXfer, ReceiveInit *aReceiveInitMsg)
收到 ReceiveInit 消息时调用的回调函数。
它的职责是确定您是否要接受该接收,以及接受 aXfer->mIsaccept=true,以便协议向发起方发送接受消息。BDXTransfer 对象会启动到默认设置。非常适合将特定于应用的状态(打开的文件句柄等)附加到 aXfer->mAppState。此时,您还应向 BDXTransfer 对象附加进行区块处理等必要处理程序。如果返回 kStatus_Success 以外的错误代码,则传输会被拒绝,并且协议将使用代码处理拒绝消息的发送。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
遭拒处理程序
void(* RejectHandler)(BDXTransfer *aXfer, StatusReport *aReport)
如果目标位置拒绝了以前的某条 Init 消息,则调用此语句。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
SendAcceptHandler
WEAVE_ERROR(* SendAcceptHandler)(BDXTransfer *aXfer, SendAccept *aSendAcceptMsg)
当目的地接受先前发送的 SendInit 时调用的回调。
如果您想在发起转移时打开或分配转移的资源,不妨借此机会打开文件。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
SendInitHandler
uint16_t(* SendInitHandler)(BDXTransfer *aXfer, SendInit *aSendInitMsg)
收到 SendInit 消息时调用的回调函数。
它的任务是确定您是否想要接受 SendInit,若是则设置 aXfer->mIsaccept=true,以便协议向发起方发送接受消息。BDXTransfer 对象会启动到默认设置。非常适合将特定于应用的状态(打开的文件句柄等)附加到 aXfer->mAppState。此时,您还应向 BDXTransfer 对象附加进行区块处理等必要处理程序。如果返回了除 WEAVE_NO_ERROR 以外的错误代码,那么系统会假定传输遭拒,而协议将使用该代码处理拒绝消息的发送。
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
XferDoneHandler
void(* XferDoneHandler)(BDXTransfer *aXfer)
处理转移完成的情况。
详细信息 | |||
---|---|---|---|
参数 |
|
XferErrorHandler 类中的方法
void(* XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError)
处理 BDX 接收或发送的 TransferError 消息。
注意:系统会假定 BDX 传输是有可能恢复的(可能是暂时的,例如暂时从 PacketBuffer 恢复),因此,调用 Shutdown() 的选项将由应用程序员及其定义的回调决定。TODO:验证这一点并将其与 BDX 文档中的语言保持一致,其中声明:“&A TransferError] 任一方可随时发送,以提前结束批量数据传输。”
详细信息 | |||||
---|---|---|---|---|---|
参数 |
|
函数
GetBDXAck 标志
uint16_t GetBDXAckFlag( ExchangeContext *anEc )
GetBDXAckFlag 根据广告交易平台上下文的连接(没有针对 TCP 的请求确认)以及对 WRMP 的编译时支持,为 RequestAck 字段返回适当的标记。
详细信息 | |||
---|---|---|---|
参数 |
|
||
返回值 |
0 或 kSendFlag_RequestAck
|