22 #ifndef QTPDCOM_TRANSMISSION_H 23 #define QTPDCOM_TRANSMISSION_H 25 #include <pdcom5/Subscriber.h> 54 template <
typename T,
typename R>
55 constexpr
Poll(std::chrono::duration<T, R> d):
56 interval_(checkInterval(
57 std::chrono::duration_cast<std::chrono::duration<double>>(
69 static constexpr std::chrono::duration<double>
73 ?
throw std::invalid_argument(
74 "Poll period must be greater than zero")
89 constexpr
double getInterval() const noexcept {
return interval_; }
91 template <
typename T,
typename R>
94 interval_(checkInterval(
95 std::chrono::duration_cast<std::chrono::duration<double>>(
112 interval_(checkInterval(interval))
117 interval_(poll.getInterval().count())
122 return o.interval_ == interval_ and o.mode_ == mode_;
127 return mode_ == Continuous and interval_ > 0.0;
132 return mode_ ==
Poll and interval_ > 0.0;
135 PdCom::Transmission toPdCom()
const;
136 QString toString()
const;
139 enum {
Poll = -1, ManualPoll, Event, Continuous } mode_;
145 return d <= 0 ?
throw std::invalid_argument(
146 "Interval must be greater than zero")
static constexpr double checkInterval(double d)
Definition: Transmission.h:143
constexpr double getInterval() const noexcept
Definition: Transmission.h:89
Tag for event-based subscription.
Definition: Transmission.h:37
Transmission mode for subscriptions.
Definition: Transmission.h:85
constexpr bool isContinuous() const
Definition: Transmission.h:125
Definition: BroadcastModel.h:32
constexpr Transmission(manual_poll_mode_tag) noexcept
Definition: Transmission.h:105
constexpr Poll(std::chrono::duration< T, R > d)
Definition: Transmission.h:55
constexpr Transmission(const Poll &poll)
Definition: Transmission.h:115
#define QTPDCOM_PUBLIC
Definition: Export.h:30
std::chrono::duration< double > interval_
Definition: Transmission.h:67
static constexpr std::chrono::duration< double > checkInterval(std::chrono::duration< double > d)
Definition: Transmission.h:70
Tag for poll-based subscription without timer.
Definition: Transmission.h:47
constexpr bool isPoll() const
Definition: Transmission.h:130
double interval_
Definition: Transmission.h:141
Tag for poll-based subscription with timer.
Definition: Transmission.h:42
constexpr std::chrono::duration< double > getInterval() const
Definition: Transmission.h:61
constexpr Transmission(poll_mode_tag, double interval)
Definition: Transmission.h:110
constexpr Transmission(event_mode_tag) noexcept
Definition: Transmission.h:100
Definition: Transmission.h:51
bool operator==(const Transmission &o) const noexcept
Definition: Transmission.h:120
constexpr struct QtPdCom::poll_mode_tag poll_mode
constexpr struct QtPdCom::manual_poll_mode_tag manual_poll_mode
constexpr Transmission(std::chrono::duration< T, R > d)
Definition: Transmission.h:92
constexpr struct QtPdCom::event_mode_tag event_mode