xrtHttpETagParse

严格解析一个 entity-tag;未对齐 Tag 可用,Opaque 借用输入且不含双引号。

bool xrtHttpETagParse( xstrview Text, xhttpetag* pTag );
参数说明
xstrview Text文本视图
xhttpetag* pTag认证标签
返回:严格解析一个 entity-tag;未对齐 Tag 可用,Opaque 借用输入且不含双引号。

示例已编译验证

/* 严格解析一个 entity-tag;未对齐 Tag 可用,Opaque 借用输入且不含双引号。 */
result = xrtHttpETagParse(Text, pTag);

xrtHttpETagNext

XRT_API xhttpnext xrtHttpETagNext( xstrview List, size_t* pOffset, xhttpetagitem* pItem );

;
返回:XRT_API xhttpnext xrtHttpETagNext( xstrview List, size_t* pOffset, xhttpetagitem* pItem );

示例已编译验证

/* XRT_API xhttpnext xrtHttpETagNext( xstrview List, size_t* pOffset, xhttpetagitem* pItem ); */
result = xrtHttpETagNext();

xrtHttpETagStrongEqual

按强规则比较两个可未对齐的实体标签,任一弱标签都不匹配。

bool xrtHttpETagStrongEqual( const xhttpetag* pLeft, const xhttpetag* pRight );
参数说明
const xhttpetag* pLeft左操作数
const xhttpetag* pRight右操作数
返回:按强规则比较两个可未对齐的实体标签,任一弱标签都不匹配。

示例已编译验证

/* 按强规则比较两个可未对齐的实体标签,任一弱标签都不匹配。 */
result = xrtHttpETagStrongEqual(pLeft, pRight);

xrtHttpETagWeakEqual

按弱规则比较两个可未对齐的实体标签,只比较 opaque-tag 正文。

bool xrtHttpETagWeakEqual( const xhttpetag* pLeft, const xhttpetag* pRight );
参数说明
const xhttpetag* pLeft左操作数
const xhttpetag* pRight右操作数
返回:按弱规则比较两个可未对齐的实体标签,只比较 opaque-tag 正文。

示例已编译验证

/* 按弱规则比较两个可未对齐的实体标签,只比较 opaque-tag 正文。 */
result = xrtHttpETagWeakEqual(pLeft, pRight);

xrtHttpETagListStrongHas

XRT_API bool xrtHttpETagListStrongHas( xstrview List, const xhttpetag* pTag );

;
返回:XRT_API bool xrtHttpETagListStrongHas( xstrview List, const xhttpetag* pTag );

示例已编译验证

/* XRT_API bool xrtHttpETagListStrongHas( xstrview List, const xhttpetag* pTag ); */
result = xrtHttpETagListStrongHas();

xrtHttpETagListWeakHas

XRT_API bool xrtHttpETagListWeakHas( xstrview List, const xhttpetag* pTag );

;
返回:XRT_API bool xrtHttpETagListWeakHas( xstrview List, const xhttpetag* pTag );

示例已编译验证

/* XRT_API bool xrtHttpETagListWeakHas( xstrview List, const xhttpetag* pTag ); */
result = xrtHttpETagListWeakHas();

xrtHttpETagWrite

写出可未对齐的 entity-tag;未对齐 Size 可用,结果不附加零字符。

