Psyllid  v1.12.4
Project 8 Data Acquisisition Software
terminator.hh
Go to the documentation of this file.
1 /*
2  * terminator_freq_data.hh
3  *
4  * Created on: May 31, 2016
5  * Author: nsoblath
6  */
7 
8 #ifndef PSYLLID_TERMINATOR_FREQ_DATA_HH_
9 #define PSYLLID_TERMINATOR_FREQ_DATA_HH_
10 
11 #include "node_builder.hh"
12 
13 #include "consumer.hh"
14 
15 #include "freq_data.hh"
16 #include "time_data.hh"
17 #include "trigger_flag.hh"
18 
19 namespace psyllid
20 {
21 
22 #define DEFINE_TERMINATOR( data_class ) \
23  class terminator_##data_class : public midge::_consumer< midge::type_list< data_class > > \
24  { \
25  public: \
26  terminator_##data_class(); \
27  virtual ~terminator_##data_class(); \
28  public: \
29  virtual void initialize() {}; \
30  virtual void execute( midge::diptera* a_midge = nullptr ); \
31  virtual void finalize() {}; \
32  }; \
33  class terminator_##data_class##_binding : public _node_binding< terminator_##data_class, terminator_##data_class##_binding > \
34  { \
35  public: \
36  terminator_##data_class##_binding(); \
37  virtual ~terminator_##data_class##_binding(); \
38  private: \
39  virtual void do_apply_config( terminator_##data_class*, const scarab::param_node& ) const {}; \
40  virtual void do_dump_config( const terminator_##data_class*, scarab::param_node& ) const {}; \
41  };
42 
43 #define IMPLEMENT_TERMINATOR( data_class ) \
44  terminator_##data_class::terminator_##data_class() {} \
45  terminator_##data_class::~terminator_##data_class() {} \
46  void terminator_##data_class::execute( midge::diptera* a_midge ) \
47  { \
48  try \
49  { \
50  midge::enum_t t_command = midge::stream::s_none; \
51  while( ! is_canceled() ) \
52  { \
53  t_command = in_stream< 0 >().get(); \
54  if( t_command == midge::stream::s_none ) continue; \
55  if( t_command == midge::stream::s_error ) break; \
56  if( t_command == midge::stream::s_exit ) \
57  { \
58  LDEBUG( plog, "Terminator is exiting" ); \
59  break; \
60  } \
61  if( t_command == midge::stream::s_stop ) \
62  { \
63  LDEBUG( plog, "Terminator is stopping" ); \
64  continue; \
65  } \
66  if( t_command == midge::stream::s_start ) \
67  { \
68  LDEBUG( plog, "Terminator is starting" ); \
69  continue; \
70  } \
71  if( t_command == midge::stream::s_run ) \
72  { \
73  continue; \
74  } \
75  } \
76  return; \
77  } \
78  catch(...) \
79  { \
80  if( a_midge ) a_midge->throw_ex( std::current_exception() ); \
81  else throw; \
82  } \
83  } \
84  terminator_##data_class##_binding::terminator_##data_class##_binding() : _node_binding< terminator_##data_class, terminator_##data_class##_binding >() {} \
85  terminator_##data_class##_binding::~terminator_##data_class##_binding() {}
86 
87 
88 
90  public midge::_consumer< midge::type_list< time_data > >
91  {
92  public:
94  virtual ~terminator_time_data();
95 
96  public:
97  virtual void initialize();
98  virtual void execute( midge::diptera* a_midge = nullptr );
99  virtual void finalize();
100 
101  };
102 
103  class terminator_time_data_binding : public _node_binding< terminator_time_data, terminator_time_data_binding >
104  {
105  public:
107  virtual ~terminator_time_data_binding();
108 
109  private:
110  virtual void do_apply_config( terminator_time_data* a_node, const scarab::param_node& a_config ) const;
111  virtual void do_dump_config( const terminator_time_data* a_node, scarab::param_node& a_config ) const;
112  };
113 
114 
116  public midge::_consumer< midge::type_list< freq_data > >
117  {
118  public:
120  virtual ~terminator_freq_data();
121 
122  public:
123  virtual void initialize();
124  virtual void execute( midge::diptera* a_midge = nullptr );
125  virtual void finalize();
126 
127  };
128 
129  class terminator_freq_data_binding : public _node_binding< terminator_freq_data, terminator_freq_data_binding >
130  {
131  public:
133  virtual ~terminator_freq_data_binding();
134 
135  private:
136  virtual void do_apply_config( terminator_freq_data* a_node, const scarab::param_node& a_config ) const;
137  virtual void do_dump_config( const terminator_freq_data* a_node, scarab::param_node& a_config ) const;
138  };
139 
140 
142 /*
143  class terminator_trig_flag_data :
144  public midge::_consumer< terminator_trig_flag_data, typelist_1( trigger_flag ) >
145  {
146  public:
147  terminator_trig_flag_data();
148  virtual ~terminator_trig_flag_data();
149 
150  public:
151  virtual void initialize();
152  virtual void execute( midge::diptera* a_midge = nullptr );
153  virtual void finalize();
154 
155  };
156 
157  class terminator_trig_flag_data_binding : public _node_binding< terminator_trig_flag_data, terminator_trig_flag_data_binding >
158  {
159  public:
160  terminator_trig_flag_data_binding();
161  virtual ~terminator_trig_flag_data_binding();
162 
163  private:
164  virtual void do_apply_config( terminator_trig_flag_data* a_node, const scarab::param_node& a_config ) const;
165  virtual void do_dump_config( const terminator_trig_flag_data* a_node, scarab::param_node& a_config ) const;
166  };
167 */
168 
169 } /* namespace psyllid */
170 
171 #endif /* PSYLLID_TERMINATOR_FREQ_DATA_HH_ */
virtual void execute(midge::diptera *a_midge=nullptr)
Definition: terminator.cc:42
#define DEFINE_TERMINATOR(data_class)
Definition: terminator.hh:22