Go to the documentation of this file.00001
00002
00003
00004
00005
00006 #ifndef WOLF_TRANSACTION_PH
00007 #define WOLF_TRANSACTION_PH
00008
00009 #include <QByteArray>
00010 #include <QString>
00011 #include <QPointer>
00012
00013 #include "WTransaction"
00014
00015 class QTimer;
00016 class QNetworkReply;
00017
00019 class WTransaction::Log{
00020 public:
00028 Log(WTransaction*parent,const QString&request,const QString&interface=QString());
00030 ~Log();
00031
00033 void setRequ(const QString&,const QString&);
00035 void setResp(const QString&,const QString&);
00037 void setError(const QString&);
00039 void setInfo(const QString&);
00040 private:
00041 QString req,rsp;
00042 QString trn,ifc;
00043 WTransaction*parent;
00044 int lvl,cnt;
00045
00046 void outStr(const QString&);
00047 };
00048
00050 class WTransaction_Private:public QObject {
00051 Q_OBJECT
00052 public:
00053 WTransaction_Private(WTransaction*);
00054 virtual ~WTransaction_Private();
00056 virtual QByteArray executeQuery(QString,QByteArray);
00057
00059 virtual void startQuery(QString,QByteArray);
00060
00061 public slots:
00063 virtual void webTimeout();
00065 virtual void webReady();
00067 virtual void webError();
00069 virtual void endQuery();
00070 signals:
00072 void webFinished();
00074 void dataAvailable();
00075
00076 public:
00077 WTransaction::Stage m_stage;
00078 QString m_errtype,m_errstr,m_iface,m_wobstatus;
00079 WTransaction::Log*m_log;
00080 QPointer<QNetworkReply>m_rsp;
00081 QByteArray m_rspdata;
00082 QPointer<QTimer>m_qtimeout;
00083
00084 public slots:
00086 WTransaction_Private* attach(WTransaction*);
00088 void detach(QObject*);
00089 private:
00091 int m_refctr;
00092 };
00093
00095 class WTransaction::LogWrap{
00096 public:
00098 LogWrap(WTransaction*parent,const QString&request,const QString&interface=QString());
00099
00101 void setRequ(const QString&,const QString&);
00103 void setResp(const QString&,const QString&);
00105 void setError(const QString&);
00107 void setInfo(const QString&);
00108 private:
00109 WTransaction*parent;
00110 };
00111
00112 class WTransaction_PrivateBase {
00113 private:
00114 int refctr;
00115 protected:
00116 WTransaction_PrivateBase();
00117 virtual ~WTransaction_PrivateBase();
00118 public:
00119 virtual void attach(){refctr++;}
00120 virtual void detach(){refctr--;if(refctr==0)delete this;}
00121 };
00122
00123 #endif