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 | ... | ... |