From f6d5ad6b4dfc39e4e2ae3284a8b2ac250e60e738 Mon Sep 17 00:00:00 2001 From: LightBase Consultoria em Software Publico Date: Wed, 17 Sep 2014 13:46:10 -0300 Subject: [PATCH] Implementação da periodicidade dinamica --- cacic-daemon/cacicD/cacicd.cpp | 4 +++- cacic-daemon/cacicD/cacictimer.cpp | 40 ++++++++++++++++++++++++++++++++++++++-- cacic-daemon/cacicD/cacictimer.h | 9 ++++++--- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/cacic-daemon/cacicD/cacicd.cpp b/cacic-daemon/cacicD/cacicd.cpp index 97b31f0..99cddae 100644 --- a/cacic-daemon/cacicD/cacicd.cpp +++ b/cacic-daemon/cacicD/cacicd.cpp @@ -34,7 +34,8 @@ void cacicD::start() { QLogger::QLog_Info("Cacic Daemon", QString("Servico iniciado em ").append(application()->applicationDirPath()).append(".")); QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath().append("/getConfig.json")); if(!result.contains("error") && !result.isEmpty()){ - Ocacictimer->iniciarTimer(result["codestatus"].toInt()); + Ocacictimer->setPeriodicidadeExecucao(result["codestatus"].toInt()); + Ocacictimer->iniciarTimer(); }else{ QLogger::QLog_Error("Cacic Daemon", QString("getConfig.json não encontrado.")); } @@ -66,6 +67,7 @@ void cacicD::stop() { try{ QLogger::QLog_Info("Cacic Daemon", QString("Serviço parado.")); + this->application()->quit(); } catch (...){ QLogger::QLog_Error("Cacic Daemon", QString("Erro desconhecido ao parar o serviço.")); } diff --git a/cacic-daemon/cacicD/cacictimer.cpp b/cacic-daemon/cacicD/cacictimer.cpp index b01190a..f1e0eaa 100644 --- a/cacic-daemon/cacicD/cacictimer.cpp +++ b/cacic-daemon/cacicD/cacictimer.cpp @@ -16,12 +16,24 @@ CacicTimer::~CacicTimer() delete OCacicComm; } -void CacicTimer::iniciarTimer(int x) +void CacicTimer::reiniciarTimer(){ + timer->stop(); + timer->start(getPeriodicidadeExecucao()); +} + + +void CacicTimer::iniciarTimer() { - timer->start(x); + timer->start(getPeriodicidadeExecucao()); } void CacicTimer::mslot(){ + try{ + 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.")); if(getTest()){ @@ -190,6 +202,20 @@ void CacicTimer::iniciarInstancias(){ OCacicComm->setPassword("cacic123"); } +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()); + reiniciarTimer(); + } + }else{ + QLogger::QLog_Error("Cacic Daemon (Timer)", QString("getConfig.json com erro ou vazio")); + } +} + + void CacicTimer::definirDirGercols(QString appDirPath){ #if defined (Q_OS_WIN) setDirProgram(appDirPath + "\cacic-gercols.exe"); @@ -197,6 +223,16 @@ void CacicTimer::definirDirGercols(QString appDirPath){ setDirProgram(appDirPath + "/cacic-gercols"); #endif } +int CacicTimer::getPeriodicidadeExecucao() const +{ + return periodicidadeExecucao; +} + +void CacicTimer::setPeriodicidadeExecucao(int value) +{ + periodicidadeExecucao = value; +} + void CacicTimer::verificarModulos(){ // Compara o novo arquivo de configuração com um antigo e se forem diferentes diff --git a/cacic-daemon/cacicD/cacictimer.h b/cacic-daemon/cacicD/cacictimer.h index c26e592..b2f48c8 100644 --- a/cacic-daemon/cacicD/cacictimer.h +++ b/cacic-daemon/cacicD/cacictimer.h @@ -24,29 +24,32 @@ public: CACIC_Computer OCacic_Computer; CCacic *ccacic; QMutex *cMutex; - - void iniciarTimer(int x); + void iniciarTimer(); bool getTest(); bool getConfig(); bool Md5IsEqual(QVariant document01,QVariant document02); void setApplicationDirPath(const QString &value); QString getApplicationDirPath(); void setDirProgram(const QString &value); + void setPeriodicidadeExecucao(int value); private: void registraFimColeta(QString msg); void registraInicioColeta(); void verificarModulos(); + void reiniciarTimer(); QLogger::QLoggerManager *logManager; QString dirProgram; QString applicationDirPath; QString getDirProgram() const; void iniciarGercols(); void iniciarInstancias(); + void verificarPeriodicidadeJson(); void lerArquivoConfig( const QJsonObject &jsonConfig); void definirDirGercols(QString appDirPath); QJsonObject jsonConfig; - + int periodicidadeExecucao; + int getPeriodicidadeExecucao() const; QList > metodosDownload; QMap moduleMap; // key = hash md5, value = nome do modulo -- libgit2 0.21.2