summaryrefslogtreecommitdiff
path: root/src/include/cchecker/logic.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/cchecker/logic.h')
-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;