bool xrtHttpETagWrite( const xhttpetag* pTag, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpetag* pTag认证标签
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出可未对齐的 entity-tag;未对齐 Size 可用,结果不附加零字符。

示例已编译验证

/* 写出可未对齐的 entity-tag;未对齐 Size 可用,结果不附加零字符。 */
result = xrtHttpETagWrite(pTag, pOutput, iCapacity, pSize);

xrtHttpETagBuild

从可未对齐的 entity-tag 构建零结尾文本,返回值由 xrtFree 释放。

str xrtHttpETagBuild( const xhttpetag* pTag, size_t* pSize );
参数说明
const xhttpetag* pTag认证标签
size_t* pSize出:大小
返回:从可未对齐的 entity-tag 构建零结尾文本,返回值由 xrtFree 释放。

示例已编译验证

/* 从可未对齐的 entity-tag 构建零结尾文本,返回值由 xrtFree 释放。 */
result = xrtHttpETagBuild(pTag, pSize);

xrtHttpPreconditionsEvaluate

XRT_API xhttpprecondition xrtHttpPreconditionsEvaluate( xstrview Method, const xhttpfield* pFields, size_t iFieldCount, const xhttprepresentation* pCurrent );

;
返回:XRT_API xhttpprecondition xrtHttpPreconditionsEvaluate( xstrview Method, const xhttpfield* pFields, size_t iFieldCount, const xhttprepresentation* pCurrent );

示例已编译验证

/* XRT_API xhttpprecondition xrtHttpPreconditionsEvaluate( xstrview Method, const xhttpfield* pFields, size_t iFieldCount, const xhttprepresentation* pCurrent ); */
result = xrtHttpPreconditionsEvaluate();

xrtHttpIfRangeMatch

XRT_API bool xrtHttpIfRangeMatch( xstrview Value, const xhttprepresentation* pCurrent );

;
返回:XRT_API bool xrtHttpIfRangeMatch( xstrview Value, const xhttprepresentation* pCurrent );

示例已编译验证

/* XRT_API bool xrtHttpIfRangeMatch( xstrview Value, const xhttprepresentation* pCurrent ); */
result = xrtHttpIfRangeMatch();

xrtHttpRangeParse

把 Range 字段拆成范围单位和单位专用集合;未对齐输出仍借用输入。

bool xrtHttpRangeParse( xstrview Value, xstrview* pUnit, xstrview* pSet );
参数说明
xstrview Value值
xstrview* pUnitUnt 参数
xstrview* pSet集合对象
返回:把 Range 字段拆成范围单位和单位专用集合;未对齐输出仍借用输入。

示例已编译验证

/* 把 Range 字段拆成范围单位和单位专用集合;未对齐输出仍借用输入。 */
result = xrtHttpRangeParse(Value, pUnit, pSet);

xrtHttpByteRangeNext

迭代 byte-range-set;Offset 和 Spec 可以未对齐,空列表元素会被忽略。

xhttpnext xrtHttpByteRangeNext( xstrview Set, size_t* pOffset, xhttprangespec* pSpec );
参数说明
xstrview Set字节集合
size_t* pOffset出:偏移
xhttprangespec* pSpec模式规格
返回:迭代 byte-range-set;Offset 和 Spec 可以未对齐,空列表元素会被忽略。

示例已编译验证

/* 迭代 byte-range-set;Offset 和 Spec 可以未对齐,空列表元素会被忽略。 */
result = xrtHttpByteRangeNext(Set, pOffset, pSpec);

xrtHttpByteRangeCount

验证并统计完整 byte-range-set;未对齐 Count 可用,集合必须至少包含一项。

bool xrtHttpByteRangeCount( xstrview Set, size_t* pCount );
参数说明
xstrview Set字节集合
size_t* pCount出:数量
返回:验证并统计完整 byte-range-set;未对齐 Count 可用,集合必须至少包含一项。

示例已编译验证

/* 验证并统计完整 byte-range-set;未对齐 Count 可用,集合必须至少包含一项。 */
result = xrtHttpByteRangeCount(Set, pCount);

xrtHttpByteRangeResolve

XRT_API xhttprangeresult xrtHttpByteRangeResolve( const xhttprangespec* pSpec, uint64 iLength, xhttpbyterange* pRange );

;
返回:XRT_API xhttprangeresult xrtHttpByteRangeResolve( const xhttprangespec* pSpec, uint64 iLength, xhttpbyterange* pRange );

示例已编译验证

/* XRT_API xhttprangeresult xrtHttpByteRangeResolve( const xhttprangespec* pSpec, uint64 iLength, xhttpbyterange* pRange ); */
result = xrtHttpByteRangeResolve();

xrtHttpByteRangesResolve

XRT_API xhttprangeresult xrtHttpByteRangesResolve( xstrview Set, uint64 iLength, xhttpbyterange* pRanges, size_t iCapacity, uint64 iMergeGap, size_t* pCount, uint64* pSelectedLength );

;
返回:XRT_API xhttprangeresult xrtHttpByteRangesResolve( xstrview Set, uint64 iLength, xhttpbyterange* pRanges, size_t iCapacity, uint64 iMergeGap, size_t* pCount, uint64* pSelectedLength );

示例已编译验证

/* XRT_API xhttprangeresult xrtHttpByteRangesResolve( xstrview Set, uint64 iLength, xhttpbyterange* pRanges, size_t iCapacity, uint64 iMergeGap, size_t* pCount, uint64* pSelectedLength ); */
result = xrtHttpByteRangesResolve();

xrtHttpRangeWrite

写出可未对齐的 Range 项数组;空输出查询长度,Size 也可以未对齐。

bool xrtHttpRangeWrite( const xhttprangespec* pSpecs, size_t iCount, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttprangespec* pSpecsSecs 参数
size_t iCount数量
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出可未对齐的 Range 项数组;空输出查询长度,Size 也可以未对齐。

示例已编译验证

/* 写出可未对齐的 Range 项数组;空输出查询长度,Size 也可以未对齐。 */
result = xrtHttpRangeWrite(pSpecs, iCount, pOutput, iCapacity, pSize);

xrtHttpRangeBuild

从可未对齐的 Range 项数组构建零结尾字段值,返回值由 xrtFree 释放。

str xrtHttpRangeBuild( const xhttprangespec* pSpecs, size_t iCount, size_t* pSize );
参数说明
const xhttprangespec* pSpecsSecs 参数
size_t iCount数量
size_t* pSize出:大小
返回:从可未对齐的 Range 项数组构建零结尾字段值,返回值由 xrtFree 释放。

示例已编译验证

/* 从可未对齐的 Range 项数组构建零结尾字段值,返回值由 xrtFree 释放。 */
result = xrtHttpRangeBuild(pSpecs, iCount, pSize);

xrtHttpContentRangeParse

严格解析 bytes Content-Range 字段值,Range 输出可以未对齐。

bool xrtHttpContentRangeParse( xstrview Value, xhttpcontentrange* pRange );
参数说明
xstrview Value值
xhttpcontentrange* pRangeRange 参数
返回:严格解析 bytes Content-Range 字段值,Range 输出可以未对齐。

示例已编译验证

/* 严格解析 bytes Content-Range 字段值,Range 输出可以未对齐。 */
result = xrtHttpContentRangeParse(Value, pRange);

xrtHttpContentRangeWrite

写出可未对齐的 Content-Range;空输出查询长度,Size 也可未对齐。

bool xrtHttpContentRangeWrite( const xhttpcontentrange* pRange, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpcontentrange* pRangeRange 参数
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出可未对齐的 Content-Range;空输出查询长度,Size 也可未对齐。

示例已编译验证

/* 写出可未对齐的 Content-Range;空输出查询长度,Size 也可未对齐。 */
result = xrtHttpContentRangeWrite(pRange, pOutput, iCapacity, pSize);

xrtHttpContentRangeBuild

从可未对齐的 Content-Range 构建零结尾文本,返回值由 xrtFree 释放。

str xrtHttpContentRangeBuild( const xhttpcontentrange* pRange, size_t* pSize );
参数说明
const xhttpcontentrange* pRangeRange 参数
size_t* pSize出:大小
返回:从可未对齐的 Content-Range 构建零结尾文本,返回值由 xrtFree 释放。

示例已编译验证

/* 从可未对齐的 Content-Range 构建零结尾文本,返回值由 xrtFree 释放。 */
result = xrtHttpContentRangeBuild(pRange, pSize);

xrtHttpRangeMultipartLength

XRT_API bool xrtHttpRangeMultipartLength( const xhttpbyterange* pRanges, size_t iRangeCount, uint64 iCompleteLength, xstrview ContentType, xstrview Boundary, uint64* pLength );

;
返回:XRT_API bool xrtHttpRangeMultipartLength( const xhttpbyterange* pRanges, size_t iRangeCount, uint64 iCompleteLength, xstrview ContentType, xstrview Boundary, uint64* pLength );

示例已编译验证

/* XRT_API bool xrtHttpRangeMultipartLength( const xhttpbyterange* pRanges, size_t iRangeCount, uint64 iCompleteLength, xstrview ContentType, xstrview Boundary, uint64* pLength ); */
result = xrtHttpRangeMultipartLength();

xrtHttpRangeMultipartHeadWrite

XRT_API bool xrtHttpRangeMultipartHeadWrite( const xhttpbyterange* pRange, uint64 iCompleteLength, xstrview ContentType, xstrview Boundary, void* pOutput, size_t iCapacity, size_t* pSize );

;
返回:XRT_API bool xrtHttpRangeMultipartHeadWrite( const xhttpbyterange* pRange, uint64 iCompleteLength, xstrview ContentType, xstrview Boundary, void* pOutput, size_t iCapacity, size_t* pSize );

示例已编译验证

/* XRT_API bool xrtHttpRangeMultipartHeadWrite( const xhttpbyterange* pRange, uint64 iCompleteLength, xstrview ContentType, xstrview Boundary, void* pOutput, size_t iCapacity, size_t* pSize ); */
result = xrtHttpRangeMultipartHeadWrite();

xrtHttpRangeMultipartEndWrite

写出一个范围 Part 数据后的 CRLF;Size 输出可以未对齐。

bool xrtHttpRangeMultipartEndWrite( void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出一个范围 Part 数据后的 CRLF;Size 输出可以未对齐。

示例已编译验证

/* 写出一个范围 Part 数据后的 CRLF;Size 输出可以未对齐。 */
result = xrtHttpRangeMultipartEndWrite(pOutput, iCapacity, pSize);

xrtHttpRangeMultipartCloseWrite

写出最后一个 Part 之后的关闭 boundary;Size 输出可以未对齐。

bool xrtHttpRangeMultipartCloseWrite( xstrview Boundary, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
xstrview BoundaryMIME 边界
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出最后一个 Part 之后的关闭 boundary;Size 输出可以未对齐。

示例已编译验证

/* 写出最后一个 Part 之后的关闭 boundary;Size 输出可以未对齐。 */
result = xrtHttpRangeMultipartCloseWrite(Boundary, pOutput, iCapacity, pSize);