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。您还应为 Google Cloud 集成所需的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。您还应为 Google Cloud 集成所需的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
|