summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-06-19 13:10:57 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2014-06-23 15:08:05 +0200
commitaca0e939b35053db96391629783d991a2e930b4f (patch)
tree8cdd3fa796a43ac76887952b12dcee11873ff9a7
parentb3f0887216226dd641e4297ac660f49a5e97c57d (diff)
Initialize both client and server with default values.
Change-Id: I51934b0de77b1062153f5f60be44d4bcf4be5ee5 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp5
-rw-r--r--src/libs/installer/protocol.h15
-rw-r--r--src/libs/installer/remoteclient.cpp16
-rw-r--r--src/libs/installer/remoteclient.h17
-rw-r--r--src/libs/installer/remoteclient_p.h27
-rw-r--r--src/libs/installer/remoteserver.cpp8
-rw-r--r--src/libs/installer/remoteserver.h8
-rw-r--r--src/libs/installer/remoteserver_p.h7
-rw-r--r--src/sdk/installerbase.cpp2
-rw-r--r--tests/auto/installer/clientserver/tst_clientserver.cpp13
10 files changed, 61 insertions, 57 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index f929b5fa3..0ea6884fd 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -54,6 +54,7 @@
#include "packagemanagercore.h"
#include "progresscoordinator.h"
#include "qprocesswrapper.h"
+#include "protocol.h"
#include "qsettingswrapper.h"
#include "remoteclient.h"
@@ -230,10 +231,10 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core, q
// Creates and initializes a remote client, makes us get admin rights for QFile, QSettings
// and QProcess operations.
int port = 30000 + qrand() % 1000;
- RemoteClient::instance().init(port, QHostAddress::LocalHost, RemoteClient::Release);
+ RemoteClient::instance().init(port, QHostAddress::LocalHost, Protocol::Mode::Release);
RemoteClient::instance().setStartServerCommand(QCoreApplication::applicationFilePath(),
QStringList() << QLatin1String("--startserver") << QString::number(port)
- << RemoteClient::instance().authorizationKey(), RemoteClient::Administrator);
+ << RemoteClient::instance().authorizationKey(), Protocol::StartAs::SuperUser);
connect(this, SIGNAL(installationStarted()), m_core, SIGNAL(installationStarted()));
connect(this, SIGNAL(installationFinished()), m_core, SIGNAL(installationFinished()));
diff --git a/src/libs/installer/protocol.h b/src/libs/installer/protocol.h
index cc084c221..8279cc640 100644
--- a/src/libs/installer/protocol.h
+++ b/src/libs/installer/protocol.h
@@ -45,11 +45,24 @@
namespace QInstaller {
namespace Protocol {
+enum struct Mode {
+ Debug,
+ Release
+};
+
+enum struct StartAs {
+ User,
+ SuperUser
+};
+
+const unsigned short DefaultPort = 39999;
+const int DefaultHostAddress = 2; // QHostAddress::LocalHost
+const char DefaultAuthorizationKey[] = "DefaultAuthorizationKey";
+
const char Create[] = "Create";
const char Destroy[] = "Destroy";
const char Shutdown[] = "Shutdown";
const char Authorize[] = "Authorize";
-const char DebugAuthorizationKey[] = "DebugAuthorizationKey";
// QProcessWrapper
const char QProcess[] = "QProcess";
diff --git a/src/libs/installer/remoteclient.cpp b/src/libs/installer/remoteclient.cpp
index 8bab64999..94fbc43da 100644
--- a/src/libs/installer/remoteclient.cpp
+++ b/src/libs/installer/remoteclient.cpp
@@ -40,12 +40,9 @@
**************************************************************************/
#include "remoteclient.h"
-
-#include "protocol.h"
#include "remoteclient_p.h"
#include <QElapsedTimer>
-#include <QUuid>
namespace QInstaller {
@@ -60,8 +57,6 @@ static RemoteClientGuard *gGuard = remoteClientGuard();
RemoteClient::RemoteClient()
: d_ptr(new RemoteClientPrivate(this))
{
- Q_D(RemoteClient);
- d->m_key = QUuid::createUuid().toString();
}
RemoteClient::~RemoteClient()
@@ -89,7 +84,7 @@ void RemoteClient::setAuthorizationKey(const QString &key)
d->m_key = key;
}
-void RemoteClient::init(quint16 port, const QHostAddress &address, Mode mode)
+void RemoteClient::init(quint16 port, const QHostAddress &address, Protocol::Mode mode)
{
Q_D(RemoteClient);
d->init(port, address, mode);
@@ -110,7 +105,8 @@ bool RemoteClient::connect(QTcpSocket *socket) const
while ((socket->state() == QAbstractSocket::ConnectingState)
&& (stopWatch.elapsed() < 10000) && (!d->m_quit)) {
--tries;
- qApp->processEvents();
+ if (!QCoreApplication::closingDown())
+ qApp->processEvents();
continue;
}
if ((socket->state() != QAbstractSocket::ConnectedState) || d->m_quit)
@@ -148,19 +144,19 @@ void RemoteClient::setActive(bool active)
}
}
-void RemoteClient::setStartServerCommand(const QString &command, StartAs startAs)
+void RemoteClient::setStartServerCommand(const QString &command, Protocol::StartAs startAs)
{
setStartServerCommand(command, QStringList(), startAs);
}
void RemoteClient::setStartServerCommand(const QString &command, const QStringList &arguments,
- StartAs startAs)
+ Protocol::StartAs startAs)
{
Q_D(RemoteClient);
d->maybeStopServer();
d->m_serverCommand = command;
d->m_serverArguments = arguments;
- d->m_startServerAsAdmin = startAs;
+ d->m_startServerAs = startAs;
}
} // namespace QInstaller
diff --git a/src/libs/installer/remoteclient.h b/src/libs/installer/remoteclient.h
index 84def80da..1c3b2f2ce 100644
--- a/src/libs/installer/remoteclient.h
+++ b/src/libs/installer/remoteclient.h
@@ -43,6 +43,7 @@
#define REMOTECLIENT_H
#include "installer_global.h"
+#include "protocol.h"
#include <QObject>
@@ -63,19 +64,10 @@ class INSTALLER_EXPORT RemoteClient : public QObject
friend class RemoteClientGuard;
public:
- enum Mode {
- Debug,
- Release
- };
-
- enum StartAs {
- User,
- Administrator
- };
static RemoteClient &instance();
bool connect(QTcpSocket *socket) const;
- void init(quint16 port, const QHostAddress &address, Mode mode);
+ void init(quint16 port, const QHostAddress &address, Protocol::Mode mode);
QString authorizationKey() const;
void setAuthorizationKey(const QString &key);
@@ -83,8 +75,9 @@ public:
bool isActive() const;
void setActive(bool active);
- void setStartServerCommand(const QString &command, StartAs startAs);
- void setStartServerCommand(const QString &command, const QStringList &arguments, StartAs start);
+ void setStartServerCommand(const QString &command, Protocol::StartAs startAs);
+ void setStartServerCommand(const QString &command, const QStringList &arguments,
+ Protocol::StartAs start);
private:
RemoteClient();
diff --git a/src/libs/installer/remoteclient_p.h b/src/libs/installer/remoteclient_p.h
index 454864d62..d2aebdb5d 100644
--- a/src/libs/installer/remoteclient_p.h
+++ b/src/libs/installer/remoteclient_p.h
@@ -56,6 +56,7 @@
#include <QTcpSocket>
#include <QThread>
#include <QTimer>
+#include <QUuid>
namespace QInstaller {
@@ -114,12 +115,15 @@ public:
RemoteClientPrivate(RemoteClient *parent)
: q_ptr(parent)
, m_mutex(QMutex::Recursive)
- , m_port(0)
- , m_startServerAsAdmin(false)
+ , m_address(Protocol::DefaultHostAddress)
+ , m_port(Protocol::DefaultPort)
+ , m_startServerAs(Protocol::StartAs::User)
, m_serverStarted(false)
, m_serverStarting(false)
, m_active(false)
+ , m_key(QLatin1String(Protocol::DefaultAuthorizationKey))
, m_thread(new KeepAliveThread(parent))
+ , m_mode(Protocol::Mode::Debug)
, m_quit(false)
{
m_thread->moveToThread(m_thread);
@@ -127,20 +131,20 @@ public:
~RemoteClientPrivate()
{
- QMetaObject::invokeMethod(m_thread, "quit");
+ QMetaObject::invokeMethod(m_thread, "quit", Qt::QueuedConnection);
}
- void init(quint16 port, const QHostAddress &address, RemoteClient::Mode mode)
+ void init(quint16 port, const QHostAddress &address, Protocol::Mode mode)
{
m_port = port;
m_mode = mode;
m_address = address;
- if (mode == RemoteClient::Debug) {
+ if (mode == Protocol::Mode::Debug) {
m_active = true;
m_serverStarted = true;
- m_key = QLatin1String(Protocol::DebugAuthorizationKey);
- } else if (m_mode == RemoteClient::Release) {
+ } else if (m_mode == Protocol::Mode::Release) {
+ m_key = QUuid::createUuid().toString();
m_thread->start();
} else {
Q_ASSERT_X(false, Q_FUNC_INFO, "RemoteClient mode not set properly.");
@@ -156,9 +160,8 @@ public:
return;
m_serverStarting = true;
-
- if (m_startServerAsAdmin) {
- m_serverStarted = AdminAuthorization::execute(0, m_serverCommand, m_serverArguments);
+ if (m_startServerAs == Protocol::StartAs::SuperUser) {
+ m_serverStarted = AdminAuthorization::execute(0, m_serverCommand, m_serverArguments);
if (!m_serverStarted) {
// something went wrong with authorizing, either user pressed cancel or entered
@@ -223,7 +226,7 @@ private:
QHostAddress m_address;
quint16 m_port;
QString m_socket;
- bool m_startServerAsAdmin;
+ Protocol::StartAs m_startServerAs;
bool m_serverStarted;
bool m_serverStarting;
bool m_active;
@@ -231,7 +234,7 @@ private:
QStringList m_serverArguments;
QString m_key;
QThread *m_thread;
- RemoteClient::Mode m_mode;
+ Protocol::Mode m_mode;
volatile bool m_quit;
};
diff --git a/src/libs/installer/remoteserver.cpp b/src/libs/installer/remoteserver.cpp
index 2bd74c03a..3233e92ca 100644
--- a/src/libs/installer/remoteserver.cpp
+++ b/src/libs/installer/remoteserver.cpp
@@ -40,8 +40,6 @@
**************************************************************************/
#include "remoteserver.h"
-
-#include "protocol.h"
#include "remoteserver_p.h"
namespace QInstaller {
@@ -75,11 +73,9 @@ void RemoteServer::start()
connect (d->m_tcpServer, SIGNAL(newIncommingConnection()), this, SLOT(restartWatchdog()));
d->m_thread.start();
- if (d->m_mode == RemoteServer::Release) {
+ if (d->m_mode == Protocol::Mode::Release) {
connect(d->m_watchdog.data(), SIGNAL(timeout()), this, SLOT(deleteLater()));
d->m_watchdog->start();
- } else {
- setAuthorizationKey(QLatin1String(Protocol::DebugAuthorizationKey));
}
}
@@ -101,7 +97,7 @@ void RemoteServer::setAuthorizationKey(const QString &authorizationKey)
d->m_key = authorizationKey;
}
-void RemoteServer::init(quint16 port, const QHostAddress &address, Mode mode)
+void RemoteServer::init(quint16 port, const QHostAddress &address, Protocol::Mode mode)
{
Q_D(RemoteServer);
d->m_port = port;
diff --git a/src/libs/installer/remoteserver.h b/src/libs/installer/remoteserver.h
index e1158dd68..ca884d9b1 100644
--- a/src/libs/installer/remoteserver.h
+++ b/src/libs/installer/remoteserver.h
@@ -43,6 +43,7 @@
#define REMOTESERVER_H
#include "installer_global.h"
+#include "protocol.h"
#include <QObject>
@@ -61,16 +62,11 @@ class INSTALLER_EXPORT RemoteServer : public QObject
Q_DECLARE_PRIVATE(RemoteServer)
public:
- enum Mode {
- Debug,
- Release
- };
-
explicit RemoteServer(QObject *parent = 0);
~RemoteServer();
void start();
- void init(quint16 port, const QHostAddress &address, Mode mode);
+ void init(quint16 port, const QHostAddress &address, Protocol::Mode mode);
QString authorizationKey() const;
void setAuthorizationKey(const QString &key);
diff --git a/src/libs/installer/remoteserver_p.h b/src/libs/installer/remoteserver_p.h
index 72ee0267c..5ce24ca67 100644
--- a/src/libs/installer/remoteserver_p.h
+++ b/src/libs/installer/remoteserver_p.h
@@ -42,6 +42,7 @@
#ifndef REMOTESERVER_P_H
#define REMOTESERVER_P_H
+#include "protocol.h"
#include "remoteserver.h"
#include "remoteserverconnection.h"
@@ -100,6 +101,10 @@ public:
explicit RemoteServerPrivate(RemoteServer *server)
: q_ptr(server)
, m_tcpServer(0)
+ , m_key(QLatin1String(Protocol::DefaultAuthorizationKey))
+ , m_port(Protocol::DefaultPort)
+ , m_address(Protocol::DefaultHostAddress)
+ , m_mode(Protocol::Mode::Debug)
, m_watchdog(new QTimer)
{
m_watchdog->setInterval(30000);
@@ -114,7 +119,7 @@ private:
quint16 m_port;
QThread m_thread;
QHostAddress m_address;
- RemoteServer::Mode m_mode;
+ Protocol::Mode m_mode;
QScopedPointer<QTimer> m_watchdog;
};
diff --git a/src/sdk/installerbase.cpp b/src/sdk/installerbase.cpp
index e02ccfa86..590a3e1fb 100644
--- a/src/sdk/installerbase.cpp
+++ b/src/sdk/installerbase.cpp
@@ -165,7 +165,7 @@ int main(int argc, char *argv[])
SDKApp<QCoreApplication> app(argc, argv);
RemoteServer *const server = new RemoteServer();
QObject::connect(server, SIGNAL(destroyed()), &app, SLOT(quit()));
- server->init(args[2].toInt(), QHostAddress::LocalHost, RemoteServer::Release);
+ server->init(args[2].toInt(), QHostAddress::LocalHost, Protocol::Mode::Release);
if (args.count() >= 4)
server->setAuthorizationKey(args[3]);
server->start();
diff --git a/tests/auto/installer/clientserver/tst_clientserver.cpp b/tests/auto/installer/clientserver/tst_clientserver.cpp
index e2c1d3ece..8cddb771c 100644
--- a/tests/auto/installer/clientserver/tst_clientserver.cpp
+++ b/tests/auto/installer/clientserver/tst_clientserver.cpp
@@ -39,6 +39,7 @@
**
**************************************************************************/
+#include <protocol.h>
#include <qprocesswrapper.h>
#include <qsettingswrapper.h>
#include <remoteclient.h>
@@ -62,7 +63,7 @@ private slots:
void testServerConnection()
{
RemoteServer server;
- server.init(39999, QHostAddress::LocalHost, RemoteServer::Debug);
+ server.init(39999, QHostAddress::LocalHost, Protocol::Mode::Debug);
server.start();
QTcpSocket socket;
@@ -73,18 +74,18 @@ private slots:
void testClientConnection()
{
RemoteServer server;
- server.init(39999, QHostAddress::LocalHost, RemoteServer::Debug);
+ server.init(39999, QHostAddress::LocalHost, Protocol::Mode::Debug);
server.start();
QTcpSocket socket;
- RemoteClient::instance().init(39999, QHostAddress::LocalHost, RemoteClient::Debug);
+ RemoteClient::instance().init(39999, QHostAddress::LocalHost, Protocol::Mode::Debug);
QVERIFY2(RemoteClient::instance().connect(&socket), "Could not connect to server.");
}
void testQSettingsWrapper()
{
RemoteServer server;
- server.init(39999, QHostAddress::LocalHost, RemoteServer::Debug);
+ server.init(39999, QHostAddress::LocalHost, Protocol::Mode::Debug);
server.start();
QSettingsWrapper wrapper("digia", "clientserver");
@@ -200,7 +201,7 @@ private slots:
void testQProcessWrapper()
{
RemoteServer server;
- server.init(39999, QHostAddress::LocalHost, RemoteServer::Debug);
+ server.init(39999, QHostAddress::LocalHost, Protocol::Mode::Debug);
server.start();
{
@@ -297,7 +298,7 @@ private slots:
void testRemoteFileEngine()
{
RemoteServer server;
- server.init(39999, QHostAddress::LocalHost, RemoteServer::Debug);
+ server.init(39999, QHostAddress::LocalHost, Protocol::Mode::Debug);
server.start();
QString filename;