xrtHttpSseEventValid

判断 Event 的视图、标志、UTF-8 和单行字段约束是否有效。

bool xrtHttpSseEventValid(const xhttpsseevent* pEvent);
参数说明
const xhttpsseevent* pEvent事件
返回:判断 Event 的视图、标志、UTF-8 和单行字段约束是否有效。

示例已编译验证

/* 判断 Event 的视图、标志、UTF-8 和单行字段约束是否有效。 */
result = xrtHttpSseEventValid(pEvent);

xrtHttpSseEventSize

精确计算规范 LF 封包长度;Size 可以未对齐,失败不修改。

bool xrtHttpSseEventSize( const xhttpsseevent* pEvent, size_t* pSize );
参数说明
const xhttpsseevent* pEvent事件
size_t* pSize出:大小
返回:精确计算规范 LF 封包长度;Size 可以未对齐,失败不修改。

示例已编译验证

/* 精确计算规范 LF 封包长度;Size 可以未对齐,失败不修改。 */
result = xrtHttpSseEventSize(pEvent, pSize);

xrtHttpSseEventWrite

XRT_API bool xrtHttpSseEventWrite( const xhttpsseevent* pEvent, void* pOutput, size_t iCapacity, size_t* pSize );

;
返回:XRT_API bool xrtHttpSseEventWrite( const xhttpsseevent* pEvent, void* pOutput, size_t iCapacity, size_t* pSize );

示例已编译验证

/* XRT_API bool xrtHttpSseEventWrite( const xhttpsseevent* pEvent, void* pOutput, size_t iCapacity, size_t* pSize ); */
result = xrtHttpSseEventWrite();

xrtHttpSseEventBuild

构建零结尾事件块,返回值由 xrtFree 释放。

str xrtHttpSseEventBuild( const xhttpsseevent* pEvent, size_t* pSize );
参数说明
const xhttpsseevent* pEvent事件
size_t* pSize出:大小
返回:构建零结尾事件块,返回值由 xrtFree 释放。

示例已编译验证

/* 构建零结尾事件块,返回值由 xrtFree 释放。 */
result = xrtHttpSseEventBuild(pEvent, pSize);

xrtHttpSseCommentSize

精确计算规范注释心跳长度;Comment 可以包含 LF,但不能包含 CR。

bool xrtHttpSseCommentSize( xstrview Comment, size_t* pSize );
参数说明
xstrview Comment注释内容
size_t* pSize出:大小
返回:精确计算规范注释心跳长度;Comment 可以包含 LF,但不能包含 CR。

示例已编译验证

/* 精确计算规范注释心跳长度;Comment 可以包含 LF,但不能包含 CR。 */
result = xrtHttpSseCommentSize(Comment, pSize);

xrtHttpSseCommentWrite

写出一条或多条注释行,不添加事件分隔空行。

