PACK Qt Binding  $VERSION$
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Friends Macros
transaction.h
Go to the documentation of this file.
1 // Copyright (C) 2009-2011 by Konrad Rosenbaum <konrad@silmor.de>
2 // protected under the GNU LGPL version 3 or at your option any newer.
3 // See COPYING.LGPL file that comes with this distribution.
4 //
5 
6 #ifndef WOLF_TRANSACTION_H
7 #define WOLF_TRANSACTION_H
8 
9 #include <QObject>
10 #include <QList>
11 #include <QString>
12 
13 #include "nullable.h"
14 #include "WHelper"
15 #include <QPointer>
16 
18 
21 {
22  Q_OBJECT
23  Q_ENUMS(Stage)
24  Q_PROPERTY(Stage stage READ stage)
25  Q_PROPERTY(bool isInProgress READ isInProgress)
26  Q_PROPERTY(bool isFinished READ isFinished)
27  Q_PROPERTY(bool isUnstarted READ isUnstarted)
28  Q_PROPERTY(bool hasError READ hasError)
29  Q_PROPERTY(QString errorType READ errorType)
30  Q_PROPERTY(QString errorString READ errorString)
31  Q_PROPERTY(QString interfaceName READ interface)
32  public:
34  static void setLogPrefix(QString);
35 
37  enum Stage {
38  Uninitialized=0,
39  Request=1,
40  Success=6,
41  Error=10,
42  };
43 
45  virtual Stage stage()const;
47  virtual bool isInProgress()const{return stage()==Request;}
49  virtual bool isFinished()const{return stage()&2;}
51  virtual bool isUnstarted()const{return stage()==Uninitialized;}
52 
54  virtual bool hasError()const;
56  virtual QString errorType()const;
58  virtual QString errorString()const;
59 
61  virtual QString interface()const;
62 
64  virtual ~WTransaction();
65 
67  class Log;
68  class LogWrap;
69 
71  class WOLF_BASE_EXPORT WaitFor_Private {
72  public:
73  virtual ~WaitFor_Private(){}
74  WaitFor_Private& operator<<(WTransaction&);
75  WaitFor_Private& operator<<(WTransaction*);
76  protected:
77  WaitFor_Private(int t){m_tmout=t;}
78  virtual void loop()=0;
79  QList<QPointer<WTransaction> > m_trn;
80  int m_tmout;
81  };
82 
84  class WOLF_BASE_EXPORT WaitForAny:public WaitFor_Private{
85  public:
86  WaitForAny(int tmout=0):WaitFor_Private(tmout){}
87  virtual ~WaitForAny(){loop();}
88  protected:
89  void loop();
90  };
92  class WOLF_BASE_EXPORT WaitForAll:public WaitFor_Private{
93  public:
94  WaitForAll(int tmout=0):WaitFor_Private(tmout){}
95  virtual ~WaitForAll(){loop();}
96  protected:
97  void loop();
98  };
99 
100  public slots:
103  virtual bool waitForFinished(int tmout=30000);
104 
105  protected:
107  WTransaction(QString iface=QString());
109  WTransaction(const WTransaction&);
110 
112  virtual WTransaction& operator=(const WTransaction&);
113 
115  virtual QByteArray executeQuery(QString,QByteArray);
116 
118  virtual void startQuery(QString,QByteArray);
119 
121  virtual QByteArray encodeError()const;
122 
123  protected slots:
125  virtual void endQuery();
126  signals:
128  void finished();
129  protected:
130  friend class WTransaction::Log;
131  friend class WTransaction::LogWrap;
132  friend class WTransaction_Private;
134 
136  virtual bool canLogRequest()const;
138  virtual bool canLogResponse()const;
139 };
140 
141 #endif
WaitForAll(int tmout=0)
Definition: transaction.h:94
Stage
Definition: transaction.h:37
virtual bool isFinished() const
returns true if the transaction is finished
Definition: transaction.h:49
WTransaction_Private * d
Definition: transaction.h:133
virtual ~WaitForAny()
Definition: transaction.h:87
Definition: transaction.h:84
virtual bool isInProgress() const
returns true if the transaction is currently in progress
Definition: transaction.h:47
Definition: helper.h:20
LogWrap(WTransaction *parent, const QString &request, const QString &interface=QString())
Definition: transaction.h:20
Definition: transaction_p.h:50
virtual ~WaitForAll()
Definition: transaction.h:95
Log(WTransaction *parent, const QString &request, const QString &interface=QString())
Definition: transaction.h:92
#define WOLF_BASE_EXPORT
Definition: exception.h:13
virtual bool isUnstarted() const
returns true if the transaction has not started yet
Definition: transaction.h:51
WaitForAny(int tmout=0)
Definition: transaction.h:86