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