File: threadscan.h

package info (click to toggle)
guymager 0.4.2-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 932 kB
  • ctags: 1,580
  • sloc: cpp: 8,522; ansic: 2,571; makefile: 49; sh: 23
file content (101 lines) | stat: -rw-r--r-- 2,777 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// ****************************************************************************
//  Project:        GUYMAGER
// ****************************************************************************
//  Programmer:     Guy Voncken
//                  Police Grand-Ducale
//                  Service de Police Judiciaire
//                  Section Nouvelles Technologies
// ****************************************************************************

#include <QObject>  //lint !e537 Repeated include
#include <QThread>

#ifndef __DEVICE_H__
   #include "device.h"
#endif

#ifndef __COMMON_H__
   #include "common.h"
#endif

class t_ThreadScanWorker: public QObject
{
   Q_OBJECT

   public slots:
      virtual void SlotRescan (void) = 0;

   signals:
      void SignalScanFinished (t_pDeviceList);
      void SignalScanStarted  (void)         ;
};

class t_ThreadScanWorkerPartedLocal;
class t_ThreadScanWorkerParted: public t_ThreadScanWorker
{
   Q_OBJECT

   public:
      t_ThreadScanWorkerParted (APIRET &rc);
     ~t_ThreadScanWorkerParted (void);

   public slots:
      void SlotRescan (void);

   private:
      t_ThreadScanWorkerPartedLocal *pOwn;
};


class t_ThreadScanWorkerHALLocal;
class t_ThreadScanWorkerHAL: public t_ThreadScanWorker
{
   Q_OBJECT

   public:
      t_ThreadScanWorkerHAL (APIRET &rc);
     ~t_ThreadScanWorkerHAL (void);

   private:
      QList<QVariant> CallMethod        (const QString &Device, const QString &Method, const QString &Argument);
      QVariant        CallMethodSingle  (const QString &Device, const QString &Method, const QString &Argument);
      APIRET          GetProperty       (const QString &Device, const QString &Property, QList<QVariant> &VarList);
      APIRET          GetPropertySingle (const QString &Device, const QString &Property, QVariant        &Var    );
      bool            PropertyContains  (const QString &Device, const QString &Property, const QString   &Str    );

   public slots:
      void SlotRescan (void);

   private:
      t_ThreadScanWorkerHALLocal *pOwn;
};


class t_ThreadScan: public QThread
{
   public:
      t_ThreadScan (void);
      APIRET Start (t_ThreadScanWorker **ppWorker);  // Return ptr to worker, so calling fn may emit signals to it
      APIRET Stop  ();

   protected:
      void run (void);

   private:
      t_ThreadScanWorker **ppoWorker;
      APIRET                 oWorkerRc;
};

enum
{
   ERROR_THREADSCAN_NOT_STARTED = ERROR_BASE_THREADSCAN,
   ERROR_THREADSCAN_NOT_STOPPED,
   ERROR_THREADSCAN_EXITCODE_NONZERO,
   ERROR_THREADSCAN_PROCESS_NOTSTARTED,
   ERROR_THREADSCAN_PROCESS_NOTFINISHED,
   ERROR_THREADSCAN_DBUSHAL_NOTWORKING,
   ERROR_THREADSCAN_LIBPARTED_NOTWORKING,
   ERROR_THREADSCAN_PROPERTY_NONEXISTENT,
   ERROR_THREADSCAN_CALLED_FROM_WRONG_THREAD
};