From 3c199adf6c317ade446120db1cdb51b473edca57 Mon Sep 17 00:00:00 2001 From: deva Date: Mon, 18 Aug 2008 14:54:03 +0000 Subject: Rewrite of all network code, with a reusable socket. Still needs some error checking. --- client/sendrecieve.cc | 161 -------------------------------------------------- 1 file changed, 161 deletions(-) delete mode 100644 client/sendrecieve.cc (limited to 'client/sendrecieve.cc') diff --git a/client/sendrecieve.cc b/client/sendrecieve.cc deleted file mode 100644 index 454ce30..0000000 --- a/client/sendrecieve.cc +++ /dev/null @@ -1,161 +0,0 @@ -/* -*- 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 -#include -#include -#include -#include - -#ifdef HOST_WIN32 -#include -#define sleep(x) Sleep(x * 1000) -#else -#include -#endif - -SendRecieve::SendRecieve(QString host, quint16 port) - : QObject() -{ - this->host = host; - this->port = port; - has_result = false; -} - -void SendRecieve::tcpConnect() -{ - printf("%s, %d\n", host.toStdString().c_str(), port); - tcpsocket->connectToHost(host, port); - tcpConnected = TCP_CONNECTING; -} - -void SendRecieve::tcpDisconnect() -{ - tcpsocket->disconnectFromHost(); - while(tcpConnected != TCP_DISCONNECTED) { - if(tcpConnected == TCP_ERROR) { - tcpConnected = TCP_DISCONNECTED; - return; - } - sleep(1); - 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 socketError) // slot -{ - tcpConnected = TCP_ERROR; - switch (socketError) { - case 0 : - QMessageBox::information(NULL, tr("Pracro"), tr("Couldn't connect to server.\nPlease contact a system administrator to resolve the problem.")); - exit(1); - break; - case 2 : - QMessageBox::information(NULL, tr("Pracro"), tr("Couldn't connect to server.\nPlease contact a system administrator to resolve the problem.")); - exit(1); - break; - default: - ; - } -} - -void SendRecieve::myReadyReadHandler() -{ - QByteArray ba; - - ba = tcpsocket->readAll(); - ba_all.append(ba); - - // HACK: To test if the received data is a complete xml document. - QDomDocument doc; - if(doc.setContent(ba_all)) { - has_result = true; - } -} - -QByteArray SendRecieve::getResult() -{ - while(has_result == false) { - qApp->processEvents(); - } - return ba_all; -} -- cgit v1.2.3