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>>(d)))
68 std::chrono::duration<double> d)
70 return d.count() <= 0 ?
throw std::invalid_argument(
71 "Poll period must be greater than zero")
86 constexpr
double getInterval() const noexcept {
return interval_; }
88 template <
typename T,
typename R>
91 interval_(checkInterval(
92 std::chrono::duration_cast<std::chrono::duration<double>>(d)
97 mode_(Event), interval_(0.0) {}
100 mode_(ManualPoll), interval_(0.0) {}
103 mode_(
Poll), interval_(checkInterval(interval)) {}
106 mode_(
Poll), interval_(poll.getInterval().count()) {}
110 return o.interval_ == interval_ and o.mode_ == mode_;
115 return mode_ == Continuous and interval_ > 0.0;
120 return mode_ ==
Poll and interval_ > 0.0;
123 PdCom::Transmission toPdCom()
const;
124 QString toString()
const;
138 return d <= 0 ?
throw std::invalid_argument(
139 "Interval must be greater than zero")
static constexpr double checkInterval(double d)
Definition: Transmission.h:136
constexpr double getInterval() const noexcept
Definition: Transmission.h:86
Tag for event-based subscription.
Definition: Transmission.h:37
Transmission mode for subscriptions.
Definition: Transmission.h:82
constexpr bool isContinuous() const
Definition: Transmission.h:113
Definition: BroadcastModel.h:32
constexpr Transmission(manual_poll_mode_tag) noexcept
Definition: Transmission.h:99
constexpr Poll(std::chrono::duration< T, R > d)
Definition: Transmission.h:55
Definition: Transmission.h:129
constexpr Transmission(const Poll &poll)
Definition: Transmission.h:105
#define QTPDCOM_PUBLIC
Definition: Export.h:30
std::chrono::duration< double > interval_
Definition: Transmission.h:65
static constexpr std::chrono::duration< double > checkInterval(std::chrono::duration< double > d)
Definition: Transmission.h:67
Tag for poll-based subscription without timer.
Definition: Transmission.h:47
Definition: Transmission.h:130
constexpr bool isPoll() const
Definition: Transmission.h:118
double interval_
Definition: Transmission.h:134
Tag for poll-based subscription with timer.
Definition: Transmission.h:42
constexpr std::chrono::duration< double > getInterval() const
Definition: Transmission.h:60
constexpr Transmission(poll_mode_tag, double interval)
Definition: Transmission.h:102
constexpr Transmission(event_mode_tag) noexcept
Definition: Transmission.h:96
Definition: Transmission.h:51
bool operator==(const Transmission &o) const noexcept
Definition: Transmission.h:108
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:89
constexpr struct QtPdCom::event_mode_tag event_mode