libbbb  1.2.1
Groups common code used in some applications and libraries.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
jobinterf.h
Go to the documentation of this file.
1 /* ========================================================================= */
2 /* ------------------------------------------------------------------------- *//*
12 
13 
14  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15  Please read COPYING and README files in root folder
16  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 */
18 /* ------------------------------------------------------------------------- */
19 /* ========================================================================= */
20 #ifndef __JOBINTERF_INC__
21 #define __JOBINTERF_INC__
22 //
23 //
24 //
25 //
26 /* INCLUDES ------------------------------------------------------------ */
27 
28 #include <libbbb/libbbb.h>
29 #include <libbbb/amorph.h>
30 #include <libbbb/list2d.h>
31 #include <libbbb/timer.h>
32 
33 #include <QObject>
34 #include <QThread>
35 
36 /* INCLUDES ============================================================ */
37 //
38 //
39 //
40 //
41 /* DEFINITIONS --------------------------------------------------------- */
42 
43 namespace bbb {
44 
45 /* DEFINITIONS ========================================================= */
46 //
47 //
48 //
49 //
50 /* CLASS --------------------------------------------------------------- */
51 
63 class
64  BBBSHARED_EXPORT
65  JobInterf {
66 
67  //
68  //
69  //
70  //
71  /* DEFINITIONS ----------------------------------------------------- */
72 
73 public:
74 
78  typedef void (*KbTimeout) ( JobInterf * job );
79 
80  /* DEFINITIONS ===================================================== */
81  //
82  //
83  //
84  //
85  /* DATA ------------------------------------------------------------ */
86 
87 public:
88 
91 
92 protected:
93 
94 
96  KbTimeout kb_;
97 
100 
101  /* DATA ============================================================ */
102  //
103  //
104  //
105  //
106  /* FUNCTIONS ------------------------------------------------------- */
107 
108 public:
109 
110 
114  JobInterf ( void );
115 
116 
120  virtual ~JobInterf ( void );
121 
122 
126  virtual bool startJob ( void ) = 0;
127 
128 
132  virtual void stopJob ( void ) = 0;
133 
134 
138  virtual bool isJobRunning ( void ) const = 0;
139 
140 
144  virtual int frequency ( void ) const
145  { return freq_msec_; }
146 
147 
151  virtual void setFrequency ( int milisec )
152  { freq_msec_ = milisec; }
153 
154 
158  void setCallback ( KbTimeout val )
159  { kb_ = val; }
160 
161 
165  KbTimeout callback ( void )
166  { return kb_; }
167 
168 
169 
170  /* FUNCTIONS ======================================================= */
171  //
172  //
173  //
174  //
175 
176 }; /* class JobInterf */
177 
178 /* CLASS =============================================================== */
179 //
180 //
181 //
182 //
183 /* CLASS --------------------------------------------------------------- */
184 
185 class BBBSHARED_EXPORT JobInterf1 : public JobInterf {
186 public:
187  Amorph a1_;
188 };
189 class BBBSHARED_EXPORT JobInterf2 : public JobInterf1 {
190 public:
191  Amorph a2_;
192 };
193 class BBBSHARED_EXPORT JobInterf3 : public JobInterf2 {
194 public:
195  Amorph a3_;
196 };
197 class BBBSHARED_EXPORT JobInterf4 : public JobInterf3 {
198 public:
199  Amorph a4_;
200 };
201 
202 /* CLASS =============================================================== */
203 //
204 //
205 //
206 //
207 /* CLASS --------------------------------------------------------------- */
208 
212 class
213  BBBSHARED_EXPORT
214  JobBack : QObject, public JobInterf {
215 
216  //
217  //
218  //
219  //
220  /* DEFINITIONS ----------------------------------------------------- */
221 
222 public:
223 
224 
225  /* DEFINITIONS ===================================================== */
226  //
227  //
228  //
229  //
230  /* DATA ------------------------------------------------------------ */
231 
232 private:
233 
237  int id_;
238 
239 
240  /* DATA ============================================================ */
241  //
242  //
243  //
244  //
245  /* FUNCTIONS ------------------------------------------------------- */
246 
247 public:
248 
249 
253  JobBack ( void );
254 
255 
259  virtual ~JobBack ( void );
260 
261 
265  bool startJob ( void );
266 
267 
271  void stopJob ( void );
272 
273 
277  bool isJobRunning ( void ) const;
278 
279 
283  void setFrequency ( int milisec );
284 
285 
286 protected:
287 
288 
292  void timerEvent ( QTimerEvent * event );
293 
294 
295 
296  /* FUNCTIONS ======================================================= */
297  //
298  //
299  //
300  //
301 
302 }; /* class JobBack */
303 
304 
305 /* CLASS =============================================================== */
306 //
307 //
308 //
309 //
310 /* CLASS --------------------------------------------------------------- */
311 
312 class BBBSHARED_EXPORT JobBack1 : public JobBack {
313 public:
314  Amorph a1_;
315 };
316 class BBBSHARED_EXPORT JobBack2 : public JobBack1 {
317 public:
318  Amorph a2_;
319 };
320 class BBBSHARED_EXPORT JobBack3 : public JobBack2 {
321 public:
322  Amorph a3_;
323 };
324 class BBBSHARED_EXPORT JobBack4 : public JobBack3 {
325 public:
326  Amorph a4_;
327 };
328 
329 /* CLASS =============================================================== */
330 //
331 //
332 //
333 //
334 /* CLASS --------------------------------------------------------------- */
335 
339 class
340  BBBSHARED_EXPORT
341  JobWorker : QThread, public JobInterf {
342 
343  //
344  //
345  //
346  //
347  /* DEFINITIONS ----------------------------------------------------- */
348 
349 public:
350 
351 
352  /* DEFINITIONS ===================================================== */
353  //
354  //
355  //
356  //
357  /* DATA ------------------------------------------------------------ */
358 
359 private:
360 
361 
365  Timer1 * tm_;
366 
370  int cache_freq_;
371 
372  /* DATA ============================================================ */
373  //
374  //
375  //
376  //
377  /* FUNCTIONS ------------------------------------------------------- */
378 
379 public:
380 
381 
385  JobWorker ( void );
386 
387 
391  virtual ~JobWorker ( void );
392 
393 
397  bool startJob ( void );
398 
399 
403  void stopJob ( void );
404 
405 
409  bool isJobRunning ( void ) const;
410 
411 
415  void setFrequency ( int milisec );
416 
417 
418 protected:
419 
420 
424  virtual void run ( void );
425 
426 
427 private:
428 
429 
433  static bool internalTimeEvent ( Timer * t );
434 
435 
436  /* FUNCTIONS ======================================================= */
437  //
438  //
439  //
440  //
441 
442 }; /* class JobWorker */
443 
444 
445 /* CLASS =============================================================== */
446 //
447 //
448 //
449 //
450 /* CLASS --------------------------------------------------------------- */
451 
452 class BBBSHARED_EXPORT JobWorker1 : public JobWorker {
453 public:
454  Amorph a1_;
455 };
456 class BBBSHARED_EXPORT JobWorker2 : public JobWorker1 {
457 public:
458  Amorph a2_;
459 };
460 class BBBSHARED_EXPORT JobWorker3 : public JobWorker2 {
461 public:
462  Amorph a3_;
463 };
464 class BBBSHARED_EXPORT JobWorker4 : public JobWorker3 {
465 public:
466  Amorph a4_;
467 };
468 
469 /* CLASS =============================================================== */
470 //
471 //
472 //
473 //
474 /* CLASS --------------------------------------------------------------- */
475 
479 class
480  BBBSHARED_EXPORT
481  JobMultiWorkers : public JobInterf {
482 
483  //
484  //
485  //
486  //
487  /* DEFINITIONS ----------------------------------------------------- */
488 
489 public:
490 
494  class Th : public QThread, public List2De {
495 
496  JobMultiWorkers * j_;
497  Timer1 * tm_;
498  int cache_freq_;
499  public:
500  Th( JobMultiWorkers * j )
501  {
502  j_ = j;
503  tm_ = NULL;
504  cache_freq_ = 0;
505  }
506  virtual void run ( void );
507  private:
508  static bool internalTimeEvent ( Timer * t );
509 
510  };
511 
512 
513  /* DEFINITIONS ===================================================== */
514  //
515  //
516  //
517  //
518  /* DATA ------------------------------------------------------------ */
519 
520 private:
521 
522 
526  List2Dh threads_;
527 
531  int targ_th_;
532 
533  /* DATA ============================================================ */
534  //
535  //
536  //
537  //
538  /* FUNCTIONS ------------------------------------------------------- */
539 
540 public:
541 
542 
546  JobMultiWorkers ( void );
547 
548 
552  virtual ~JobMultiWorkers ( void );
553 
554 
558  bool startJob ( void );
559 
560 
564  void stopJob ( void );
565 
566 
570  bool isJobRunning ( void ) const;
571 
572 
576  void setFrequency ( int milisec );
577 
578 
582  int threadsCount ( void )
583  { return targ_th_; }
584 
585 
589  bool setThreadsCount ( int i )
590  {
591  if ( isJobRunning() )
592  return false;
593  targ_th_ = i;
594  return true;
595  }
596 
597 
598  /* FUNCTIONS ======================================================= */
599  //
600  //
601  //
602  //
603 
604 }; /* class JobMultiWorkers */
605 
606 
607 /* CLASS =============================================================== */
608 //
609 //
610 //
611 //
612 /* CLASS --------------------------------------------------------------- */
613 
614 class BBBSHARED_EXPORT JobMultiWorkers1 : public JobMultiWorkers {
615 public:
616  Amorph a1_;
617 };
618 class BBBSHARED_EXPORT JobMultiWorkers2 : public JobMultiWorkers1 {
619 public:
620  Amorph a2_;
621 };
622 class BBBSHARED_EXPORT JobMultiWorkers3 : public JobMultiWorkers2 {
623 public:
624  Amorph a3_;
625 };
626 class BBBSHARED_EXPORT JobMultiWorkers4 : public JobMultiWorkers3 {
627 public:
628  Amorph a4_;
629 };
630 
631 /* CLASS =============================================================== */
632 //
633 //
634 //
635 //
636 } // namespace bbb
637 
638 #endif // __JOBINTERF_INC__
639 /* ------------------------------------------------------------------------- */
640 /* ========================================================================= */