Merge branch 'upstream-openssl' into restricted_routes

This commit is contained in:
Jeff Becker
2016-06-19 16:50:51 -04:00
parent 93deb37c94
commit 63c36e917e
44 changed files with 2523 additions and 148 deletions

View File

@@ -1,45 +1,45 @@
#include "DaemonQT.h"
#include "../../Daemon.h"
#include <QMutex>
#include "mainwindow.h"
#include <QMessageBox>
#include <QApplication>
#include <QMutexLocker>
namespace i2p
{
namespace util
{
bool DaemonQT::init(int argc, char* argv[])
{
return Daemon_Singleton::init(argc, argv);
}
}
}
#include <QThread>
namespace i2p
{
namespace qt
{
Worker::Worker (DaemonQTImpl& daemon):
m_Daemon (daemon)
{
}
void Worker::startDaemon() {
void Worker::startDaemon()
{
qDebug("Performing daemon start...");
DaemonQTImpl::start();
m_Daemon.start();
qDebug("Daemon started.");
emit resultReady();
}
void Worker::restartDaemon() {
void Worker::restartDaemon()
{
qDebug("Performing daemon restart...");
DaemonQTImpl::restart();
m_Daemon.restart();
qDebug("Daemon restarted.");
emit resultReady();
}
void Worker::stopDaemon() {
qDebug("Performing daemon stop...");
DaemonQTImpl::stop();
m_Daemon.stop();
qDebug("Daemon stopped.");
emit resultReady();
}
Controller::Controller() {
Worker *worker = new Worker;
Controller::Controller(DaemonQTImpl& daemon):
m_Daemon (daemon)
{
Worker *worker = new Worker (m_Daemon);
worker->moveToThread(&workerThread);
connect(&workerThread, &QThread::finished, worker, &QObject::deleteLater);
connect(this, &Controller::startDaemon, worker, &Worker::startDaemon);
@@ -48,40 +48,114 @@ namespace qt
connect(worker, &Worker::resultReady, this, &Controller::handleResults);
workerThread.start();
}
Controller::~Controller() {
Controller::~Controller()
{
qDebug("Closing and waiting for daemon worker thread...");
workerThread.quit();
workerThread.wait();
qDebug("Waiting for daemon worker thread finished.");
if(DaemonQTImpl::isRunning()) {
if(m_Daemon.isRunning())
{
qDebug("Stopping the daemon...");
DaemonQTImpl::stop();
m_Daemon.stop();
qDebug("Stopped the daemon.");
}
}
DaemonQTImpl::DaemonQTImpl ():
mutex(nullptr), m_IsRunning(nullptr), m_RunningChangedCallback(nullptr)
{
}
DaemonQTImpl::~DaemonQTImpl ()
{
delete mutex;
}
bool DaemonQTImpl::init(int argc, char* argv[])
{
mutex=new QMutex(QMutex::Recursive);
setRunningCallback(0);
m_IsRunning=false;
return Daemon.init(argc,argv);
}
static DaemonQTImpl::runningChangedCallback DaemonQTImpl_runningChanged;
static bool DaemonQTImpl_running;
static QMutex* mutex;
void DaemonQTImpl::start()
{
QMutexLocker locker(mutex);
setRunning(true);
Daemon.start();
}
bool DaemonQTImpl::init(int argc, char* argv[]){mutex=new QMutex(QMutex::Recursive);setRunningCallback(0);DaemonQTImpl_running=false;return Daemon.init(argc,argv);}
void DaemonQTImpl::deinit(){delete mutex;}
void DaemonQTImpl::start(){QMutexLocker locker(mutex);setRunning(true);Daemon.start();}
void DaemonQTImpl::stop(){QMutexLocker locker(mutex);Daemon.stop();setRunning(false);}
void DaemonQTImpl::restart(){QMutexLocker locker(mutex);stop();start();}
void DaemonQTImpl::stop()
{
QMutexLocker locker(mutex);
Daemon.stop();
setRunning(false);
}
void DaemonQTImpl::setRunningCallback(runningChangedCallback cb){DaemonQTImpl_runningChanged=cb;}
bool DaemonQTImpl::isRunning(){return DaemonQTImpl_running;}
void DaemonQTImpl::setRunning(bool newValue){
bool oldValue = DaemonQTImpl_running;
if(oldValue!=newValue) {
DaemonQTImpl_running = newValue;
if(DaemonQTImpl_runningChanged!=0)DaemonQTImpl_runningChanged();
void DaemonQTImpl::restart()
{
QMutexLocker locker(mutex);
stop();
start();
}
void DaemonQTImpl::setRunningCallback(runningChangedCallback cb)
{
m_RunningChangedCallback = cb;
}
bool DaemonQTImpl::isRunning()
{
return m_IsRunning;
}
void DaemonQTImpl::setRunning(bool newValue)
{
bool oldValue = m_IsRunning;
if(oldValue!=newValue)
{
m_IsRunning = newValue;
if(m_RunningChangedCallback)
m_RunningChangedCallback();
}
}
}
int RunQT (int argc, char* argv[])
{
QApplication app(argc, argv);
int result;
{
DaemonQTImpl daemon;
qDebug("Initialising the daemon...");
bool daemonInitSuccess = daemon.init(argc, argv);
if(!daemonInitSuccess)
{
QMessageBox::critical(0, "Error", "Daemon init failed");
return 1;
}
qDebug("Initialised, creating the main window...");
MainWindow w;
qDebug("Before main window.show()...");
w.show ();
{
i2p::qt::Controller daemonQtController(daemon);
qDebug("Starting the daemon...");
emit daemonQtController.startDaemon();
//daemon.start ();
qDebug("Starting GUI event loop...");
result = app.exec();
//daemon.stop ();
}
}
//QMessageBox::information(&w, "Debug", "demon stopped");
qDebug("Exiting the application");
return result;
}
}
}