Skip to content

C++11 协程库,支持 TCP、HTTP 和 Redis 协议。

License

Notifications You must be signed in to change notification settings

vincillau/coro-deprecated

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coro

C++11 协程库,支持 TCP、HTTP 和 Redis 协议。

构建

Coro 使用 xmake 构建项目和管理依赖:

git clone https://github.com/vincillau/coro.git
cd coro
xmake build

运行用例:

xmake run echo-server
xmake run http-client
xmake run redis-client
xmake run http-server

Hello World

使用 Coro 实现 echo server:

#include "coro/coro.hpp"

using coro::spawn;
using coro::tcp::Conn;
using coro::tcp::listen;

void handler(Conn conn) {
  for (;;) {
    char buf[4096];
    auto n = conn->readline(buf, 4096).await();
    if (n == 0) {
      conn->close();
      break;
    }
    conn->write(buf, n).await();
  }
}

int main() {
  // 创建一个监听 8080 端口的 TCP listener
  auto listener = listen(8080);
  for (;;) {
    // 接受一个 TCP 连接,await 会阻塞当前协程直至连接完成
    auto conn = listener->accept().await();
    // 创建一个新的协程
    spawn([conn]() { handler(conn); });
  }

  return 0;
}

更多用例请查看examples

About

C++11 协程库,支持 TCP、HTTP 和 Redis 协议。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published