Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>pull/3/head
parent
281a7702cf
commit
2d49c44c47
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,55 +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. *
|
|
||||||
***************************************************************************/
|
|
||||||
|
|
||||||
#ifndef UIGUIINDENTSERVER_H
|
|
||||||
#define UIGUIINDENTSERVER_H
|
|
||||||
|
|
||||||
#include <tqobject.h>
|
|
||||||
|
|
||||||
class TQTcpServer;
|
|
||||||
class TQTcpSocket;
|
|
||||||
|
|
||||||
|
|
||||||
class UiGuiIndentServer : public TQObject
|
|
||||||
{
|
|
||||||
TQ_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
UiGuiIndentServer(void);
|
|
||||||
~UiGuiIndentServer(void);
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void startServer();
|
|
||||||
void stopServer();
|
|
||||||
|
|
||||||
private slots:
|
|
||||||
void handleNewConnection();
|
|
||||||
void handleReceivedData();
|
|
||||||
void sendMessage(const TQString &message);
|
|
||||||
void checkIfReadyForHandleRequest();
|
|
||||||
|
|
||||||
private:
|
|
||||||
TQTcpServer *_tcpServer;
|
|
||||||
TQByteArray _dataToSend;
|
|
||||||
bool _readyForHandleRequest;
|
|
||||||
TQTcpSocket *_currentClientConnection;
|
|
||||||
TQ_UINT32 _blockSize;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // UIGUIINDENTSERVER_H
|
|
Loading…
Reference in new issue