diff --git a/src/server/WebBackend.cpp b/src/server/WebBackend.cpp index d2fabf9..d3842bc 100644 --- a/src/server/WebBackend.cpp +++ b/src/server/WebBackend.cpp @@ -584,7 +584,10 @@ RestOutputStruct::ExitCode WebSocket::EvaluateSysadmIohyveRequest(const QJsonVal } if(act=="fetchiso"){ ok = true; - out->insert("fetchiso", sysadm::Iohyve::fetchISO(in_args.toObject())); + DProcess *fetchproc; + out->insert("fetchiso", sysadm::Iohyve::fetchISO(in_args.toObject(), fetchproc)); + connect(fetchproc, SIGNAL(ProcessOutput(QString)), this, SLOT(slotIohyveFetchProcessOutput(QString)) ); + connect(fetchproc, SIGNAL(Finished(QString, int, QString)), this, SLOT(slotIohyveFetchDone(QString, int, QString)) ); } if(act=="install"){ ok = true; diff --git a/src/server/WebBackendSlots.cpp b/src/server/WebBackendSlots.cpp new file mode 100644 index 0000000..43a3f0a --- /dev/null +++ b/src/server/WebBackendSlots.cpp @@ -0,0 +1,22 @@ +// =============================== +// Slots for long running Library Tasks +// Available under the 3-clause BSD License +// Written by: Kris Moore FEB 2016 +// ================================= +#include +#define DEBUG 0 + + +// Iohyve Fetch is done +void WebSocket::slotIohyveFetchDone(QString id, int retcode, QString log) +{ + + +} + +// Iohyve Fetch has output to read +void WebSocket::slotIohyveFetchProcessOutput(QString output) +{ + + +} diff --git a/src/server/WebSocket.h b/src/server/WebSocket.h index 1eae6a6..287461b 100644 --- a/src/server/WebSocket.h +++ b/src/server/WebSocket.h @@ -79,6 +79,10 @@ private slots: void nowEncrypted(); //the socket/connection is now encrypted void peerError(const QSslError&); //peerVerifyError() signal void SslError(const QList&); //sslErrors() signal + + // Library Slots + void slotIohyveFetchDone(QString, int, QString); + void slotIohyveFetchReadyRead(); public slots: void EventUpdate(EventWatcher::EVENT_TYPE, QJsonValue = QJsonValue() ); diff --git a/src/server/library/sysadm-iohyve.cpp b/src/server/library/sysadm-iohyve.cpp index a90d165..fb30d54 100644 --- a/src/server/library/sysadm-iohyve.cpp +++ b/src/server/library/sysadm-iohyve.cpp @@ -44,7 +44,7 @@ QJsonObject Iohyve::createGuest(QJsonObject jsin) { } // Queue the fetch of an ISO -QJsonObject Iohyve::fetchISO(QJsonObject jsin) { +QJsonObject Iohyve::fetchISO(QJsonObject jsin, DProcess *returnproc) { QJsonObject retObject; QStringList keys = jsin.keys(); @@ -60,7 +60,7 @@ QJsonObject Iohyve::fetchISO(QJsonObject jsin) { QString ID = QUuid::createUuid().toString(); // Queue the fetch action - DISPATCHER->queueProcess(ID, "iohyve fetch " + url); + returnproc = DISPATCHER->queueProcess(ID, "iohyve fetch " + url); // Return some details to user that the action was queued retObject.insert("command", "iohyve fetch " + url); diff --git a/src/server/library/sysadm-iohyve.h b/src/server/library/sysadm-iohyve.h index 8878b34..ffe0d42 100644 --- a/src/server/library/sysadm-iohyve.h +++ b/src/server/library/sysadm-iohyve.h @@ -9,13 +9,14 @@ #include #include "sysadm-global.h" +#include "globals.h" namespace sysadm{ class Iohyve{ public: static QJsonObject createGuest(QJsonObject); - static QJsonObject fetchISO(QJsonObject); + static QJsonObject fetchISO(QJsonObject, DProcess *); static QJsonObject installGuest(QJsonObject); static QJsonObject isSetup(); static QJsonObject listVMs(); @@ -24,6 +25,7 @@ public: static QJsonObject setupIohyve(QJsonObject); static QJsonObject startGuest(QJsonObject); static QJsonObject stopGuest(QJsonObject); + }; } //end of pcbsd namespace diff --git a/src/server/server.pro b/src/server/server.pro index c9c768c..bda91ec 100644 --- a/src/server/server.pro +++ b/src/server/server.pro @@ -19,6 +19,7 @@ SOURCES += main.cpp \ WebServer.cpp \ WebSocket.cpp \ WebBackend.cpp \ + WebBackendSlots.cpp \ syscache-client.cpp \ AuthorizationManager.cpp \ EventWatcher.cpp \