xrtHttpBodyCreate

XRT_API xhttpbody* xrtHttpBodyCreate( const xhttpbodyops* pOps, ptr pFactory, uint64 iLength, uint32 iFlags );

;
返回:XRT_API xhttpbody* xrtHttpBodyCreate( const xhttpbodyops* pOps, ptr pFactory, uint64 iLength, uint32 iFlags );

示例已编译验证

/* XRT_API xhttpbody* xrtHttpBodyCreate( const xhttpbodyops* pOps, ptr pFactory, uint64 iLength, uint32 iFlags ); */
xhandle* h = xrtHttpBodyCreate();

xrtHttpBodyEmpty

创建可重放的空正文。

xhttpbody* xrtHttpBodyEmpty(void);
返回:创建可重放的空正文。

示例已编译验证

/* 创建可重放的空正文。 */
result = xrtHttpBodyEmpty();

xrtHttpBodyCopy

创建拥有正文副本的可重放正文。

xhttpbody* xrtHttpBodyCopy(xbytesview Data);
参数说明
xbytesview Data数据内容
返回:创建拥有正文副本的可重放正文。

示例已编译验证

/* 创建拥有正文副本的可重放正文。 */
result = xrtHttpBodyCopy(Data);

xrtHttpBodyBorrow

创建借用外部内存的可重放正文,外部内存必须覆盖正文对象使用期。

xhttpbody* xrtHttpBodyBorrow(xbytesview Data);
参数说明
xbytesview Data数据内容
返回:创建借用外部内存的可重放正文,外部内存必须覆盖正文对象使用期。

示例已编译验证

/* 创建借用外部内存的可重放正文,外部内存必须覆盖正文对象使用期。 */
result = xrtHttpBodyBorrow(Data);

xrtHttpBodyTake

成功时接管由 xrtMalloc 分配的数据,失败时所有权仍归调用方。

xhttpbody* xrtHttpBodyTake(ptr pData, size_t iSize);
参数说明
ptr pData用户数据
size_t iSize字节数
返回:成功时接管由 xrtMalloc 分配的数据,失败时所有权仍归调用方。

示例已编译验证

/* 成功时接管由 xrtMalloc 分配的数据,失败时所有权仍归调用方。 */
result = xrtHttpBodyTake(pData, iSize);

xrtHttpBodyReference

XRT_API xhttpbody* xrtHttpBodyReference( xbytesview Data, xhttpbodyreleaseproc pRelease, ptr pContext );

;
返回:XRT_API xhttpbody* xrtHttpBodyReference( xbytesview Data, xhttpbodyreleaseproc pRelease, ptr pContext );

示例已编译验证

/* XRT_API xhttpbody* xrtHttpBodyReference( xbytesview Data, xhttpbodyreleaseproc pRelease, ptr pContext ); */
result = xrtHttpBodyReference();

xrtHttpBodyRef

增加正文对象引用并返回原指针。

xhttpbody* xrtHttpBodyRef(xhttpbody* pBody);
参数说明
xhttpbody* pBody消息体
返回:增加正文对象引用并返回原指针。

示例已编译验证

/* 增加正文对象引用并返回原指针。 */
result = xrtHttpBodyRef(pBody);

xrtHttpBodyDestroy

释放正文对象引用;空指针安全,清理回调不会改变当前错误。

void xrtHttpBodyDestroy(xhttpbody* pBody);
参数说明
xhttpbody* pBody消息体
返回:释放正文对象引用;空指针安全,清理回调不会改变当前错误。

示例已编译验证

xrtHttpBodyDestroy(pBody);

xrtHttpBodyLength

返回正文线性字节长度或 XHTTP_BODY_UNKNOWN。

uint64 xrtHttpBodyLength(const xhttpbody* pBody);
参数说明
const xhttpbody* pBody消息体
返回:返回正文线性字节长度或 XHTTP_BODY_UNKNOWN。

示例已编译验证

/* 返回正文线性字节长度或 XHTTP_BODY_UNKNOWN。 */
result = xrtHttpBodyLength(pBody);

xrtHttpBodyFlags

返回正文源公开能力标志。

uint32 xrtHttpBodyFlags(const xhttpbody* pBody);
参数说明
const xhttpbody* pBody消息体
返回:返回正文源公开能力标志。

示例已编译验证

/* 返回正文源公开能力标志。 */
result = xrtHttpBodyFlags(pBody);

xrtHttpBodyReplayable

判断正文能否重新 Open 并从头读取。

