______ ______ _____ _____ ____
|___ / | ____| | __ \ |_ _| / __ \
/ / | |__ | | | | | | | | | |
/ / | __| | | | | | | | | | |
/ /__ | |____ | |__| | _| |_ | |__| |
/_____| |______| |_____/ |_____| \____/
Documentation:https://8sileus.github.io/zedio/
Zedio is an event-driven header library for writing asynchronous applications in modern C++:
- Multithreaded, work-stealing based task scheduler. (referencetokio)
- Proactor event handling backed byio_uring.
- Zero overhead abstraction, no virtual, no dynamic
- I/O
- NetWorking
- FileSystem
- Time
- Sync
- Log
It's being developed, if you're interested in zedio and want to participate in its development, seecontributing
//An echo server
//Ignore all errors
#include"zedio/core.hpp"
#include"zedio/net.hpp"
usingnamespacezedio;
usingnamespacezedio::async;
usingnamespacezedio::net;
autoprocess(TcpStream stream) -> Task<void> {
charbuf[1024]{};
while(true) {
autolen = (co_await(stream.read(buf))).value();
if(len ==0) {
break;
}
co_awaitstream.write_all({buf, len});
}
}
autoserver() -> Task<void> {
autoaddr =SocketAddr::parse("localhost",9999).value();
autolistener =TcpListener::bind(addr).value();
while(true) {
auto[stream, addr] = (co_awaitlistener.accept()).value();
spawn(process(std::move(stream)));
}
}
automain() -> int {
//zedio::runtime::CurrentThreadBuilder::default_create().block_on(server());
zedio::runtime::MultiThreadBuilder::default_create().block_on(server());
}