uvco 0.1
Loading...
Searching...
No Matches
Run

Concepts

concept  uvco::MainFunction

Functions

template<typename R, MainFunction< R > F>
uvco::runMain (F main)

Detailed Description

Function Documentation

◆ runMain()

template<typename R, MainFunction< R > F>
R uvco::runMain ( F main)

Set up event loop, then run main function to set up promises. Finally, clean up once the event loop has finished. An exception thrown within a coroutine is rethrown here.

MainFunction is a function taking a single const Loop& argument, and returning a Promise<R>. The supplied Loop is necessary to instantiate different types of resources, such as TCP streams or timers.

Example:

runMain<void>([](const Loop& loop) -> Promise<void> {
// Set up resources here.
TtyStream stdin = TtyStream::stdin(loop);
std::optional<std::string> line = co_await stdin.read();
co_await stdin.close();
co_return;
});
Definition loop.h:26
Definition promise.h:49
Promise< std::optional< std::string > > read(size_t maxSize=defaultMaxReadSize)
Definition stream.cc:96
void close()
Definition stream.cc:155
Definition stream.h:128
static TtyStream stdin(const Loop &loop)
Definition stream.h:138
R runMain(F main)
Definition run.h:41
41 {
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}
T unwrap()
Definition promise.h:96
void runLoop(Loop &loop)
Definition run.cc:7