From 6cdb3e6b40629d08d9100986c42d5e662f45241e Mon Sep 17 00:00:00 2001 From: LightBase Consultoria em Software Publico Date: Mon, 15 Sep 2014 11:45:56 -0300 Subject: [PATCH] Implementação do semáforo e chamada do gercols. --- cacic-daemon/cacicD/cacicd.cpp | 11 ++++------- cacic-daemon/cacicD/cacicthread.cpp | 6 ------ cacic-daemon/cacicD/cacicthread.h | 18 ------------------ cacic-daemon/cacicD/cacictimer.cpp | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------- cacic-daemon/cacicD/cacictimer.h | 18 ++++++++++++++---- 5 files changed, 86 insertions(+), 55 deletions(-) delete mode 100644 cacic-daemon/cacicD/cacicthread.cpp delete mode 100644 cacic-daemon/cacicD/cacicthread.h diff --git a/cacic-daemon/cacicD/cacicd.cpp b/cacic-daemon/cacicD/cacicd.cpp index bb6d77d..9fcb244 100644 --- a/cacic-daemon/cacicD/cacicd.cpp +++ b/cacic-daemon/cacicD/cacicd.cpp @@ -5,7 +5,7 @@ cacicD::cacicD(int argc, char **argv) : QtService(argc, argv, try{ this->createApplication(argc, argv); - Ocacictimer = new CacicTimer(); + Ocacictimer = new CacicTimer(application()->applicationDirPath()); ccacic = new CCacic; setServiceDescription("Cacic Daemon"); setServiceFlags(QtService::Default); @@ -31,18 +31,15 @@ cacicD::~cacicD() void cacicD::start() { try{ qDebug() << "Inicio do daemon"; - qDebug() << "\nServiço iniciado em" << application()->applicationDirPath(); QLogger::QLog_Info("Cacic Daemon", QString("Servico iniciado em ").append(application()->applicationDirPath()).append(".")); - - QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath() + "/getConfig.json"); + QJsonObject result = ccacic->getJsonFromFile(application()->applicationDirPath().append("/getConfig.json")); if(!result.contains("error") && !result.isEmpty()){ - Ocacictimer->iniciarTimer(result["codestatus"].toInt(), application()->applicationDirPath()); + Ocacictimer->iniciarTimer(result["codestatus"].toInt()); }else{ qDebug() << "getConfig.json não encontrado."; } - - QLogger::QLog_Info("Cacic Daemon", "Serviço finalizado."); + //QLogger::QLog_Info("Cacic Daemon", "Serviço finalizado."); }catch (...){ qCritical() << "Error desconhecido ao iniciar o serviço."; } diff --git a/cacic-daemon/cacicD/cacicthread.cpp b/cacic-daemon/cacicD/cacicthread.cpp deleted file mode 100644 index a1fdfa3..0000000 --- a/cacic-daemon/cacicD/cacicthread.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "cacicthread.h" - -CacicThread::CacicThread(QObject *parent) : - QThread(parent) -{ -} diff --git a/cacic-daemon/cacicD/cacicthread.h b/cacic-daemon/cacicD/cacicthread.h deleted file mode 100644 index ed536eb..0000000 --- a/cacic-daemon/cacicD/cacicthread.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef CACICTHREAD_H -#define CACICTHREAD_H - -#include - -class CacicThread : public QThread -{ - Q_OBJECT -public: - explicit CacicThread(QObject *parent = 0); - -signals: - -public slots: - -}; - -#endif // CACICTHREAD_H diff --git a/cacic-daemon/cacicD/cacictimer.cpp b/cacic-daemon/cacicD/cacictimer.cpp index 550d23e..2b3e98f 100644 --- a/cacic-daemon/cacicD/cacictimer.cpp +++ b/cacic-daemon/cacicD/cacictimer.cpp @@ -1,29 +1,27 @@ #include "cacictimer.h" -CacicTimer::CacicTimer() +CacicTimer::CacicTimer(QString dirpath) { - OCacicComm = new CacicComm(); - ccacic = new CCacic(); - timer = new QTimer(this); - //manager = QLogger::QLoggerManager::getInstance(); - //manager->addDestination("cacicLog.txt", QStringList("CacicD"), QLogger::LogLevel); + qDebug() << "iniciou o constructor"; + definirDirGercols(dirpath); + setApplicationDirPath(dirpath); + iniciarInstancias(); connect(timer,SIGNAL(timeout()),this,SLOT(mslot())); } -void CacicTimer::iniciarTimer(int x, QString applicationDirPath) +void CacicTimer::iniciarTimer(int x) { - setApplicationDirPath(applicationDirPath); timer->start(x); } void CacicTimer::mslot(){ + cMutex->lock(); if(getTest()){ - //manager->QLogger::QLog_Trace("ModuleName", "Message: "); if(getConfig()){ - qDebug() << "getConfig() success. - " + QDateTime::currentDateTime().toLocalTime().toString(); - - //aqui irá abrir o semaforo e iniciar a coleta. - + QLogger::QLog_Info("Cacic Timer", QString("semáforo fechado.")); + iniciarGercols(); + cMutex->unlock(); + QLogger::QLog_Info("Cacic Timer", QString("semáforo aberto.")); }else{ qDebug() << "getConfig() failed. - " + QDateTime::currentDateTime().toLocalTime().toString(); } @@ -41,9 +39,9 @@ bool CacicTimer::getTest(){ QJsonObject as; as["computador"] = OCacic_Computer.toJsonObject(); QJsonObject jsonresult = OCacicComm->comm("/ws/neo/login", &ok, as); - if(jsonresult.contains("error")){ - return false; - } + // if(jsonresult.contains("error")){ + // return false; + // } try{ ccacic->setJsonToFile(jsonresult, getApplicationDirPath() + "/getTest.json"); return true; @@ -66,9 +64,9 @@ bool CacicTimer::getConfig(){ QJsonObject as; as["computador"] = OCacic_Computer.toJsonObject(); QJsonObject jsonresult = OCacicComm->comm("/ws/neo/login", &ok, as); - if(jsonresult.contains("error")){ - return false; - } + // if(jsonresult.contains("error")){ + // return false; + // } try{ ccacic->setJsonToFile(jsonresult, getApplicationDirPath() + "/getConfig.json"); return true; @@ -86,14 +84,45 @@ void CacicTimer::registraInicio() { } +QString CacicTimer::getDirProgram() const +{ + return dirProgram; +} + QString CacicTimer::getApplicationDirPath() const { return applicationDirPath; } +void CacicTimer::setDirProgram(const QString &value) +{ + dirProgram = value; +} + + +void CacicTimer::iniciarGercols() +{ + + QProcess proc; + proc.children(); + proc.execute(getDirProgram()); + if(proc.atEnd()){ + + } + // QString retorno = ccacic->startProcess(getDirProgram(),true,ok); + // qDebug() << retorno; + QLogger::QLog_Info("Cacic Timer","processo finalizado."); + // if (myProcess.waitForFinished(-1)){ + // qDebug() << "erro:" << myProcess.errorString(); + // }else{ + // qDebug() << "não deu erro:" << myProcess.readAll(); + // QLogger::QLog_Info("Cacic Timer","processo está aberto."); + // } +} + void CacicTimer::setApplicationDirPath(const QString &value) { - applicationDirPath = value; + this->applicationDirPath = value; } @@ -112,3 +141,22 @@ bool CacicTimer::compararHashMD5(QJsonDocument getconfigfile,QJsonDocument getCo return false; } } + +void CacicTimer::iniciarInstancias(){ + logManager = QLogger::QLoggerManager::getInstance(); + logManager->addDestination(getApplicationDirPath().append("/log.txt"),"Cacic Timer",QLogger::InfoLevel); + logManager->addDestination(getApplicationDirPath().append("/log.txt"),"Cacic Timer",QLogger::ErrorLevel); + OCacicComm = new CacicComm(); + ccacic = new CCacic(); + timer = new QTimer(this); + cMutex = new QMutex(QMutex::Recursive); + QLogger::QLog_Info("Cacic Timer", QString("terminou as instancias")); +} + +void CacicTimer::definirDirGercols(QString applicationDirPath){ +#if defined (Q_OS_WIN) + setDirProgram(applicationDirPath.append("\cacic-gercols.exe")); +#elif defined (Q_OS_LINUX) + setDirProgram(applicationDirPath.append("/cacic-gercols")); +#endif +} diff --git a/cacic-daemon/cacicD/cacictimer.h b/cacic-daemon/cacicD/cacictimer.h index 66b3152..6359860 100644 --- a/cacic-daemon/cacicD/cacictimer.h +++ b/cacic-daemon/cacicD/cacictimer.h @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include "ccacic.h" #include "cacic_comm.h" #include "cacic_computer.h" @@ -14,23 +16,31 @@ class CacicTimer : public QObject { Q_OBJECT public: - CacicTimer(); + CacicTimer(QString dirpath); QTimer *timer; CacicComm *OCacicComm; CACIC_Computer OCacic_Computer; CCacic *ccacic; - //QLogger::QLoggerManager *manager; - void iniciarTimer(int x, QString applicationDirPath); + QMutex *cMutex; + void iniciarTimer(int x); bool getTest(); bool getConfig(); bool compararHashMD5(QJsonDocument getconfigfile,QJsonDocument getConfig); - QString getApplicationDirPath() const; void setApplicationDirPath(const QString &value); + QString getApplicationDirPath() const; + void setDirProgram(const QString &value); private: void registraFim(); void registraInicio(); + QLogger::QLoggerManager *logManager; + QString dirProgram; + //QProcess *myProcess; QString applicationDirPath; + QString getDirProgram() const; + void iniciarGercols(); + void iniciarInstancias(); + void definirDirGercols(QString applicationDirPath); private slots: void mslot(); -- libgit2 0.21.2