Asynchronous framework
C++:
class Server {
void on_request(req) {
redis.write(req, redis_done);
maria.write(req, maria_done);
}
void redis_done() {
redis_done = true;
done_check();
}
void maria_done() {
maria_done = true;
done_check();
}
void done_check() {
if (redis_done && maria_done) {
done();
}
}
void done() {
server.reply(reply_done);
}
void reply_done() {
...
}
}
Rust:
server.read_request()
.and_then(|req| {
redis.write(req)
.join(maria.write(req))
})
.and_then(|res| {
server.reply(res)
})