Midge  v3.9.2
Data Processing Framework
diptera.hh
Go to the documentation of this file.
1 #ifndef _midge_midge_hh_
2 #define _midge_midge_hh_
3 
4 #include "instructable.hh"
5 
6 #include "cancelable.hh"
7 
8 #include <functional>
9 #include <map>
10 #include <set>
11 #include <thread>
12 #include <vector>
13 
14 namespace midge
15 {
16  class node;
17  class producer;
18  class thread;
19 
20  class diptera : public scarab::cancelable
21  {
22  public:
23  diptera();
24  ~diptera();
25 
26  public:
28  void add( node* p_node );
29 
31  void connect( const std::string& p_string );
32 
34 
43  void join( const std::string& p_string );
44 
47  std::exception_ptr run( const std::string& p_string );
48 
50  void throw_ex( std::exception_ptr e_ptr );
51 
52  void reset();
53 
54  void instruct( instruction p_inst );
55 
56  void set_running_callback( std::function< void() > a_callback );
57 
58  static const std::string& connector();
59  static const std::string& designator();
60  static const std::string& separator();
61 
62  private:
63  virtual void do_cancellation( int a_code );
64  virtual void do_reset_cancellation();
65 
66  typedef std::map< std::string, node* > node_map_t;
67  typedef node_map_t::iterator node_it_t;
68  typedef node_map_t::const_iterator node_cit_t;
69  typedef node_map_t::value_type node_entry_t;
70 
71  node_map_t f_nodes;
72 
73  typedef std::set< instructable* > inst_set_t;
74  typedef inst_set_t::iterator inst_it_t;
75  typedef inst_set_t::const_iterator inst_cit_t;
76  typedef inst_set_t::value_type inst_entry_t;
77 
78  inst_set_t f_instructables;
79 
80  typedef std::vector< std::thread > thread_vector_t;
81  typedef thread_vector_t::iterator thread_it_t;
82  typedef thread_vector_t::const_iterator thread_cit_t;
83 
84  thread_vector_t f_threads;
85  std::mutex f_threads_mutex;
86 
87  std::exception_ptr f_run_e_ptr;
88 
89  std::function< void() > f_running_callback;
90 
91  static const std::string s_connector;
92  static const std::string s_designator;
93  static const std::string s_separator;
94  };
95 
96  inline void diptera::set_running_callback( std::function< void() > a_callback )
97  {
98  f_running_callback = a_callback;
99  return;
100  }
101 
102 }
103 
104 #endif
inst_set_t::value_type inst_entry_t
Definition: diptera.hh:76
static const std::string & connector()
Definition: diptera.cc:484
Definition: _buffer.hh:11
virtual void do_cancellation(int a_code)
Definition: diptera.cc:415
void throw_ex(std::exception_ptr e_ptr)
To be used by running nodes to throw an exception.
Definition: diptera.cc:347
static const std::string & designator()
Definition: diptera.cc:489
inst_set_t::iterator inst_it_t
Definition: diptera.hh:74
void instruct(instruction p_inst)
Definition: diptera.cc:403
node_map_t::iterator node_it_t
Definition: diptera.hh:67
inst_set_t::const_iterator inst_cit_t
Definition: diptera.hh:75
static const std::string s_designator
Definition: diptera.hh:92
node_map_t f_nodes
Definition: diptera.hh:71
thread_vector_t f_threads
Definition: diptera.hh:84
static const std::string s_separator
Definition: diptera.hh:93
void connect(const std::string &p_string)
Connect a signal to a slot: signal_node.signal:slot_node.slot.
Definition: diptera.cc:72
virtual void do_reset_cancellation()
Definition: diptera.cc:467
std::vector< std::thread > thread_vector_t
Definition: diptera.hh:80
thread_vector_t::iterator thread_it_t
Definition: diptera.hh:81
void set_running_callback(std::function< void() > a_callback)
Definition: diptera.hh:96
std::function< void() > f_running_callback
Definition: diptera.hh:89
void reset()
Definition: diptera.cc:379
node_map_t::const_iterator node_cit_t
Definition: diptera.hh:68
std::exception_ptr f_run_e_ptr
Definition: diptera.hh:87
thread_vector_t::const_iterator thread_cit_t
Definition: diptera.hh:82
static const std::string & separator()
Definition: diptera.cc:494
static const std::string s_connector
Definition: diptera.hh:91
node_map_t::value_type node_entry_t
Definition: diptera.hh:69
std::mutex f_threads_mutex
Definition: diptera.hh:85
std::map< std::string, node *> node_map_t
Definition: diptera.hh:66
void join(const std::string &p_string)
Join one node to another.
Definition: diptera.cc:147
std::exception_ptr run(const std::string &p_string)
Definition: diptera.cc:269
void add(node *p_node)
Add a node.
Definition: diptera.cc:39
std::set< instructable *> inst_set_t
Definition: diptera.hh:73
inst_set_t f_instructables
Definition: diptera.hh:78