Orbit Framework
An ultra-modern, asynchronous, cross-platform C++ Web Framework.
Loading...
Searching...
No Matches
Task.hpp
Go to the documentation of this file.
1#pragma once
2#include <coroutine>
3#include <exception>
4
5namespace concurrency {
6
7struct Task {
8 struct promise_type {
10 return Task(std::coroutine_handle<promise_type>::from_promise(*this));
11 }
12 std::suspend_never initial_suspend() { return {}; }
13 std::suspend_never final_suspend() noexcept { return {}; }
14
15 void return_void() {}
16 void unhandled_exception() { std::terminate(); }
17 };
18
19 std::coroutine_handle<promise_type> handle;
20
21 Task(std::coroutine_handle<promise_type> h) : handle(h) {}
22};
23
24} // namespace concurrency
Definition Task.hpp:5
Definition Task.hpp:8
void return_void()
Definition Task.hpp:15
std::suspend_never final_suspend() noexcept
Definition Task.hpp:13
void unhandled_exception()
Definition Task.hpp:16
Task get_return_object()
Definition Task.hpp:9
std::suspend_never initial_suspend()
Definition Task.hpp:12
Definition Task.hpp:7
std::coroutine_handle< promise_type > handle
Definition Task.hpp:19
Task(std::coroutine_handle< promise_type > h)
Definition Task.hpp:21