13 #ifndef __PROCESS_DELAY_HPP__
14 #define __PROCESS_DELAY_HPP__
46 return delay(duration, process.
self(), method);
55 return delay(duration, process->
self(), method);
59 #define TEMPLATE(Z, N, DATA) \
60 template <typename T, \
61 ENUM_PARAMS(N, typename P), \
62 ENUM_PARAMS(N, typename A)> \
63 Timer delay(const Duration& duration, \
65 void (T::*method)(ENUM_PARAMS(N, P)), \
66 ENUM_BINARY_PARAMS(N, A, a)) \
68 return Clock::timer(duration, [=]() { \
69 dispatch(pid, method, ENUM_PARAMS(N, a)); \
73 template <typename T, \
74 ENUM_PARAMS(N, typename P), \
75 ENUM_PARAMS(N, typename A)> \
76 Timer delay(const Duration& duration, \
77 const Process<T>& process, \
78 void (T::*method)(ENUM_PARAMS(N, P)), \
79 ENUM_BINARY_PARAMS(N, A, a)) \
81 return delay(duration, process.self(), method, ENUM_PARAMS(N, a)); \
84 template <typename T, \
85 ENUM_PARAMS(N, typename P), \
86 ENUM_PARAMS(N, typename A)> \
87 Timer delay(const Duration& duration, \
88 const Process<T>* process, \
89 void (T::*method)(ENUM_PARAMS(N, P)), \
90 ENUM_BINARY_PARAMS(N, A, a)) \
92 return delay(duration, process->self(), method, ENUM_PARAMS(N, a)); \
100 #endif // __PROCESS_DELAY_HPP__
REPEAT_FROM_TO(1, 13, TEMPLATE, _) class AsyncExecutorProcess
Definition: async.hpp:63
Definition: duration.hpp:32
void dispatch(const PID< T > &pid, void(T::*method)())
Definition: dispatch.hpp:174
Timer delay(const Duration &duration, const PID< T > &pid, void(T::*method)())
Definition: delay.hpp:31
Result< Process > process(pid_t pid)
Definition: freebsd.hpp:30
A "process identifier" used to uniquely identify a process when dispatching messages.
Definition: pid.hpp:279
#define TEMPLATE(Z, N, DATA)
Definition: delay.hpp:59
PID< T > self() const
Returns the PID of the process.
Definition: process.hpp:502
static Timer timer(const Duration &duration, const lambda::function< void()> &thunk)
Definition: process.hpp:493