From 7eb38ea59dc8472a3d03e69ed3884b6e7daa1263 Mon Sep 17 00:00:00 2001 From: LightBase Consultoria em Software Publico Date: Tue, 23 Sep 2014 15:56:16 -0300 Subject: [PATCH] Inicia modulos dinâmicamente --- cacic-daemon/cacicD/cacicd.cpp | 9 ++++----- cacic-daemon/cacicD/cacictimer.cpp | 34 ++++++++++------------------------ cacic-daemon/cacicD/cacictimer.h | 5 ++--- 3 files changed, 16 insertions(+), 32 deletions(-) diff --git a/cacic-daemon/cacicD/cacicd.cpp b/cacic-daemon/cacicD/cacicd.cpp index 99cddae..e0b1555 100644 --- a/cacic-daemon/cacicD/cacicd.cpp +++ b/cacic-daemon/cacicD/cacicd.cpp @@ -31,15 +31,14 @@ cacicD::~cacicD() void cacicD::start() { try{ - QLogger::QLog_Info("Cacic Daemon", QString("Servico iniciado em ").append(application()->applicationDirPath()).append(".")); - QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath().append("/getConfig.json")); + QLogger::QLog_Info("Cacic Daemon", QString("Servico iniciado em " + application()->applicationDirPath() + ".")); + QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath() + "/getConfig.json"); if(!result.contains("error") && !result.isEmpty()){ - Ocacictimer->setPeriodicidadeExecucao(result["codestatus"].toInt()); + Ocacictimer->setPeriodicidadeExecucao(result["interval"].toInt()); Ocacictimer->iniciarTimer(); }else{ - QLogger::QLog_Error("Cacic Daemon", QString("getConfig.json não encontrado.")); + QLogger::QLog_Error("Cacic Daemon", QString("Problemas com o arquivo getConfig.json")); } - //QLogger::QLog_Info("Cacic Daemon", "Serviço finalizado."); }catch (...){ QLogger::QLog_Error("Cacic Daemon", QString("Erro desconhecido ao iniciar o serviço.")); } diff --git a/cacic-daemon/cacicD/cacictimer.cpp b/cacic-daemon/cacicD/cacictimer.cpp index 86bedfb..426f6b9 100644 --- a/cacic-daemon/cacicD/cacictimer.cpp +++ b/cacic-daemon/cacicD/cacictimer.cpp @@ -31,7 +31,6 @@ void CacicTimer::mslot(){ verificarPeriodicidadeJson(); }catch (...){ QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Não foi possivel verificar a periodicidade no getConfig.json")); - } cMutex->lock(); QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo fechado.")); @@ -42,23 +41,18 @@ void CacicTimer::mslot(){ QStringList nomesModulos = verificarModulos(); if ( !nomesModulos.empty() ) { - foreach( QString nome, nomesModulos ) { - if( nome == "gercols" ) { - definirDirGercols(getApplicationDirPath()); - iniciarModulo(); + definirDirModulo(getApplicationDirPath(), nome); + iniciarModulo(getDirProgram()); + if(nome == "cacic-gercols"){ //Envio do json gerado na coleta bool ok; QJsonObject jsonColeta = ccacic->getJsonFromFile("coleta.json"); OCacicComm->comm("/ws/neo/coleta", &ok, jsonColeta ); - } else if( nome == "mapas" ) { - definirDirMapas(getApplicationDirPath()); - iniciarModulo(); } } } - }else{ qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); QLogger::QLog_Error("Cacic Daemon (Timer)", "Falha na obtenção do arquivo de configuração."); @@ -165,13 +159,13 @@ void CacicTimer::setDirProgram(const QString &value) } -void CacicTimer::iniciarModulo() +void CacicTimer::iniciarModulo(QString modulo) { registraInicioColeta(); QDir::setCurrent(this->applicationDirPath); QProcess proc; proc.setWorkingDirectory(this->applicationDirPath); - proc.execute(getDirProgram()); + proc.execute(modulo); if((proc.atEnd()) && (proc.exitStatus() == QProcess::NormalExit)){ registraFimColeta("SUCESSO"); }else{ @@ -223,8 +217,8 @@ void CacicTimer::verificarPeriodicidadeJson() { QJsonObject result = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json"); if(!result.contains("error") && !result.isEmpty()){ - if(getPeriodicidadeExecucao() != result["codestatus"].toInt()){ - setPeriodicidadeExecucao(result["codestatus"].toInt()); + if(getPeriodicidadeExecucao() != result["interval"].toInt()){ + setPeriodicidadeExecucao(result["interval"].toInt()); reiniciarTimer(); } }else{ @@ -233,19 +227,11 @@ void CacicTimer::verificarPeriodicidadeJson() } -void CacicTimer::definirDirGercols(QString appDirPath){ -#if defined (Q_OS_WIN) - setDirProgram(appDirPath + "\cacic-gercols.exe"); -#elif defined (Q_OS_LINUX) - setDirProgram(appDirPath + "/cacic-gercols"); -#endif -} - -void CacicTimer::definirDirMapas(QString appDirPath){ +void CacicTimer::definirDirModulo(QString appDirPath, QString nome){ #if defined (Q_OS_WIN) - setDirProgram(appDirPath + "\cacic-mapas.exe"); + setDirProgram(appDirPath + "\\" + nome + ".exe"); #elif defined (Q_OS_LINUX) - setDirProgram(appDirPath + "/cacic-mapas"); + setDirProgram(appDirPath + "/"+ nome); #endif } diff --git a/cacic-daemon/cacicD/cacictimer.h b/cacic-daemon/cacicD/cacictimer.h index 1ba3c02..fddaee7 100644 --- a/cacic-daemon/cacicD/cacictimer.h +++ b/cacic-daemon/cacicD/cacictimer.h @@ -42,12 +42,11 @@ private: QString dirProgram; QString applicationDirPath; QString getDirProgram() const; - void iniciarModulo(); + void iniciarModulo(QString modulo); void iniciarInstancias(); void verificarPeriodicidadeJson(); void lerArquivoConfig( const QJsonObject &jsonConfig); - void definirDirGercols(QString appDirPath); - void definirDirMapas(QString appDirPath); + void definirDirModulo(QString appDirPath, QString nome); QJsonObject jsonConfig; int periodicidadeExecucao; int getPeriodicidadeExecucao() const; -- libgit2 0.21.2