summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorJanusz Kozerski <j.kozerski@samsung.com>2015-06-16 14:02:14 +0200
committerJanusz Kozerski <j.kozerski@samsung.com>2015-07-06 14:44:23 +0200
commitdb78d4705ab241499fe1ba438e15da514f4ec3ba (patch)
tree7fc49690eff5e0c8d1a5116d731ed85af665648e /src/include
parent263d2681b92f5d05726c1a2b7b5f4379a8f94646 (diff)
downloadcert-checker-db78d4705ab241499fe1ba438e15da514f4ec3ba.tar.gz
cert-checker-db78d4705ab241499fe1ba438e15da514f4ec3ba.tar.bz2
cert-checker-db78d4705ab241499fe1ba438e15da514f4ec3ba.zip
Add thread for processing events
Thread is waiting on conditional for events. When event will be add to queue the callback will send signal to thread (connman callback sends signal without adding event to queue). The thread: * Process the queue first: Moves all events from queue into the buffer. * Then process buffer (checks OCSP, shows popup, etc.) - to be implemented. Change-Id: I8cadc43b8d2c704bf07f0aec63b909ec4d52d5a7
Diffstat (limited to 'src/include')
-rw-r--r--src/include/cchecker/logic.h33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/include/cchecker/logic.h b/src/include/cchecker/logic.h
index 3442890..1f42ab3 100644
--- a/src/include/cchecker/logic.h
+++ b/src/include/cchecker/logic.h
@@ -23,10 +23,12 @@
#ifndef CCHECKER_LOGIC_H
#define CCHECKER_LOGIC_H
+#include <condition_variable>
#include <gio/gio.h>
#include <string>
#include <vector>
#include <list>
+#include <thread>
#include <cchecker/app.h>
#include <cchecker/queue.h>
@@ -42,7 +44,8 @@ enum error_t {
REGISTER_CALLBACK_ERROR,
DBUS_ERROR,
PACKAGE_MANAGER_ERROR,
- DATABASE_ERROR
+ DATABASE_ERROR,
+ INTERNAL_ERROR
};
enum pkgmgr_event_t {
@@ -71,15 +74,19 @@ class Logic {
GVariant *parameters,
void *logic_ptr);
- private:
- //TODO: implement missing members
+ private:
error_t setup_db();
+ void load_database_to_buffer();
+
void check_ocsp(app_t &app);
void add_ocsp_url(const std::string &issuer, const std::string &url, int64_t date);
void pkgmanager_uninstall(const app_t &app);
void get_certs_from_signature(const std::string &signature, std::vector<std::string> &cert);
- void load_database_to_buffer();
+
+ void add_app_to_buffer(const app_t &app);
+ void remove_app_from_buffer(const app_t &app);
+
void pkgmgr_callback_internal(GVariant *parameters, pkgmgr_event_t event);
error_t register_dbus_signal_handler(GDBusProxy *proxy,
const char *name,
@@ -92,10 +99,28 @@ class Logic {
void *logic_ptr)
);
+ void process_all(void);
+ void process_queue(void);
+ void process_event(const event_t &event);
+ error_t process_buffer(void);
+
+ bool get_online(void) const;
+ void set_online(bool online);
+
+ bool get_should_exit(void) const;
+ void set_should_exit(void);
+
Queue m_queue;
std::list<app_t> m_buffer;
DB::SqlQuery *m_sqlquery;
+ bool m_was_setup_called;
+
bool m_is_online;
+ std::condition_variable m_to_process;
+ std::mutex m_mutex_cv;
+ std::thread m_thread;
+ bool m_should_exit;
+
GDBusProxy *m_proxy_connman;
GDBusProxy *m_proxy_pkgmgr_install;
GDBusProxy *m_proxy_pkgmgr_uninstall;