bool xrtHttpBodyReplayable(const xhttpbody* pBody);
参数说明
const xhttpbody* pBody消息体
返回:判断正文能否重新 Open 并从头读取。

示例已编译验证

/* 判断正文能否重新 Open 并从头读取。 */
result = xrtHttpBodyReplayable(pBody);

xrtHttpBodyView

XRT_API bool xrtHttpBodyView( const xhttpbody* pBody, xbytesview* pData );

;
返回:XRT_API bool xrtHttpBodyView( const xhttpbody* pBody, xbytesview* pData );

示例已编译验证

/* XRT_API bool xrtHttpBodyView( const xhttpbody* pBody, xbytesview* pData ); */
result = xrtHttpBodyView();

xrtHttpBodyOpen

打开独立 Reader;非可重放正文一生最多尝试一次。

xhttpbodyreader* xrtHttpBodyOpen(xhttpbody* pBody);
参数说明
xhttpbody* pBody消息体
返回:打开独立 Reader;非可重放正文一生最多尝试一次。

示例已编译验证

/* 打开独立 Reader;非可重放正文一生最多尝试一次。 */
result = xrtHttpBodyOpen(pBody);

xrtHttpBodyNext

XRT_API xhttpbodystatus xrtHttpBodyNext( xhttpbodyreader* pReader, size_t iMaxBytes, xhttpbodychunk* pChunk );

;
返回:XRT_API xhttpbodystatus xrtHttpBodyNext( xhttpbodyreader* pReader, size_t iMaxBytes, xhttpbodychunk* pChunk );

示例已编译验证

/* XRT_API xhttpbodystatus xrtHttpBodyNext( xhttpbodyreader* pReader, size_t iMaxBytes, xhttpbodychunk* pChunk ); */
result = xrtHttpBodyNext();

xrtHttpBodyRead

XRT_API xhttpbodystatus xrtHttpBodyRead( xhttpbodyreader* pReader, void* pOutput, size_t iCapacity, size_t* pSize );

;
返回:XRT_API xhttpbodystatus xrtHttpBodyRead( xhttpbodyreader* pReader, void* pOutput, size_t iCapacity, size_t* pSize );

示例已编译验证

/* XRT_API xhttpbodystatus xrtHttpBodyRead( xhttpbodyreader* pReader, void* pOutput, size_t iCapacity, size_t* pSize ); */
result = xrtHttpBodyRead();

xrtHttpBodyChunkRelease

先清空再释放 Chunk 租约;空结构安全,回调不会改变当前错误。

void xrtHttpBodyChunkRelease(xhttpbodychunk* pChunk);
参数说明
xhttpbodychunk* pChunkChunk 参数
返回:先清空再释放 Chunk 租约;空结构安全,回调不会改变当前错误。

示例已编译验证

xrtHttpBodyChunkRelease(pChunk);

xrtHttpBodyReaderBytes

返回 Reader 已发布的正文总字节数。

uint64 xrtHttpBodyReaderBytes(const xhttpbodyreader* pReader);
参数说明
const xhttpbodyreader* pReader读取器
返回:返回 Reader 已发布的正文总字节数。

示例已编译验证

/* 返回 Reader 已发布的正文总字节数。 */
result = xrtHttpBodyReaderBytes(pReader);

xrtHttpBodyReaderError

返回失败 Reader 借用的稳定错误,其他状态返回空指针。

const xerror* xrtHttpBodyReaderError( const xhttpbodyreader* pReader );
参数说明
const xhttpbodyreader* pReader读取器
返回:返回失败 Reader 借用的稳定错误,其他状态返回空指针。

示例已编译验证

/* 返回失败 Reader 借用的稳定错误,其他状态返回空指针。 */
result = xrtHttpBodyReaderError(pReader);

xrtHttpBodyReaderDestroy

关闭 Reader 并释放正文引用;未释放 Chunk 仍保持有效。

void xrtHttpBodyReaderDestroy(xhttpbodyreader* pReader);
参数说明
xhttpbodyreader* pReader读取器
返回:关闭 Reader 并释放正文引用;未释放 Chunk 仍保持有效。

示例已编译验证

xrtHttpBodyReaderDestroy(pReader);

xrtHttpBodyReaderWait

XRT_API xfuture* xrtHttpBodyReaderWait(xhttpbodyreader* pReader);

;
返回:XRT_API xfuture* xrtHttpBodyReaderWait(xhttpbodyreader* pReader);

示例已编译验证

/* XRT_API xfuture* xrtHttpBodyReaderWait(xhttpbodyreader* pReader); */
result = xrtHttpBodyReaderWait();