Commit f6d5ad6b4dfc39e4e2ae3284a8b2ac250e60e738
1 parent
b3f29df0
Exists in
master
Implementação da periodicidade dinamica
Showing
3 changed files
with
47 additions
and
6 deletions
Show diff stats
cacic-daemon/cacicD/cacicd.cpp
| ... | ... | @@ -34,7 +34,8 @@ void cacicD::start() { |
| 34 | 34 | QLogger::QLog_Info("Cacic Daemon", QString("Servico iniciado em ").append(application()->applicationDirPath()).append(".")); |
| 35 | 35 | QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath().append("/getConfig.json")); |
| 36 | 36 | if(!result.contains("error") && !result.isEmpty()){ |
| 37 | - Ocacictimer->iniciarTimer(result["codestatus"].toInt()); | |
| 37 | + Ocacictimer->setPeriodicidadeExecucao(result["codestatus"].toInt()); | |
| 38 | + Ocacictimer->iniciarTimer(); | |
| 38 | 39 | }else{ |
| 39 | 40 | QLogger::QLog_Error("Cacic Daemon", QString("getConfig.json não encontrado.")); |
| 40 | 41 | } |
| ... | ... | @@ -66,6 +67,7 @@ void cacicD::stop() |
| 66 | 67 | { |
| 67 | 68 | try{ |
| 68 | 69 | QLogger::QLog_Info("Cacic Daemon", QString("Serviço parado.")); |
| 70 | + this->application()->quit(); | |
| 69 | 71 | } catch (...){ |
| 70 | 72 | QLogger::QLog_Error("Cacic Daemon", QString("Erro desconhecido ao parar o serviço.")); |
| 71 | 73 | } | ... | ... |
cacic-daemon/cacicD/cacictimer.cpp
| ... | ... | @@ -16,12 +16,24 @@ CacicTimer::~CacicTimer() |
| 16 | 16 | delete OCacicComm; |
| 17 | 17 | } |
| 18 | 18 | |
| 19 | -void CacicTimer::iniciarTimer(int x) | |
| 19 | +void CacicTimer::reiniciarTimer(){ | |
| 20 | + timer->stop(); | |
| 21 | + timer->start(getPeriodicidadeExecucao()); | |
| 22 | +} | |
| 23 | + | |
| 24 | + | |
| 25 | +void CacicTimer::iniciarTimer() | |
| 20 | 26 | { |
| 21 | - timer->start(x); | |
| 27 | + timer->start(getPeriodicidadeExecucao()); | |
| 22 | 28 | } |
| 23 | 29 | |
| 24 | 30 | void CacicTimer::mslot(){ |
| 31 | + try{ | |
| 32 | + verificarPeriodicidadeJson(); | |
| 33 | + }catch (...){ | |
| 34 | + QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Não foi possivel verificar a periodicidade no getConfig.json")); | |
| 35 | + | |
| 36 | + } | |
| 25 | 37 | cMutex->lock(); |
| 26 | 38 | QLogger::QLog_Info("Cacic Daemon (Timer)", QString("Semáforo fechado.")); |
| 27 | 39 | if(getTest()){ |
| ... | ... | @@ -190,6 +202,20 @@ void CacicTimer::iniciarInstancias(){ |
| 190 | 202 | OCacicComm->setPassword("cacic123"); |
| 191 | 203 | } |
| 192 | 204 | |
| 205 | +void CacicTimer::verificarPeriodicidadeJson() | |
| 206 | +{ | |
| 207 | + QJsonObject result = ccacic->getJsonFromFile(this->applicationDirPath + "/getConfig.json"); | |
| 208 | + if(!result.contains("error") && !result.isEmpty()){ | |
| 209 | + if(getPeriodicidadeExecucao() != result["codestatus"].toInt()){ | |
| 210 | + setPeriodicidadeExecucao(result["codestatus"].toInt()); | |
| 211 | + reiniciarTimer(); | |
| 212 | + } | |
| 213 | + }else{ | |
| 214 | + QLogger::QLog_Error("Cacic Daemon (Timer)", QString("getConfig.json com erro ou vazio")); | |
| 215 | + } | |
| 216 | +} | |
| 217 | + | |
| 218 | + | |
| 193 | 219 | void CacicTimer::definirDirGercols(QString appDirPath){ |
| 194 | 220 | #if defined (Q_OS_WIN) |
| 195 | 221 | setDirProgram(appDirPath + "\cacic-gercols.exe"); |
| ... | ... | @@ -197,6 +223,16 @@ void CacicTimer::definirDirGercols(QString appDirPath){ |
| 197 | 223 | setDirProgram(appDirPath + "/cacic-gercols"); |
| 198 | 224 | #endif |
| 199 | 225 | } |
| 226 | +int CacicTimer::getPeriodicidadeExecucao() const | |
| 227 | +{ | |
| 228 | + return periodicidadeExecucao; | |
| 229 | +} | |
| 230 | + | |
| 231 | +void CacicTimer::setPeriodicidadeExecucao(int value) | |
| 232 | +{ | |
| 233 | + periodicidadeExecucao = value; | |
| 234 | +} | |
| 235 | + | |
| 200 | 236 | |
| 201 | 237 | void CacicTimer::verificarModulos(){ |
| 202 | 238 | // Compara o novo arquivo de configuração com um antigo e se forem diferentes | ... | ... |
cacic-daemon/cacicD/cacictimer.h
| ... | ... | @@ -24,29 +24,32 @@ public: |
| 24 | 24 | CACIC_Computer OCacic_Computer; |
| 25 | 25 | CCacic *ccacic; |
| 26 | 26 | QMutex *cMutex; |
| 27 | - | |
| 28 | - void iniciarTimer(int x); | |
| 27 | + void iniciarTimer(); | |
| 29 | 28 | bool getTest(); |
| 30 | 29 | bool getConfig(); |
| 31 | 30 | bool Md5IsEqual(QVariant document01,QVariant document02); |
| 32 | 31 | void setApplicationDirPath(const QString &value); |
| 33 | 32 | QString getApplicationDirPath(); |
| 34 | 33 | void setDirProgram(const QString &value); |
| 34 | + void setPeriodicidadeExecucao(int value); | |
| 35 | 35 | |
| 36 | 36 | private: |
| 37 | 37 | void registraFimColeta(QString msg); |
| 38 | 38 | void registraInicioColeta(); |
| 39 | 39 | void verificarModulos(); |
| 40 | + void reiniciarTimer(); | |
| 40 | 41 | QLogger::QLoggerManager *logManager; |
| 41 | 42 | QString dirProgram; |
| 42 | 43 | QString applicationDirPath; |
| 43 | 44 | QString getDirProgram() const; |
| 44 | 45 | void iniciarGercols(); |
| 45 | 46 | void iniciarInstancias(); |
| 47 | + void verificarPeriodicidadeJson(); | |
| 46 | 48 | void lerArquivoConfig( const QJsonObject &jsonConfig); |
| 47 | 49 | void definirDirGercols(QString appDirPath); |
| 48 | 50 | QJsonObject jsonConfig; |
| 49 | - | |
| 51 | + int periodicidadeExecucao; | |
| 52 | + int getPeriodicidadeExecucao() const; | |
| 50 | 53 | QList<QMap<QString,QString> > metodosDownload; |
| 51 | 54 | QMap<QString, QString> moduleMap; // key = hash md5, value = nome do modulo |
| 52 | 55 | ... | ... |