summaryrefslogtreecommitdiff
path: root/src/service/logic.cpp
diff options
context:
space:
mode:
authorsangwan.kwon <sangwan.kwon@samsung.com>2016-05-18 14:21:05 +0900
committersangwan.kwon <sangwan.kwon@samsung.com>2016-05-18 18:41:41 +0900
commitee9e1a6a8eb9e4c2fcd49cdcefa9e81820a5e529 (patch)
tree8ca209dd9fa3aeb34c8c532a8ce10aa024940779 /src/service/logic.cpp
parentd83054179bd49463db2874ec0aa67215c5e22d66 (diff)
downloadcert-checker-ee9e1a6a8eb9e4c2fcd49cdcefa9e81820a5e529.tar.gz
cert-checker-ee9e1a6a8eb9e4c2fcd49cdcefa9e81820a5e529.tar.bz2
cert-checker-ee9e1a6a8eb9e4c2fcd49cdcefa9e81820a5e529.zip
Add timer for remaining buffer
* Timer's interval is 1 hour. * It works periodically until buffer is empty. Change-Id: I719c9addcedeb6f276d969a849c8374813857589
Diffstat (limited to 'src/service/logic.cpp')
-rw-r--r--src/service/logic.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/service/logic.cpp b/src/service/logic.cpp
index 84a7707..086dbf5 100644
--- a/src/service/logic.cpp
+++ b/src/service/logic.cpp
@@ -25,17 +25,18 @@
#include <stdexcept>
#include <set>
-#include "common/log.h"
#include <cchecker/sql_query.h>
#include <cchecker/UIBackend.h>
#include "common/binary-queue.h"
+#include "common/log.h"
using namespace std;
namespace CCHECKER {
namespace {
+
struct PkgmgrinfoEvent {
PkgmgrinfoEvent(uid_t _uid, const char *_pkgid)
: uid(_uid)
@@ -108,6 +109,8 @@ void Logic::clean(void)
delete m_sqlquery;
+ timerStop();
+
LogDebug("Cert-checker cleaning finish.");
}
@@ -575,6 +578,8 @@ void Logic::process_all()
break;
} else {
LogDebug("[thread] Check again : " << m_buffer.size());
+ // Timer running periodically
+ timerStart(3600);
}
} else if (!get_online()) {
LogDebug("[thread] No network. Buffer won't be processed.");
@@ -587,6 +592,19 @@ void Logic::process_all()
}
}
+void Logic::job(void)
+{
+ std::lock_guard<std::mutex> lock(m_mutex_cv);
+
+ if (m_buffer.empty()) {
+ LogDebug("[timer] Buffer is empty.");
+ timerStop();
+ } else {
+ LogDebug("[timer] Notify thread - periodic wakeup");
+ m_to_process.notify_one();
+ }
+}
+
void Logic::process_event(const event_t &event)
{
LogDebug("Move event from queue to (buffer and db).");