uvco
0.1
Loading...
Searching...
No Matches
uvco
run.h
Go to the documentation of this file.
1
// uvco (c) 2025 Lewin Bormann. See LICENSE for specific terms.
2
3
#pragma once
4
5
#include "
uvco/loop/loop.h
"
6
#include "
uvco/promise/promise.h
"
7
8
namespace
uvco
{
9
12
13
class
Loop
;
14
15
// Forward declaration only for friend declaration.
16
template
<
typename
F,
typename
R>
17
concept
MainFunction
= std::is_invocable_r_v<Promise<R>, F,
const
Loop
&>;
18
19
template
<
typename
R, MainFunction<R> F> R
runMain
(F main);
20
41
template
<
typename
R, MainFunction<R> F> R
runMain
(F main) {
42
Loop
loop;
43
Promise<R>
promise = main(loop);
44
runLoop
(loop);
45
// Returns when libuv does not see any handles left, and neither
46
// are any promises ready.
47
return
promise.
unwrap
();
48
}
49
51
52
}
// namespace uvco
uvco::Loop
Definition
loop.h:26
uvco::Promise
Definition
promise.h:49
uvco::Promise::unwrap
T unwrap()
Definition
promise.h:96
uvco::MainFunction
Definition
run.h:17
uvco::runMain
R runMain(F main)
Definition
run.h:41
loop.h
uvco
Definition
async_work.cc:18
uvco::runLoop
void runLoop(Loop &loop)
Definition
run.cc:7
promise.h
Generated by
1.14.0