bool xrtHttpSseCommentWrite( xstrview Comment, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
xstrview Comment注释内容
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出一条或多条注释行,不添加事件分隔空行。

示例已编译验证

/* 写出一条或多条注释行,不添加事件分隔空行。 */
result = xrtHttpSseCommentWrite(Comment, pOutput, iCapacity, pSize);

xrtHttpSseCommentBuild

构建零结尾注释心跳,返回值由 xrtFree 释放。

str xrtHttpSseCommentBuild( xstrview Comment, size_t* pSize );
参数说明
xstrview Comment注释内容
size_t* pSize出:大小
返回:构建零结尾注释心跳,返回值由 xrtFree 释放。

示例已编译验证

/* 构建零结尾注释心跳,返回值由 xrtFree 释放。 */
result = xrtHttpSseCommentBuild(Comment, pSize);

xrtHttpSseLastEventIdValid

判断 Last-Event-ID 是否是可安全放入请求 Header 的 UTF-8 值。

bool xrtHttpSseLastEventIdValid(xstrview Id);
参数说明
xstrview Id标识
返回:判断 Last-Event-ID 是否是可安全放入请求 Header 的 UTF-8 值。

示例已编译验证

/* 判断 Last-Event-ID 是否是可安全放入请求 Header 的 UTF-8 值。 */
result = xrtHttpSseLastEventIdValid(Id);

xrtHttpSseContentTypeValid

判断 Content-Type 是否是参数合法的 text/event-stream。

bool xrtHttpSseContentTypeValid(xstrview ContentType);
参数说明
xstrview ContentType内容类型
返回:判断 Content-Type 是否是参数合法的 text/event-stream。

示例已编译验证

/* 判断 Content-Type 是否是参数合法的 text/event-stream。 */
result = xrtHttpSseContentTypeValid(ContentType);

xrtHttpSseRequestHeaders

事务设置 Accept,并按空值删除或唯一设置 Last-Event-ID。

bool xrtHttpSseRequestHeaders( xhttpheaders* pHeaders, xstrview LastEventId );
参数说明
xhttpheaders* pHeaders头部对象
xstrview LastEventIdLastEventId 参数
返回:事务设置 Accept,并按空值删除或唯一设置 Last-Event-ID。

示例已编译验证

/* 事务设置 Accept,并按空值删除或唯一设置 Last-Event-ID。 */
result = xrtHttpSseRequestHeaders(pHeaders, LastEventId);

xrtHttpSseResponseHeaders

事务唯一设置响应 Content-Type,不添加应用策略字段。

bool xrtHttpSseResponseHeaders(xhttpheaders* pHeaders);
参数说明
xhttpheaders* pHeaders头部对象
返回:事务唯一设置响应 Content-Type,不添加应用策略字段。

示例已编译验证

/* 事务唯一设置响应 Content-Type,不添加应用策略字段。 */
result = xrtHttpSseResponseHeaders(pHeaders);

xrtHttpSseResponseCheck

按 EventSource 规则分类状态码和唯一 Content-Type;协议拒绝不修改线程错误。

xhttpsseresponse xrtHttpSseResponseCheck( uint16 iStatus, const xhttpheaders* pHeaders );
参数说明
uint16 iStatus状态码
const xhttpheaders* pHeaders头部对象
返回:按 EventSource 规则分类状态码和唯一 Content-Type;协议拒绝不修改线程错误。

示例已编译验证

/* 按 EventSource 规则分类状态码和唯一 Content-Type;协议拒绝不修改线程错误。 */
result = xrtHttpSseResponseCheck(iStatus, pHeaders);

xrtHttpSseParserConfigInit

初始化现代浏览器兼容的动态限额、替换解码和三秒重连配置。

void xrtHttpSseParserConfigInit( xhttpsseparserconfig* pConfig );
参数说明
xhttpsseparserconfig* pConfig配置结构
返回:初始化现代浏览器兼容的动态限额、替换解码和三秒重连配置。

示例已编译验证

httpsseparserconfiginit obj;
xrtHttpSseParserConfigInit(&obj);

xrtHttpSseParserConfigValid

纯判断解析配置是否可以安全建立状态机。

bool xrtHttpSseParserConfigValid( const xhttpsseparserconfig* pConfig );
参数说明
const xhttpsseparserconfig* pConfig配置结构
返回:纯判断解析配置是否可以安全建立状态机。

示例已编译验证

/* 纯判断解析配置是否可以安全建立状态机。 */
result = xrtHttpSseParserConfigValid(pConfig);

xrtHttpSseParserInit

初始化调用方持有且初始零分配的解析器。

bool xrtHttpSseParserInit( xhttpsseparser* pParser, const xhttpsseparserconfig* pConfig );
参数说明
xhttpsseparser* pParser解析器
const xhttpsseparserconfig* pConfig配置结构
返回:初始化调用方持有且初始零分配的解析器。

示例已编译验证

httpsseparserinit obj;
xrtHttpSseParserInit(&obj, pParser);

xrtHttpSseParserCreate

创建初始零分配的解析器。

xhttpsseparser* xrtHttpSseParserCreate( const xhttpsseparserconfig* pConfig );
参数说明
const xhttpsseparserconfig* pConfig配置结构
返回:创建初始零分配的解析器。

示例已编译验证

/* 创建初始零分配的解析器。 */
xhandle* h = xrtHttpSseParserCreate();

xrtHttpSseParserUnit

释放解析器持有的动态容量,但不释放解析器结构。

void xrtHttpSseParserUnit(xhttpsseparser* pParser);
参数说明
xhttpsseparser* pParser解析器
返回:释放解析器持有的动态容量,但不释放解析器结构。

示例已编译验证

xrtHttpSseParserUnit(pParser);

xrtHttpSseParserDestroy

释放解析器持有的动态容量和解析器结构。

void xrtHttpSseParserDestroy(xhttpsseparser* pParser);
参数说明
xhttpsseparser* pParser解析器
返回:释放解析器持有的动态容量和解析器结构。

示例已编译验证

xrtHttpSseParserDestroy(pParser);

xrtHttpSseParserReset

清除全部流状态、Last-Event-ID 和 retry,并恢复配置初值。

void xrtHttpSseParserReset(xhttpsseparser* pParser);
参数说明
xhttpsseparser* pParser解析器
返回:清除全部流状态、Last-Event-ID 和 retry,并恢复配置初值。

示例已编译验证

/* 清除全部流状态、Last-Event-ID 和 retry,并恢复配置初值。 */
result = xrtHttpSseParserReset(pParser);

xrtHttpSseParserReconnect

开始重连后的新响应,保留 Last-Event-ID 和 retry。

void xrtHttpSseParserReconnect(xhttpsseparser* pParser);
参数说明
xhttpsseparser* pParser解析器
返回:开始重连后的新响应,保留 Last-Event-ID 和 retry。

示例已编译验证

/* 开始重连后的新响应,保留 Last-Event-ID 和 retry。 */
result = xrtHttpSseParserReconnect(pParser);

xrtHttpSseParserTrim

把五个动态缓冲的容量裁剪到当前有效长度。

bool xrtHttpSseParserTrim(xhttpsseparser* pParser);
参数说明
xhttpsseparser* pParser解析器
返回:把五个动态缓冲的容量裁剪到当前有效长度。

示例已编译验证

/* 把五个动态缓冲的容量裁剪到当前有效长度。 */
result = xrtHttpSseParserTrim(pParser);

xrtHttpSseParserRead

XRT_API xhttpsseparsestatus xrtHttpSseParserRead( xhttpsseparser* pParser, xbytesview Input, bool bEnd, size_t* pConsumed, xhttpsseitem* pItem, xhttpsseerrorinfo* pError );

;
返回:XRT_API xhttpsseparsestatus xrtHttpSseParserRead( xhttpsseparser* pParser, xbytesview Input, bool bEnd, size_t* pConsumed, xhttpsseitem* pItem, xhttpsseerrorinfo* pError );

示例已编译验证

/* XRT_API xhttpsseparsestatus xrtHttpSseParserRead( xhttpsseparser* pParser, xbytesview Input, bool bEnd, size_t* pConsumed, xhttpsseitem* pItem, xhttpsseerrorinfo* pError ); */
result = xrtHttpSseParserRead();

xrtHttpSseParserLastEventId

返回当前持久 Last-Event-ID;视图在下一次修改或销毁前有效。

xstrview xrtHttpSseParserLastEventId( const xhttpsseparser* pParser );
参数说明
const xhttpsseparser* pParser解析器
返回:返回当前持久 Last-Event-ID;视图在下一次修改或销毁前有效。

示例已编译验证

/* 返回当前持久 Last-Event-ID;视图在下一次修改或销毁前有效。 */
result = xrtHttpSseParserLastEventId(pParser);

xrtHttpSseParserRetry

返回当前重连毫秒数。

uint64 xrtHttpSseParserRetry( const xhttpsseparser* pParser );
参数说明
const xhttpsseparser* pParser解析器
返回:返回当前重连毫秒数。

示例已编译验证

/* 返回当前重连毫秒数。 */
result = xrtHttpSseParserRetry(pParser);