diff options
author | deva <deva> | 2009-11-03 13:49:15 +0000 |
---|---|---|
committer | deva <deva> | 2009-11-03 13:49:15 +0000 |
commit | 1782d12938ba89b67a52677d162d4c865f00cbe0 (patch) | |
tree | c4fe0ccd65af6485433310e54e8e8fef43f251da /client | |
parent | c91d9e62801aca5a12ca37429c39a71e6351d6d5 (diff) |
First working, but not in any way optimal implementation of a http transport layer.
Diffstat (limited to 'client')
-rw-r--r-- | client/netcom.cc | 58 | ||||
-rw-r--r-- | client/netcom.h | 13 |
2 files changed, 30 insertions, 41 deletions
diff --git a/client/netcom.cc b/client/netcom.cc index 3b3abb7..6150227 100644 --- a/client/netcom.cc +++ b/client/netcom.cc @@ -29,28 +29,27 @@ #include <QApplication> #include <QByteArray> +#include <QHttp> + #include "widgets/widget.h" NetCom::NetCom(QString host, quint16 port, QString user, QString cpr) { this->user = user; this->cpr = cpr; - socket.connectToHost(host, port); - connect(&socket, SIGNAL(readyRead()), this, SLOT(readyRead())); - socket.waitForConnected(); - transmitting = false; + + connect(&http, SIGNAL(done(bool)), this, SLOT(done(bool))); + http.setHost(host, port); + + transfering = false; } NetCom::~NetCom() { - socket.disconnectFromHost(); } QDomDocument NetCom::send(QString templ, QString macro, bool lockgui) { - printf("Socket state: %d\n", socket.state()); - if(socket.state() != 3) printf("Socket state not connected: %s\n", socket.errorString().toStdString().c_str()); - if(lockgui && qApp->activeWindow()) qApp->activeWindow()->setEnabled(false); if(lockgui) QApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); @@ -72,14 +71,15 @@ QDomDocument NetCom::send(QString templ, QString macro, bool lockgui) printf("\nSending request:\n%s", doc.toString().toStdString().c_str()); - socket.write(doc.toByteArray()); - // socket.waitForReadyRead(); + http.post("/", doc.toByteArray()); + QDomDocument res_doc; + transfering = true; + buffer = ""; do { qApp->processEvents(QEventLoop::WaitForMoreEvents); - } while(!res_doc.setContent(buffer)); - - buffer = ""; + } while(transfering); + res_doc.setContent(buffer); QDomElement elem = res_doc.documentElement(); @@ -91,18 +91,8 @@ QDomDocument NetCom::send(QString templ, QString macro, bool lockgui) return res_doc; } -void NetCom::readyRead() -{ - buffer.append(socket.readAll()); -} - void NetCom::send(QVector< Widget* > widgets, QString templ, QString macro, QString version) { - printf("Socket state: %d\n", socket.state()); - if(socket.state() != 3) printf("Socket state not connected: %s\n", socket.errorString().toStdString().c_str()); - - // if(qApp->activeWindow()) qApp->activeWindow()->setEnabled(false); // Moved down! - QDomDocument doc; QDomProcessingInstruction header = doc.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'"); @@ -139,22 +129,20 @@ void NetCom::send(QVector< Widget* > widgets, QString templ, QString macro, QStr printf("\nSending commit:\n%s", doc.toString().toStdString().c_str()); - socket.write(doc.toByteArray()); - // socket.waitForReadyRead(); + http.post("/", doc.toByteArray()); - // - // Wait for the (hopefully) empty answer. - // + transfering = true; + buffer = ""; do { qApp->processEvents(QEventLoop::WaitForMoreEvents); - } while(!res_doc.setContent(buffer)); - - buffer = ""; - - //QDomElement elem = res_doc.documentElement(); - - printf("\nRecieved commit:\n%s", res_doc.toString().toStdString().c_str()); + } while(transfering); QApplication::restoreOverrideCursor(); if(qApp->activeWindow()) qApp->activeWindow()->setEnabled(true); } + +void NetCom::done(bool) +{ + buffer = http.readAll(); + transfering = false; +} diff --git a/client/netcom.h b/client/netcom.h index 35db221..e11509b 100644 --- a/client/netcom.h +++ b/client/netcom.h @@ -31,6 +31,7 @@ #include <QString> #include <QTcpSocket> #include <QDomDocument> +#include <QHttp> //#include "widgets/widget.h" class Widget; @@ -45,17 +46,17 @@ public: void send(QVector< Widget* > widgets, QString templ, QString macro, QString version); public slots: - void readyRead(); + void done(bool); private: - volatile bool transmitting; - QTcpSocket socket; - - QByteArray buffer; - QDomDocument res_doc; + volatile bool transfering; QString user; QString cpr; + + QHttp http; + + QByteArray buffer; }; #endif/*__PRACRO_NETCOM_H__*/ |