diff options
Diffstat (limited to 'src/__TODO/UiGuiIndentServer.cpp')
-rw-r--r-- | src/__TODO/UiGuiIndentServer.cpp | 175 |
1 files changed, 0 insertions, 175 deletions
diff --git a/src/__TODO/UiGuiIndentServer.cpp b/src/__TODO/UiGuiIndentServer.cpp deleted file mode 100644 index 5a39951..0000000 --- a/src/__TODO/UiGuiIndentServer.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006-2012 by Thomas Schweitzer * - * thomas-schweitzer(at)arcor.de * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License version 2.0 as * - * published by the Free Software Foundation. * - * * - * This program 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 this program in the file LICENSE.GPL; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include "UiGuiIndentServer.h" - -#include <tqtcpserver.h> -#include <tqtcpsocket.h> -#include <tqmessagebox.h> -#include <tqtdebug.h> - -// \defgroup grp_Server All concerning the server component. - -/* - \class UiGuiIndentServer - \ingroup grp_Server - \brief UiGuiIndentServer is in such an early state, that even the communication - protocol isn't completely planned. So this class lacks documentation until - I really know where all this will lead to. - - The plan however is to have a server that receives commands for selecting an - indenter and perhaps load some by the user predefined indenter config file. Then - the client can send a text to it and will receive it formatted. - The idea behind that is to make UiGUIs use as plugin or whatever more flexible. - So the plugin is developed for Eclipse for example and it takes the client role, - making it possible to use UiGUI from within Eclipse. Choosing a network protocol - makes everything platform and programming language independent, so it doesn't - matter for which application the plugin/client is developed. -*/ - -UiGuiIndentServer::UiGuiIndentServer(void) : - TQObject() -{ - _tcpServer = NULL; - _currentClientConnection = NULL; - _readyForHandleRequest = false; -} - -UiGuiIndentServer::~UiGuiIndentServer(void) -{ -} - -void UiGuiIndentServer::startServer() -{ - if (_tcpServer == NULL) - { - _tcpServer = new TQTcpServer(this); - } - - if (!_tcpServer->isListening()) - { - if (!_tcpServer->listen(TQHostAddress::Any, tquint16(84484))) - { - TQMessageBox::critical(NULL, tr("UiGUI Server"), - tr("Unable to start the server: %1.").arg(_tcpServer->errorString())); - return; - } - } - - connect(_tcpServer, TQ_SIGNAL(newConnection()), this, TQ_SLOT(handleNewConnection())); - _readyForHandleRequest = true; - _blockSize = 0; -} - -void UiGuiIndentServer::stopServer() -{ - if (_tcpServer != NULL) - { - _tcpServer->close(); - delete _tcpServer; - _tcpServer = NULL; - } - _currentClientConnection = NULL; - _readyForHandleRequest = false; -} - -void UiGuiIndentServer::handleNewConnection() -{ - TQTcpSocket *clientConnection = _tcpServer->nextPendingConnection(); - connect(clientConnection, TQ_SIGNAL(disconnected()), clientConnection, TQ_SLOT(deleteLater())); - - connect(clientConnection, TQ_SIGNAL(readyRead()), this, TQ_SLOT(handleReceivedData())); -} - -void UiGuiIndentServer::handleReceivedData() -{ - if (!_readyForHandleRequest) - { - return; - } - - _currentClientConnection = qobject_cast<TQTcpSocket*>(sender()); - TQString receivedData = ""; - - if (_currentClientConnection != NULL) - { - TQDataStream in(_currentClientConnection); - in.setVersion(TQDataStream::TQt_4_0); - - if (_blockSize == 0) - { - if (_currentClientConnection->bytesAvailable() < (int)sizeof(tquint32)) - { - return; - } - - in >> _blockSize; - } - - if (_currentClientConnection->bytesAvailable() < _blockSize) - { - return; - } - - TQString receivedMessage; - in >> receivedMessage; - - _blockSize = 0; - - tqDebug() << "receivedMessage: " << receivedMessage; - - if (receivedMessage == "ts") - { - sendMessage("Toll"); - } - else - { - sendMessage("irgendwas"); - } - } -} - -void UiGuiIndentServer::sendMessage(const TQString &message) -{ - _readyForHandleRequest = false; - - _dataToSend = ""; - TQDataStream out(&_dataToSend, TQIODevice::WriteOnly); - out.setVersion(TQDataStream::TQt_4_0); - out << (tquint32)0; - out << message; - out.device()->seek(0); - out << (tquint32)(_dataToSend.size() - sizeof(tquint32)); - - connect(_currentClientConnection, TQ_SIGNAL(bytesWritten(qint64)), this, - TQ_SLOT(checkIfReadyForHandleRequest())); - _currentClientConnection->write(_dataToSend); -} - -void UiGuiIndentServer::checkIfReadyForHandleRequest() -{ - if (_currentClientConnection->bytesToWrite() == 0) - { - TQString dataToSendStr = _dataToSend.right(_dataToSend.size() - sizeof(tquint32)); - tqDebug() << "checkIfReadyForHandleRequest _dataToSend was: " << dataToSendStr; - disconnect(_currentClientConnection, TQ_SIGNAL(bytesWritten(qint64)), this, - TQ_SLOT(checkIfReadyForHandleRequest())); - _readyForHandleRequest = true; - } -} |