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.h45
1 files changed, 31 insertions, 14 deletions
diff --git a/src/include/cchecker/logic.h b/src/include/cchecker/logic.h
index 6700333..1ad9cd4 100644
--- a/src/include/cchecker/logic.h
+++ b/src/include/cchecker/logic.h
@@ -29,11 +29,15 @@
#include <vector>
#include <list>
#include <thread>
+#include <memory>
#include <cchecker/app.h>
#include <cchecker/certs.h>
#include <cchecker/queue.h>
+#include <package-manager.h>
+#include <pkgmgr-info.h>
+
namespace CCHECKER {
namespace DB {
@@ -61,23 +65,12 @@ class Logic {
error_t setup(void);
virtual void clean(void);
- static void pkgmgr_install_callback(GDBusProxy *proxy,
- gchar *sender_name,
- gchar *signal_name,
- GVariant *parameters,
- void *logic_ptr);
- static void pkgmgr_uninstall_callback(GDBusProxy *proxy,
- gchar *sender_name,
- gchar *signal_name,
- GVariant *parameters,
- void *logic_ptr);
static void connman_callback(GDBusProxy *proxy,
gchar *sender_name,
gchar *signal_name,
GVariant *parameters,
void *logic_ptr);
-
protected:
error_t setup_db();
void load_database_to_buffer();
@@ -87,7 +80,6 @@ class Logic {
void remove_app_from_buffer_and_database(const app_t &app);
void set_connman_online_state();
- void pkgmgr_callback_internal(GVariant *parameters, pkgmgr_event_t event);
error_t register_dbus_signal_handler(GDBusProxy **proxy,
const char *name,
const char *object_path,
@@ -99,6 +91,28 @@ class Logic {
void *logic_ptr)
);
+ static int pkgmgrinfo_event_handler_static(
+ uid_t uid,
+ int reqid,
+ const char *pkgtype,
+ const char *pkgid,
+ const char *key,
+ const char *val,
+ const void *pmsg,
+ void *data);
+
+ int pkgmgrinfo_event_handler(
+ uid_t uid,
+ int reqid,
+ const char *pkgtype,
+ const char *pkgid,
+ const char *key,
+ const char *val,
+ const void *pmsg,
+ void *data);
+
+ int push_pkgmgrinfo_event(uid_t uid, const char *pkgid);
+
void push_event(event_t event);
void process_all(void);
@@ -132,8 +146,11 @@ class Logic {
bool m_should_exit;
GDBusProxy *m_proxy_connman;
- GDBusProxy *m_proxy_pkgmgr_install;
- GDBusProxy *m_proxy_pkgmgr_uninstall;
+
+ int m_reqid_install;
+ int m_reqid_uninstall;
+ std::unique_ptr<pkgmgrinfo_client, int(*)(pkgmgrinfo_client *)> m_pc_install;
+ std::unique_ptr<pkgmgrinfo_client, int(*)(pkgmgrinfo_client *)> m_pc_uninstall;
};
} // CCHECKER