11 #include <so_5/version.hpp> 13 #include <so_5_extra/revocable_msg/pub.hpp> 15 #include <so_5_extra/error_ranges.hpp> 17 #include <so_5/timers.hpp> 18 #include <so_5/enveloped_msg.hpp> 19 #include <so_5/send_functions.hpp> 106 class timer_id_t
final 121 ::so_5::intrusive_ptr_t< details::envelope_t > envelope,
122 ::so_5::timer_id_t actual_id )
140 timer_id_t &
operator=(
const timer_id_t & ) =
delete;
143 timer_id_t( timer_id_t && )
noexcept =
default;
144 timer_id_t &
operator=( timer_id_t && )
noexcept =
default;
147 swap( timer_id_t & a, timer_id_t & b )
noexcept 150 swap( a.m_envelope, b.m_envelope );
151 swap( a.m_actual_id, b.m_actual_id );
183 return m_actual_id.is_active();
196 m_envelope->revoke();
197 m_actual_id.release();
218 template<
typename... Args >
222 return ::so_5::extra::revocable_timer::timer_id_t{
223 std::forward<Args>(args)... };
233 const so_5::mbox_t & to,
234 const std::type_index & msg_type,
235 message_ref_t payload,
236 std::chrono::steady_clock::duration pause,
237 std::chrono::steady_clock::duration period )
239 using envelope_t = ::so_5::extra::revocable_timer::details::envelope_t;
241 ::so_5::intrusive_ptr_t< envelope_t > envelope{
242 std::make_unique< envelope_t >( std::move(payload) ) };
244 auto actual_id = ::so_5::low_level_api::schedule_timer(
251 return timer_id_maker_t::make(
252 std::move(envelope), std::move(actual_id) );
259 template<
class Message,
bool Is_Signal >
262 template<
typename... Args >
265 const ::so_5::mbox_t & to,
266 std::chrono::steady_clock::duration pause,
267 std::chrono::steady_clock::duration period,
286 template<
class Message >
294 const so_5::mbox_t & to,
295 std::chrono::steady_clock::duration pause,
296 std::chrono::steady_clock::duration period )
307 template<
class Message >
377 template<
typename Message,
typename Target,
typename... Args >
383 std::chrono::steady_clock::duration pause,
385 std::chrono::steady_clock::duration period,
443 template<
typename Message >
445 typename std::enable_if<
499 template<
typename Message >
501 typename std::enable_if<
502 ::so_5::is_signal< Message >::value,
static so_5::extra::revocable_timer::timer_id_t send_periodic(const so_5::mbox_t &to, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period)
Ranges for error codes of each submodules.
static ::so_5::extra::revocable_timer::timer_id_t send_periodic(const ::so_5::mbox_t &to, std::chrono::steady_clock::duration pause, std::chrono::steady_clock::duration period, Args &&... args)