morph 0.1.0
Asynchronous bridge between GUI thread and business models
Loading...
Searching...
No Matches
task_handler.hpp File Reference

What drives a model's Task handler: the driver coroutine that starts and finishes it, the per-instance gate that keeps actions from overlapping, and the trait that tells a Task handler from an ordinary one. The resumer its resumptions go through is strand.hpp's. More...

#include <atomic>
#include <concepts>
#include <core/async/StopToken.hpp>
#include <core/async/Task.hpp>
#include <coroutine>
#include <cstddef>
#include <deque>
#include <exception>
#include <functional>
#include <memory>
#include <optional>
#include <thread>
#include <utility>
#include "../strand.hpp"

Go to the source code of this file.

Classes

struct  morph::model::HandlerResult< T >
 The result an action handler's return type stands for: R for a core::async::Task<R> handler, the type itself for any other. More...
struct  morph::model::HandlerResult<::core::async::Task< R > >
 HandlerResult for a Task handler. More...

Typedefs

template<typename T>
using morph::model::HandlerResultT = HandlerResult<T>::type
 The action result a handler returning T produces.

Variables

template<typename T>
constexpr bool morph::model::isTaskHandler = HandlerResult<T>::isTask
 Whether a handler returning T is a Task handler.

Detailed Description

What drives a model's Task handler: the driver coroutine that starts and finishes it, the per-instance gate that keeps actions from overlapping, and the trait that tells a Task handler from an ordinary one. The resumer its resumptions go through is strand.hpp's.

Specified in docs/spec/core/coroutines.md, "Model side".

Definition in file task_handler.hpp.

Typedef Documentation

◆ HandlerResultT

template<typename T>
using morph::model::HandlerResultT = HandlerResult<T>::type

The action result a handler returning T produces.

Template Parameters
TThe handler's return type.

Definition at line 54 of file task_handler.hpp.

Variable Documentation

◆ isTaskHandler

template<typename T>
bool morph::model::isTaskHandler = HandlerResult<T>::isTask
inlineconstexpr

Whether a handler returning T is a Task handler.

Template Parameters
TThe handler's return type.

Definition at line 59 of file task_handler.hpp.