mirror of
https://github.com/outbackdingo/sysadm.git
synced 2026-01-27 10:20:26 +00:00
Clean up a fair bit of the server backends. Getting rid of compilation warnings, signal/slot connection issues, etc..
This commit is contained in:
@@ -30,14 +30,11 @@ void DProcess::startProc(){
|
||||
finished = QDateTime::currentDateTime();
|
||||
emit ProcFinished(ID);
|
||||
return;
|
||||
}else if(proclog.isEmpty()){
|
||||
started = QDateTime::currentDateTime(); //first cmd started
|
||||
rawcmds = cmds;
|
||||
}else{
|
||||
proclog.append("\n");
|
||||
}
|
||||
QString cmd = cmds.takeFirst();
|
||||
success = false; //not finished yet
|
||||
if(!proclog.isEmpty()){ proclog.append("\n"); }
|
||||
else{ started = QDateTime::currentDateTime(); } //first cmd started
|
||||
proclog.append("[Running Command: "+cmd+" ]");
|
||||
this->start(cmd);
|
||||
}
|
||||
@@ -75,7 +72,7 @@ void DProcess::cmdFinished(int ret, QProcess::ExitStatus status){
|
||||
// Dispatcher Class
|
||||
// ================================
|
||||
Dispatcher::Dispatcher(){
|
||||
|
||||
connect(this, SIGNAL(mkprocs(Dispatcher::PROC_QUEUE, QString, QStringList)), this, SLOT(mkProcs(Dispatcher::PROC_QUEUE, QString, QStringList)) );
|
||||
}
|
||||
|
||||
Dispatcher::~Dispatcher(){
|
||||
@@ -104,28 +101,30 @@ void Dispatcher::queueProcess(Dispatcher::PROC_QUEUE queue, QString ID, QString
|
||||
}
|
||||
void Dispatcher::queueProcess(Dispatcher::PROC_QUEUE queue, QString ID, QStringList cmds){
|
||||
//This is the primary queueProcess() function - all the overloads end up here to do the actual work
|
||||
DProcess *P = createProcess(ID, cmds);
|
||||
QList<DProcess*> list;
|
||||
if(!HASH.contains(queue)){ HASH.insert(queue, list); } //insert an empty list
|
||||
HASH[queue] << P; //add this proc to the end of the list
|
||||
if(queue==NO_QUEUE || HASH[queue].length()==1){
|
||||
emit DispatchStarting(P->ID);
|
||||
P->startProc(); //go ahead and start it now
|
||||
}else{ CheckQueues(); }
|
||||
//For multi-threading, need to emit a signal/slot for this action (object creations need to be in same thread as parent)
|
||||
emit mkProcs(queue, ID, cmds);
|
||||
}
|
||||
|
||||
// === PRIVATE ===
|
||||
//Simplification routine for setting up a process
|
||||
DProcess* Dispatcher:: createProcess(QString ID, QStringList cmds){
|
||||
DProcess* P = new DProcess(this);
|
||||
DProcess* Dispatcher::createProcess(QString ID, QStringList cmds){
|
||||
DProcess* P = new DProcess();
|
||||
P->cmds = cmds;
|
||||
P->ID = ID;
|
||||
P->success = false;
|
||||
connect(P, SIGNAL(ProcFinished(QString)), this, SLOT(ProcFinished(QString)) );
|
||||
return P;
|
||||
}
|
||||
|
||||
// === PRIVATE SLOTS ===
|
||||
void Dispatcher::mkProcs(Dispatcher::PROC_QUEUE queue, QString ID, QStringList cmds){
|
||||
DProcess *P = createProcess(ID, cmds);
|
||||
QList<DProcess*> list;
|
||||
if(!HASH.contains(queue)){ HASH.insert(queue, list); } //insert an empty list
|
||||
HASH[queue] << P; //add this proc to the end of the list
|
||||
if(queue==NO_QUEUE || HASH[queue].length()==1){ P->startProc(); } //go ahead and start it now
|
||||
else{ CheckQueues(); }
|
||||
}
|
||||
|
||||
void Dispatcher::ProcFinished(QString ID){
|
||||
//Find the process with this ID and close it down (with proper events)
|
||||
bool found = false;
|
||||
@@ -154,7 +153,7 @@ void Dispatcher::ProcFinished(QString ID){
|
||||
}
|
||||
|
||||
void Dispatcher::CheckQueues(){
|
||||
for(int i=0; i<enum_length; i++){
|
||||
for(int i=0; i<enum_length; i++){
|
||||
PROC_QUEUE queue = static_cast<PROC_QUEUE>(i);
|
||||
if(HASH.contains(queue)){
|
||||
QList<DProcess*> list = HASH[queue];
|
||||
@@ -168,5 +167,5 @@ void Dispatcher::CheckQueues(){
|
||||
} //end loop over list
|
||||
}
|
||||
|
||||
} //end loop over queue types
|
||||
} //end loop over queue types
|
||||
}
|
||||
|
||||
@@ -74,12 +74,17 @@ private:
|
||||
DProcess* createProcess(QString ID, QStringList cmds);
|
||||
|
||||
private slots:
|
||||
void mkProcs(Dispatcher::PROC_QUEUE, QString ID, QStringList cmds);
|
||||
void ProcFinished(QString ID);
|
||||
void CheckQueues();
|
||||
|
||||
signals:
|
||||
//Main signals
|
||||
void DispatchFinished(QString ID, bool success);
|
||||
void DispatchStarting(QString ID);
|
||||
|
||||
//Signals for private usage
|
||||
void mkprocs(Dispatcher::PROC_QUEUE, QString ID, QStringList cmds);
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
// === PUBLIC ===
|
||||
EventWatcher::EventWatcher(){
|
||||
qRegisterMetaType<EventWatcher::EVENT_TYPE>("EventWatcher::EVENT_TYPE");
|
||||
|
||||
starting = true;
|
||||
LPlog_pos = LPrep_pos = LPerr_pos = 0; //no pos yet
|
||||
watcher = new QFileSystemWatcher(this);
|
||||
|
||||
@@ -3,7 +3,10 @@
|
||||
#define TMPBREAK "<!!line-break!!>"
|
||||
//Overall check/creation of the log directory
|
||||
void LogManager::checkLogDir(){
|
||||
// - TO-DO
|
||||
if(!QFile::exists(LOGDIR)){
|
||||
QDir dir(LOGDIR);
|
||||
dir.mkpath(LOGDIR);
|
||||
}
|
||||
}
|
||||
|
||||
//Main Log write function (all the overloaded versions end up calling this one)
|
||||
|
||||
@@ -148,7 +148,6 @@ void WebServer::NewSocketConnection(){
|
||||
qDebug() << "New Socket Connection";
|
||||
connect(sock, SIGNAL(SocketClosed(QString)), this, SLOT(SocketClosed(QString)) );
|
||||
connect(EVENTS, SIGNAL(NewEvent(EventWatcher::EVENT_TYPE, QJsonValue)), sock, SLOT(EventUpdate(EventWatcher::EVENT_TYPE, QJsonValue)) );
|
||||
connect(sock, SIGNAL(BlackListAddress(QHostAddress)), this, SLOT(BlackListConnection(QHostAddress)) );
|
||||
OpenSockets << sock;
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,8 @@ int main( int argc, char ** argv )
|
||||
qDebug() << "sysadm-server must be started as root!";
|
||||
return 1;
|
||||
}
|
||||
LogManager::checkLogDir(); //ensure the logging directry exists
|
||||
|
||||
//Evaluate input arguments
|
||||
bool websocket = false;
|
||||
quint16 port = 0;
|
||||
@@ -89,6 +91,7 @@ int main( int argc, char ** argv )
|
||||
if( w->startServer(port, websocket) ){
|
||||
QThread TBACK;
|
||||
EVENTS->moveToThread(&TBACK);
|
||||
DISPATCHER->moveToThread(&TBACK);
|
||||
TBACK.start();
|
||||
QTimer::singleShot(0,EVENTS, SLOT(start()) );
|
||||
//Now start the main event loop
|
||||
|
||||
Reference in New Issue
Block a user