xrtHttpBodyStreamConfigInit

XRT_API void xrtHttpBodyStreamConfigInit( xhttpbodystreamconfig* pConfig );

;
返回:XRT_API void xrtHttpBodyStreamConfigInit( xhttpbodystreamconfig* pConfig );

示例已编译验证

httpbodystreamconfiginit obj;
xrtHttpBodyStreamConfigInit(&obj);

xrtHttpBodyStreamConfigValid

无分配验证两个预算都非零;配置输入可以未对齐。

bool xrtHttpBodyStreamConfigValid( const xhttpbodystreamconfig* pConfig );
参数说明
const xhttpbodystreamconfig* pConfig配置结构
返回:无分配验证两个预算都非零;配置输入可以未对齐。

示例已编译验证

/* 无分配验证两个预算都非零;配置输入可以未对齐。 */
result = xrtHttpBodyStreamConfigValid(pConfig);

xrtHttpBodyStreamCreate

XRT_API xhttpbody* xrtHttpBodyStreamCreate( const xhttpbodystreamconfig* pConfig, xhttpbodystream** ppStream );

;
返回:XRT_API xhttpbody* xrtHttpBodyStreamCreate( const xhttpbodystreamconfig* pConfig, xhttpbodystream** ppStream );

示例已编译验证

/* XRT_API xhttpbody* xrtHttpBodyStreamCreate( const xhttpbodystreamconfig* pConfig, xhttpbodystream** ppStream ); */
xhandle* h = xrtHttpBodyStreamCreate();

xrtHttpBodyStreamRef

增加生产端引用;最后一个生产端释放会自动发布 EOF。

xhttpbodystream* xrtHttpBodyStreamRef( xhttpbodystream* pStream );
参数说明
xhttpbodystream* pStream流对象
返回:增加生产端引用;最后一个生产端释放会自动发布 EOF。

示例已编译验证

/* 增加生产端引用;最后一个生产端释放会自动发布 EOF。 */
result = xrtHttpBodyStreamRef(pStream);

xrtHttpBodyStreamDestroy

释放生产端引用;空指针安全,自动 EOF 不改变调用线程错误。

void xrtHttpBodyStreamDestroy( xhttpbodystream* pStream );
参数说明
xhttpbodystream* pStream流对象
返回:释放生产端引用;空指针安全,自动 EOF 不改变调用线程错误。

示例已编译验证

xrtHttpBodyStreamDestroy(pStream);

xrtHttpBodyStreamWrite

复制有效且不覆盖 Stream 的非空字节;非 OK 时不保留输入。

xhttpbodystreamresult xrtHttpBodyStreamWrite( xhttpbodystream* pStream, xbytesview Data );
参数说明
xhttpbodystream* pStream流对象
xbytesview Data数据内容
返回:复制有效且不覆盖 Stream 的非空字节;非 OK 时不保留输入。

示例已编译验证

/* 复制有效且不覆盖 Stream 的非空字节;非 OK 时不保留输入。 */
result = xrtHttpBodyStreamWrite(pStream, Data);

xrtHttpBodyStreamWriteRef

OK 时接管有效独立字节租约;其他结果仍由调用方释放。

xhttpbodystreamresult xrtHttpBodyStreamWriteRef( xhttpbodystream* pStream, xbytesview Data, xhttpbodyreleaseproc pRelease, ptr pContext );
参数说明
xhttpbodystream* pStream流对象
xbytesview Data数据内容
xhttpbodyreleaseproc pRelease释放回调
ptr pContext上下文
返回:OK 时接管有效独立字节租约;其他结果仍由调用方释放。

示例已编译验证

/* OK 时接管有效独立字节租约;其他结果仍由调用方释放。 */
result = xrtHttpBodyStreamWriteRef(pStream, Data, pRelease, pContext);

xrtHttpBodyStreamWriteTake

OK 时接管有效独立的 xrtMalloc 数据;其他结果不接管。

xhttpbodystreamresult xrtHttpBodyStreamWriteTake( xhttpbodystream* pStream, ptr pData, size_t iSize );
参数说明
xhttpbodystream* pStream流对象
ptr pData用户数据
size_t iSize字节数
返回:OK 时接管有效独立的 xrtMalloc 数据;其他结果不接管。

示例已编译验证

/* OK 时接管有效独立的 xrtMalloc 数据;其他结果不接管。 */
result = xrtHttpBodyStreamWriteTake(pStream, pData, iSize);

xrtHttpBodyStreamWaitWritable

XRT_API xfuture* xrtHttpBodyStreamWaitWritable( xhttpbodystream* pStream );

;
返回:XRT_API xfuture* xrtHttpBodyStreamWaitWritable( xhttpbodystream* pStream );

示例已编译验证

/* XRT_API xfuture* xrtHttpBodyStreamWaitWritable( xhttpbodystream* pStream ); */
result = xrtHttpBodyStreamWaitWritable();

xrtHttpBodyStreamClose

幂等发布正常 EOF;已排队 Chunk 仍按顺序完整交付。

bool xrtHttpBodyStreamClose( xhttpbodystream* pStream );
参数说明
xhttpbodystream* pStream流对象
返回:幂等发布正常 EOF;已排队 Chunk 仍按顺序完整交付。

示例已编译验证

/* 幂等发布正常 EOF;已排队 Chunk 仍按顺序完整交付。 */
result = xrtHttpBodyStreamClose(pStream);

xrtHttpBodyStreamFail

以指定 Cause 永久失败,丢弃尚未交付的排队 Chunk。

bool xrtHttpBodyStreamFail( xhttpbodystream* pStream, const xerror* pError );
参数说明
xhttpbodystream* pStream流对象
const xerror* pError错误对象
返回:以指定 Cause 永久失败,丢弃尚未交付的排队 Chunk。

示例已编译验证

/* 以指定 Cause 永久失败,丢弃尚未交付的排队 Chunk。 */
result = xrtHttpBodyStreamFail(pStream, pError);

xrtHttpBodyStreamInfo

XRT_API bool xrtHttpBodyStreamInfo( const xhttpbodystream* pStream, xhttpbodystreaminfo* pInfo );

;
返回:XRT_API bool xrtHttpBodyStreamInfo( const xhttpbodystream* pStream, xhttpbodystreaminfo* pInfo );

示例已编译验证

/* XRT_API bool xrtHttpBodyStreamInfo( const xhttpbodystream* pStream, xhttpbodystreaminfo* pInfo ); */
result = xrtHttpBodyStreamInfo();