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();