cancel.cpp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <felspar/io.hpp>
#include <felspar/test.hpp>


using namespace std::literals;


namespace {


    auto const suite = felspar::testsuite("cancellation");


    felspar::io::warden::task<void> sleeper(felspar::io::warden &ward) {
        co_await ward.sleep(30ms);
    }
    felspar::io::warden::task<void> starter(felspar::io::warden &ward) {
        {
            felspar::io::warden::starter<void> start;
            start.post(sleeper, std::ref(ward));
        }
        co_await ward.sleep(10ms);
    }
    auto const pc = suite.test("poll/cancel", []() {
        felspar::io::poll_warden ward;
        ward.run(starter);
    });
#ifdef FELSPAR_ENABLE_IO_URING
    auto const uc = suite.test("io_uring/cancel", []() {
        felspar::io::uring_warden ward{5};
        ward.run(starter);
    });
#endif


}