Psyllid  v1.12.4
Project 8 Data Acquisisition Software
request_receiver.hh
Go to the documentation of this file.
1 #ifndef PSYLLID_REQUEST_RECEIVER_HH_
2 #define PSYLLID_REQUEST_RECEIVER_HH_
3 
4 #include "control_access.hh"
5 
6 // dripline
7 #include "hub.hh"
8 #include "message.hh"
9 
10 #include "param.hh"
11 
12 #include "cancelable.hh"
13 
14 #include <atomic>
15 #include <condition_variable>
16 #include <functional>
17 #include <memory>
18 
19 namespace psyllid
20 {
21  class run_server;
22  class daq_control;
35  class request_receiver : public dripline::hub, public control_access
36  {
37  public:
38  request_receiver( const scarab::param_node& a_master_config );
39  virtual ~request_receiver();
40 
41  void execute( std::condition_variable& a_daq_control_ready_cv, std::mutex& a_daq_control_ready_mutex );
42 
43  mv_referrable_const( scarab::param_node, set_conditions );
44  private:
45  virtual void do_cancellation( int a_code );
46 
47  public:
48  enum status
49  {
54  k_done = 10,
55  k_error = 100
56  };
57 
58  static std::string interpret_status( status a_status );
59 
60  status get_status() const;
61  void set_status( status a_status );
62 
63  private:
64  std::atomic< status > f_status;
65 
66  virtual dripline::reply_ptr_t __do_handle_set_condition_request( const dripline::request_ptr_t a_request );
67 
68  };
69 
71  {
72  return f_status.load();
73  }
74 
75  inline void request_receiver::set_status( status a_status )
76  {
77  f_status.store( a_status );
78  return;
79  }
80 
81 }
82 
83 #endif
void set_status(status a_status)
void execute(std::condition_variable &a_daq_control_ready_cv, std::mutex &a_daq_control_ready_mutex)
request_receiver(const scarab::param_node &a_master_config)
mv_referrable_const(scarab::param_node, set_conditions)
static std::string interpret_status(status a_status)
Gives other classes access to daq_control.
virtual void do_cancellation(int a_code)
Receives request from a amqp broker.
std::atomic< status > f_status
virtual dripline::reply_ptr_t __do_handle_set_condition_request(const dripline::request_ptr_t a_request)