网站首页 文章专栏 基于C++20 协程的http 库--cinatra
基于C++20 协程的http 库--cinatra
编辑时间:2024-02-22 13:48:55 作者:qicosmos 8条评论


    出自:purecpp.cn

    地址: www.purecpp.cn

    转载请注明出处!


来说两句吧
登录才能发表评论。
最新评论
  • qicosmos
    chenas 2024-02-23 07:56:05
    请问是怎么使用C++20的协程实现的,可以补充文档说明吗
  • qicosmos
    qicosmos 2024-02-27 11:46:51
    asio的协程要配合asio的异步接口使用,不是一个通用的库,async_simple 是一个通用的协程库。
  • qicosmos
    solomon 2024-02-28 08:17:54

    请教一个问题: 在尝试使用 4.静态文件服务 的时候,

    coro_http_server server(1,9001); 

    server.async_start(); 

    std::this_thread::sleep_for(5s);

    coro_http_clinet client{}; 

    auto result = client.async_get("http://127.0.0.1:9001"); 

    assert(result.status==200);   // ->这句编译不能通过,报告

    class "async_simple::coro::Lazy<cinatra::resp_data>" has no member "status"
    像这样形式的代码,应该怎么获取 cinatra::resp_data的数据呢?

    我的环境是 vs2022 vc143 std=c++20


  • qicosmos
    qicosmos 2024-02-28 12:16:13

    @solomon

    少了co_await

    async_get 是协程接口,你需要通过co_await 去调用它。

  • qicosmos
    solomon 2024-02-28 14:44:33

    @qicosmos 

    我是这样做的,

    1 把 4.静态文件服务 的代码复制到int main()中,报告 main cannot a coroutine;
    2 然后改为定义在一个函数里; 象这样 void async_start(){

     // build && setup web server 

    // sleep 5 seconds

    coro_http_client client{}; 

    auto res = co_await client.async_get("http://127.0.0.1:9001"); 

    assert(res.status == 200); 
    }

    编译的时候,报告错误: 

    Error   C2039   'status': is not a member of 'async_simple::coro::Lazy<cinatra::resp_data>'  

    Error   C2039   'promise_type': is not a member of 'std::coroutine_traits<void>'

    3 改为在windwos 11 ubuntu下(wsl), 使用clang 16.0.6 进行编译 
    报告 ..../ylt/thirdparty/cinatra/coro_http_client.hpp:10:10: fatal error: 'span' file not found // #include <span>

    附注:如果把server启动为同步模式; 然后使用浏览器,输入 http://127.0.0.1:9001/download/temp.txt 工作正常

  • qicosmos
    qicosmos 2024-02-28 15:18:55
    要在一个aysnc_simple::coro::Lazy 的协程函数里才能用co_await ,普通函数里不能co_await的,跑一下例子先。
  • qicosmos
    solomon 2024-02-29 02:20:13

    @qicosmos 

    我找到cinatra的项目,看其中的 异步 客户端 的使用例子,弄明白了; 谢谢你的回复!

  • qicosmos
    linguafranca 2024-03-29 15:41:56
    能不能讲一下cinatra为什么比其他库的性能更好?
Absolutely

purecpp

一个很酷的modern c++开源社区


[社区开源项目列表,点击前往]


purecpp社区自2015年创办以来,以“Newer is Better”为理念,相信新技术可以改变世界,一直致力于现代C++研究、应用和技术创新,期望通过现代C++的技术创新来提高企业生产力和效率。


社区坚持只发表原创技术文章,已经累计发表了一千多篇原创C++技术文章;


组织了十几场的C++沙龙和C++大会,有力地促进了国内外C++开发者之间的技术交流;


开源了十几个现代C++项目,被近百家公司所使用,有力地推动了现代C++在企业中的应用。


期待更多的C++爱好者能参与到社区C++社区的建设中来,一起为现代C++开源项目添砖加瓦,一起完善C++基础设施和生态圈。


微信公众号:purecpp, 社区邮箱: purecpp@163.com


友情链接