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
类型定义符
BdxClient
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 消息时调用的回调。
它的作用是确定您是否要接受 Receive,如果是,则设置 aXfer->mIsAccepted=true,以便协议向发起者发送接受消息。BDXTransfer 对象会启动为默认设置。此时非常适合将任何应用特定状态(打开文件句柄等)附加到 aXfer->mAppState。此时,您还应将必需的处理程序(例如块处理)附加到 BDXTransfer 对象。如果返回除 kStatus_Success 以外的错误代码,系统会假定传输被拒绝,并且协议将处理发送包含该代码的拒绝消息。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
RejectHandler
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->mIsAccepted=true,以便协议向发起者发送接受消息。BDXTransfer 对象会启动为默认设置。此时非常适合将任何应用特定状态(打开文件句柄等)附加到 aXfer->mAppState。此时,您还应将必需的处理程序(例如块处理)附加到 BDXTransfer 对象。如果返回除 WEAVE_NO_ERROR 以外的错误代码,系统会认为传输被拒绝,并且协议将处理发送包含该代码的拒绝消息。
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
XferDoneHandler
void(* XferDoneHandler)(BDXTransfer *aXfer)
处理转移完成的情况。
具体说明 | |||
---|---|---|---|
参数 |
|
XferErrorHandler
void(* XferErrorHandler)(BDXTransfer *aXfer, StatusReport *aXferError)
处理 BDX 接收或发送的 TransferError 消息。
注意:系统会假定 BDX 传输是可恢复的(可能是暂时的,例如暂时从 PacketBuffers 输出),因此调用 Shutdown() 的选项由应用编程人员及其定义的回调决定。TODO:对此进行核实,并使其与 BDX 文档中的语言保持一致,该文档中声明:“[A TransferError] 任一方随时可发送用于提前结束批量数据传输。”
具体说明 | |||||
---|---|---|---|---|---|
参数 |
|
函数
GetBDXAckFlag
uint16_t GetBDXAckFlag( ExchangeContext *anEc )
GetBDXAckFlag 根据交换上下文的连接(TCP 无请求确认)和 WRMP 的编译时支持为 RequestAck 字段返回适当的标记。
具体说明 | |||
---|---|---|---|
参数 |
|
||
返回值 |
0 或 kSendFlag_RequestAck
|