qicosmos / cinatra

modern c++(c++20), cross-platform, header-only, easy to use http framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

http_client如何取消请求

famik opened this issue · comments

http_client 有个close函数,但没有公开,是否可以公开close函数用于取消请求

析构http_client就可以close了,目前是用RAII去close的。

析构http_client就可以close了,目前是用RAII去close的。

问题是 http_client 在请求结束之前是不会析构的,因为没办法减少 shared_ptr 引用计数

用智能指针创建client,设置它为null来析构client

用智能指针创建client,设置它为null来析构client

智能指针必须是shared_ptr,因为用了enable_shared_from_this,异步请求时lambda会捕获shared_from_this,是没办法将lambda捕获的智能指针设置为null的,引用计数不减少是不会析构的

OK, 我把close放出来

close放出来也没有效果,因为即使在连接之前关闭socket,仍然会连接成功,数据发送和接收都成功,一个办法是在读成功之后如果判断socket 是否已经close了,如果close了,就丢弃数据并退出client?这个是否满足你的需求?

代码已经更新了,close是public的,你可以测一下

代码已经更新了,close是public的,你可以测一下

可以了,非常感谢