DUDS
Distributed Update of Data from Something
MeasurementSignalSource.hpp
Go to the documentation of this file.
1 /*
2  * This file is part of the DUDS project. It is subject to the BSD-style
3  * license terms in the LICENSE file found in the top-level directory of this
4  * distribution and at https://github.com/jjackowski/duds/blob/master/LICENSE.
5  * No part of DUDS, including this file, may be copied, modified, propagated,
6  * or distributed except according to the terms contained in the LICENSE file.
7  *
8  * Copyright (C) 2017 Jeff Jackowski
9  */
10 #include <boost/signals2/signal.hpp>
12 
13 namespace duds { namespace data {
14 
15 template <class SVT, class SQT, class TVT, class TQT>
17 
18 } }
19 
20 namespace duds { namespace hardware {
21 
22 template<class SVT, class SQT, class TVT, class TQT>
24 
31 template <class SVT, class SQT, class TVT, class TQT>
33 public:
39  typedef boost::signals2::signal<
40  void (const std::shared_ptr<Instrument> &,
41  const std::shared_ptr<const Measurement> &)
43 protected:
68 public:
75  boost::signals2::connection newMeasurementConnect(
76  const typename MesurementSignal::slot_type &slot,
77  boost::signals2::connect_position at = boost::signals2::at_back
78  ) {
79  return newMeasure.connect(slot, at);
80  }
87  boost::signals2::connection newMeasurementConnect(
88  const typename MesurementSignal::group_type &group,
89  const typename MesurementSignal::slot_type &slot,
90  boost::signals2::connect_position at = boost::signals2::at_back
91  ) {
92  return newMeasure.connect(group, slot, at);
93  }
100  boost::signals2::connection newMeasurementConnectExtended(
101  const typename MesurementSignal::extended_slot_type &slot,
102  boost::signals2::connect_position at = boost::signals2::at_back
103  ) {
104  return newMeasure.connect_extended(slot, at);
105  }
112  boost::signals2::connection newMeasurementConnectExtended(
113  const typename MesurementSignal::group_type &group,
114  const typename MesurementSignal::extended_slot_type &slot,
115  boost::signals2::connect_position at = boost::signals2::at_back
116  ) {
117  return newMeasure.connect_extended(group, slot, at);
118  }
126  const typename MesurementSignal::group_type &group
127  ) {
128  newMeasure.disconnect(group);
129  }
136  template<typename S>
137  void newMeasurementDisconnect(const S &slotFunc) {
138  newMeasure.disconnect(slotFunc);
139  }
140 
147  boost::signals2::connection oldMeasurementConnect(
148  const typename MesurementSignal::slot_type &slot,
149  boost::signals2::connect_position at = boost::signals2::at_back
150  ) {
151  return oldMeasure.connect(slot, at);
152  }
159  boost::signals2::connection oldMeasurementConnect(
160  const typename MesurementSignal::group_type &group,
161  const typename MesurementSignal::slot_type &slot,
162  boost::signals2::connect_position at = boost::signals2::at_back
163  ) {
164  return oldMeasure.connect(group, slot, at);
165  }
172  boost::signals2::connection oldMeasurementConnectExtended(
173  const typename MesurementSignal::extended_slot_type &slot,
174  boost::signals2::connect_position at = boost::signals2::at_back
175  ) {
176  return oldMeasure.connect_extended(slot, at);
177  }
184  boost::signals2::connection oldMeasurementConnectExtended(
185  const typename MesurementSignal::group_type &group,
186  const typename MesurementSignal::extended_slot_type &slot,
187  boost::signals2::connect_position at = boost::signals2::at_back
188  ) {
189  return oldMeasure.connect_extended(group, slot, at);
190  }
198  const typename MesurementSignal::group_type &group
199  ) {
200  oldMeasure.disconnect(group);
201  }
208  template<typename S>
209  void oldMeasurementDisconnect(const S &slotFunc) {
210  oldMeasure.disconnect(slotFunc);
211  }
212 };
213 
216  double,
218  float
220 
221 } }
boost::variant< std::string, duds::general::LanguageTaggedString, std::array< std::int32_t, 4 >, std::array< std::int64_t, 2 >, duds::data::int128_w, std::array< float, 4 >, std::array< double, 2 >, double, duds::data::Quantity, boost::recursive_wrapper< duds::data::QuantityNddArray >, duds::time::interstellar::Femtoseconds, duds::time::interstellar::Nanoseconds, duds::time::interstellar::FemtoTime, duds::time::interstellar::NanoTime, boost::uuids::uuid, boost::recursive_wrapper< duds::data::GenericValueTable >, std::shared_ptr< std::vector< char > >> GenericValue
A general value of a type can be serialized for transmission over a network and can be used with a re...
boost::signals2::connection oldMeasurementConnectExtended(const typename MesurementSignal::extended_slot_type &slot, boost::signals2::connect_position at=boost::signals2::at_back)
Make a connection to receive signals for old measurements.
boost::signals2::connection oldMeasurementConnect(const typename MesurementSignal::slot_type &slot, boost::signals2::connect_position at=boost::signals2::at_back)
Make a connection to receive signals for old measurements.
boost::signals2::connection newMeasurementConnect(const typename MesurementSignal::slot_type &slot, boost::signals2::connect_position at=boost::signals2::at_back)
Make a connection to receive signals for new measurements.
MesurementSignal newMeasure
A set of signals that are invoked when a meaurement on this Instrument is recorded that is newer than...
boost::signals2::connection newMeasurementConnectExtended(const typename MesurementSignal::group_type &group, const typename MesurementSignal::extended_slot_type &slot, boost::signals2::connect_position at=boost::signals2::at_back)
Make a connection to receive signals for new measurements.
Handles sending signals of measurements taken by an instrument.
void newMeasurementDisconnect(const S &slotFunc)
Disconnect from the new measurement signal.
boost::signals2::connection oldMeasurementConnect(const typename MesurementSignal::group_type &group, const typename MesurementSignal::slot_type &slot, boost::signals2::connect_position at=boost::signals2::at_back)
Make a connection to receive signals for old measurements.
MesurementSignal oldMeasure
A set of signals that are invoked when a meaurement on this Instrument is recorded that is older than...
boost::signals2::connection oldMeasurementConnectExtended(const typename MesurementSignal::group_type &group, const typename MesurementSignal::extended_slot_type &slot, boost::signals2::connect_position at=boost::signals2::at_back)
Make a connection to receive signals for old measurements.
void oldMeasurementDisconnect(const S &slotFunc)
Disconnect from the old measurement signal.
void newMeasurementDisconnect(const typename MesurementSignal::group_type &group)
Disconnect from the new measurement signal.
duds::data::GenericMeasurement< SVT, SQT, TVT, TQT > Measurement
Stores a sample of something along with a timestamp stored as a sample from a clock.
Definition: Measurement.hpp:24
boost::signals2::signal< void(const std::shared_ptr< Instrument > &, const std::shared_ptr< const Measurement > &) > MesurementSignal
The type used for event listeners that are told of measurments.
GenericInstrument< SVT, SQT, TVT, TQT > Instrument
GenericMeasurementSignalSource< duds::data::GenericValue, double, duds::time::interstellar::NanoTime, float > MeasurementSignalSource
boost::signals2::connection newMeasurementConnectExtended(const typename MesurementSignal::extended_slot_type &slot, boost::signals2::connect_position at=boost::signals2::at_back)
Make a connection to receive signals for new measurements.
NanoClock::time_point NanoTime
A point in time in Interstellar Time stored in Nanoseconds.
boost::signals2::connection newMeasurementConnect(const typename MesurementSignal::group_type &group, const typename MesurementSignal::slot_type &slot, boost::signals2::connect_position at=boost::signals2::at_back)
Make a connection to receive signals for new measurements.
void oldMeasurementDisconnect(const typename MesurementSignal::group_type &group)
Disconnect from the old measurement signal.