My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
Master.h
1 #ifndef SZA_TRANSLTOR_MASTER_H
2 #define SZA_TRANSLTOR_MASTER_H
3 
11 #include <vector>
12 
13 #include "gcp/util/common/Directives.h"
14 #include "gcp/util/common/GenericMasterTask.h"
15 
16 #include "gcp/grabber/common/MasterMsg.h"
17 
18 #define IMAGE_SIGNAL SIGRTMIN+1
19 #define CONNECT_SIGNAL SIGRTMIN+2
20 
21 #define CONNECT_SEC 2
22 
23 #define MASTER_TASK_FWD_FN(fn) void (fn)(MasterMsg* msg)
24 
25 namespace gcp {
26  namespace grabber {
27 
28  class Control;
29  class Scanner;
30 
46  class Master :
47  public gcp::util::GenericMasterTask<MasterMsg> {
48 
49  public:
50 
51  //============================================================
52  // Master public members & methods
53  //============================================================
54 
60  Master(std::string ctlHost, std::string imHost,
61  bool simulate, unsigned channel);
62 
66  ~Master();
67 
72  std::string ctlHost();
73  std::string imHost();
74 
78  MASTER_TASK_FWD_FN(forwardMasterMsg);
79 
83  MASTER_TASK_FWD_FN(forwardScannerMsg);
84 
88  MASTER_TASK_FWD_FN(forwardControlMsg);
89 
90  unsigned channel() {
91  return channel_;
92  }
93 
94  private:
95 
96  //============================================================
97  // Master private members & methods
98  //============================================================
99 
104  static Master* master_;
105 
109  Control* control_;
110  Scanner* scanner_;
111 
112  // The control host to connect to.
113 
114  std::string ctlHost_;
115 
116  // The host to send images to
117 
118  std::string imHost_;
119 
123  bool simulate_;
124 
125  inline bool simulate() {
126  return simulate_;
127  }
128 
129  unsigned channel_;
130 
131  //------------------------------------------------------------
132  // Thread management methods
133  //------------------------------------------------------------
134 
138  static THREAD_START(startControl);
139 
143  static THREAD_CLEAN(cleanControl);
144 
148  static THREAD_START(startScanner);
149 
153  static THREAD_CLEAN(cleanScanner);
154 
158  static THREAD_START(startSignal);
159 
163  static THREAD_CLEAN(cleanSignal);
164 
165  //------------------------------------------------------------
166  // Message processing
167 
171  void processMsg(MasterMsg* msg);
172 
173  //------------------------------------------------------------
174  // Static functions which will be passed to the
175  // Signal class as callbacks on receipt of signals.
176  //------------------------------------------------------------
177 
181  static SIGNALTASK_HANDLER_FN(sendShutDownMsg);
182 
186  static SIGNALTASK_HANDLER_FN(sendConnectControlMsg);
187 
191  static SIGNALTASK_HANDLER_FN(sendConnectScannerMsg);
192 
197  void sendControlConnectedMsg(bool connected);
198 
203  void sendScannerConnectedMsg(bool connected);
204 
208  void installSignals();
209 
213  void installTimers();
214 
215  }; // End class Master
216 
217  }; // End namespace grabber
218 }; // End namespace gcp
219 
220 
221 #endif // End #ifndef
~Master()
Definition: Master.cc:82
std::string imHost()
Definition: Master.cc:95
Definition: GenericMasterTask.h:22
Definition: MasterMsg.h:20
Definition: Master.h:46
MASTER_TASK_FWD_FN(forwardMasterMsg)
Definition: Scanner.h:27
Definition: Control.h:45
Master(std::string ctlHost, std::string imHost, bool simulate, unsigned channel)
std::string ctlHost()
Definition: Master.cc:87