diff options
| author | senator <senator> | 2007-10-09 08:07:55 +0000 | 
|---|---|---|
| committer | senator <senator> | 2007-10-09 08:07:55 +0000 | 
| commit | 4060888474e49cc0716cdd59d4d1a73c06c5b3bc (patch) | |
| tree | 647c604988e145d6fb2c40d6c0cff58719e37181 /client/sendrecieve.cc | |
| parent | 8dadd3a9f18b6d4e8884862658fe8a1d042f631c (diff) | |
Code cleanup and commenting
Diffstat (limited to 'client/sendrecieve.cc')
| -rw-r--r-- | client/sendrecieve.cc | 132 | 
1 files changed, 132 insertions, 0 deletions
diff --git a/client/sendrecieve.cc b/client/sendrecieve.cc new file mode 100644 index 0000000..ab4d4c6 --- /dev/null +++ b/client/sendrecieve.cc @@ -0,0 +1,132 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            sendrecieve.cc + * + *  Fri Jul 13 12:38:45 CEST 2007 + *  Copyright 2007 Bent Bisballe Nyeng, Lars Bisballe Jensen and Peter Skaarup + *  deva@aasimon.org, elsenator@gmail.com and piparum@piparum.dk + ****************************************************************************/ + +/* + *  This file is part of Pracro. + * + *  Pracro is free software; you can redistribute it and/or modify + *  it under the terms of the GNU General Public License as published by + *  the Free Software Foundation; either version 2 of the License, or + *  (at your option) any later version. + * + *  Pracro is distributed in the hope that it will be useful, + *  but WITHOUT ANY WARRANTY; without even the implied warranty of + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + *  GNU General Public License for more details. + * + *  You should have received a copy of the GNU General Public License + *  along with Pracro; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ + +#include "sendrecieve.h" + +#include <stdio.h> +#include <QApplication> +#include <QTcpSocket> +#include <QDomDocument> +#include <QByteArray> + +SendRecieve::SendRecieve() +  : QObject() +{ +  has_result = false; +} + +void SendRecieve::tcpConnect() +{ +    tcpsocket->connectToHost("gargamel.j.auh.dk", 12345);  +    tcpConnected = TCP_CONNECTING; +} + +void SendRecieve::tcpDisconnect() +{ +  tcpsocket->disconnectFromHost(); +  while(tcpConnected != TCP_DISCONNECTED) { +    if(tcpConnected == TCP_ERROR) { +      tcpConnected = TCP_DISCONNECTED; +      return; +    } +    usleep(5000); +    printf("ERROR!!! Couldn't connect to host!\n"); +    qApp->processEvents(); +  } +} + +int SendRecieve::tcpStatus() +{ +  return tcpConnected; +} + +void SendRecieve::makeConnection(QDomDocument *xml_req) +{ +  this->xml_req = xml_req; + +  tcpsocket = new QTcpSocket; +  connect(tcpsocket, SIGNAL(hostFound()), this, SLOT(myHostFound())); +  connect(tcpsocket, SIGNAL(readyRead()), this, SLOT(myReadyReadHandler())); +  connect(tcpsocket, SIGNAL(connected()), this, SLOT(myConnected())); +  connect(tcpsocket, SIGNAL(disconnected()), this, SLOT(myDisconnected())); +  connect(tcpsocket, SIGNAL(error(QAbstractSocket::SocketError)),  +          this, SLOT(myError(QAbstractSocket::SocketError))); +  tcpConnect(); +} + +void SendRecieve::myTcpWrite(char *msg, int len) +{ +  if(tcpConnected == TCP_CONNECTED)  +    tcpsocket->write(msg, len); +  else  +    printf("TCP socket not initialized!\n"); +} + +void SendRecieve::myHostFound() // slot +{ +  printf("Host Found!\n"); +} + +void SendRecieve::myConnected() // slot +{ +  tcpConnected = TCP_CONNECTED; +  printf("TCP Connected!\n"); + +  QByteArray ba = xml_req->toByteArray(); +  char *request = ba.data(); +  myTcpWrite(request, ba.length()); +} + +void SendRecieve::myDisconnected() // slot +{ +  tcpConnected = TCP_DISCONNECTED; +  printf("TCP Disconnected!\n"); + +  // Result recieved, allow getResult to return ba_all +  has_result = true; +} + +void SendRecieve::myError(QAbstractSocket::SocketError) // slot +{ +  tcpConnected = TCP_ERROR; +} + +void SendRecieve::myReadyReadHandler() +{ +  QByteArray ba; + +  ba = tcpsocket->readAll(); +  ba_all.append(ba); +} + +QByteArray SendRecieve::getResult() +{ +  while(has_result == false) { +    qApp->processEvents(); +  } +  return ba_all; +}  | 
