From 8cb15bb80482c8573f003b65ac64dc91cd5c69f8 Mon Sep 17 00:00:00 2001 From: "sanghyeok.oh" Date: Fri, 16 Aug 2019 19:21:31 +0900 Subject: [PATCH] re-arrange code Change-Id: Ie2f9dcde57b411bd4b84206db2c91c4cae25e1e2 Signed-off-by: sanghyeok.oh --- src/libgdbus/dbus-system.c | 329 +++++++++++++++++++++++------------------ src/libgdbus/dbus-system.h | 358 ++++++++++++++++++++++++++++----------------- 2 files changed, 403 insertions(+), 284 deletions(-) diff --git a/src/libgdbus/dbus-system.c b/src/libgdbus/dbus-system.c index 0653c4f..83672e3 100644 --- a/src/libgdbus/dbus-system.c +++ b/src/libgdbus/dbus-system.c @@ -1,7 +1,7 @@ /* - * deviced + * libsyscommon * - * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ * limitations under the License. */ - #include #include #include @@ -30,47 +29,6 @@ /* 10 seconds */ #define DBUS_REPLY_TIMEOUT (10000) -int check_systemd_active(void) -{ - int ret = FALSE; - GVariant *msg = NULL; - GVariant *var = NULL; - char *state; - - _I("%s %s", "org.freedesktop.systemd1.Unit", "ActiveState"); - - msg = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1", - "/org/freedesktop/systemd1/unit/default_2etarget", - "org.freedesktop.DBus.Properties", - "Get", - g_variant_new("(ss)", "org.freedesktop.systemd1.Unit", "ActiveState")); - if (!msg) - return -EBADMSG; - - if (!dh_get_param_from_var(msg, "(v)", &var)) { - _E("reply is not variant type"); - ret = -EBADMSG; - goto out; - } - if (!dh_get_param_from_var(var, "(s)", &state)) { - _E("variant doesn't have string (%s)", g_variant_get_type_string(var)); - ret = -EBADMSG; - goto out; - } - - if (strncmp(state, "active", 6) == 0) - ret = TRUE; - - g_free(state); -out: - if (var) - g_variant_unref(var); - if (msg) - g_variant_unref(msg); - - return ret; -} - static GBusType g_default_bus_type = G_BUS_TYPE_SYSTEM; pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -1714,28 +1672,6 @@ int _check_type_string_is_container(const char *signature) return TRUE; } -GVariant *dbus_handle_make_simple_array(const char *sig, int *param) -{ - GVariantBuilder *builder = NULL; - GVariant *var = NULL; - char format[256]; - int i = 0; - - builder = g_variant_builder_new(G_VARIANT_TYPE(sig)); - if (!builder) { - _E("failed to g_variant_builder_new"); - return NULL; - } - - while (param[i]) - g_variant_builder_add(builder, "i", param[i++]); - - snprintf(format, sizeof(format) - 1, "(%s)", sig); - var = g_variant_new(format, builder); - g_variant_builder_unref(builder); - return var; -} - /* todo: looks like garbage... */ static GVariant* _append_variant(const char *signature, const char *param[]) { @@ -1865,7 +1801,11 @@ GVariant *dbus_handle_method_sync_with_reply_var(const char *dest, ret = g_dbus_connection_call_sync(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &err); + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + DBUS_REPLY_TIMEOUT, + NULL, + &err); if (!ret || err) { if (err) { _E("failed to g_dbus_connection_call_sync:%s", err->message); @@ -1902,8 +1842,12 @@ GVariant *dbus_handle_method_sync_with_reply_var_timeout(const char *dest, const } ret = g_dbus_connection_call_sync(dh->conn, - dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout, NULL, &err); + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout, + NULL, + &err); if (!ret || err) { if (err) { _E("failed to g_dbus_connection_call_sync:%s", err->message); @@ -1988,11 +1932,13 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply(const char *dest, } ret = g_dbus_connection_call_with_unix_fd_list_sync(dh->conn, - dest, path, iface, method, var, - NULL, G_DBUS_CALL_FLAGS_NONE, + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, -1, g_infdlist, &g_outfdlist, - NULL, &err); + NULL, + &err); if (!ret || err) { if (err) { _E("failed to g_dbus_connection_call_with_unix_fd_list_sync:%s", err->message); @@ -2067,8 +2013,9 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *d /* send message */ ret = g_dbus_connection_call_with_unix_fd_list_sync(dh->conn, - dest, path, iface, method, param, - NULL, G_DBUS_CALL_FLAGS_NONE, + dest, path, iface, method, + param, NULL, + G_DBUS_CALL_FLAGS_NONE, -1, g_infdlist, &g_outfdlist, NULL, &err); @@ -2156,10 +2103,10 @@ int dbus_handle_method_sync(const char *dest, } int dbus_handle_method_sync_var(const char *dest, - const char *path, - const char *iface, - const char *method, - GVariant *param) + const char *path, + const char *iface, + const char *method, + GVariant *param) { int result; gboolean result_bool; @@ -2189,12 +2136,12 @@ int dbus_handle_method_sync_var(const char *dest, } int dbus_handle_method_sync_timeout(const char *dest, - const char *path, - const char *iface, - const char *method, - const char *signature, - const char *param[], - int timeout) + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[], + int timeout) { dbus_handle_s *dh = NULL; GError *err = NULL; @@ -2218,7 +2165,11 @@ int dbus_handle_method_sync_timeout(const char *dest, reply = g_dbus_connection_call_sync(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout, NULL, &err); + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout, + NULL, + &err); if (!reply || err) { _E("failed to g_dbus_connection_call_sync:%s", err->message); g_error_free(err); @@ -2236,11 +2187,11 @@ int dbus_handle_method_sync_timeout(const char *dest, } int dbus_handle_method_sync_pairs(const char *dest, - const char *path, - const char *iface, - const char *method, - int num, - va_list args) + const char *path, + const char *iface, + const char *method, + int num, + va_list args) { GError *err = NULL; GVariant * reply = NULL; @@ -2292,11 +2243,11 @@ int dbus_handle_method_sync_pairs(const char *dest, } int dbus_handle_method_async_pairs(const char *dest, - const char *path, - const char *iface, - const char *method, - int num, - va_list args) + const char *path, + const char *iface, + const char *method, + int num, + va_list args) { char *key, *value; GVariant *var; @@ -2327,20 +2278,24 @@ int dbus_handle_method_async_pairs(const char *dest, var = g_variant_new("(a{ss})", builder); g_variant_builder_unref(builder); - g_dbus_connection_call(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, - NULL, - NULL); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); return 0; } int dbus_handle_method_async(const char *dest, - const char *path, - const char *iface, - const char *method, - const char *signature, - const char *param[]) + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[]) { GVariant * var = NULL; dbus_handle_s *dh = NULL; @@ -2359,19 +2314,23 @@ int dbus_handle_method_async(const char *dest, if (signature && param) var = _append_variant(signature, param); - g_dbus_connection_call(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, - NULL, - NULL); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); return 0; } int dbus_handle_method_async_var(const char *dest, - const char *path, - const char *iface, - const char *method, - GVariant *param) + const char *path, + const char *iface, + const char *method, + GVariant *param) { dbus_handle_s *dh = NULL; @@ -2386,10 +2345,14 @@ int dbus_handle_method_async_var(const char *dest, return -1; } - g_dbus_connection_call(dh->conn, dest, path, iface, method, - param, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, - NULL, - NULL); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + param, NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); return 0; } @@ -2424,14 +2387,14 @@ out: } int dbus_handle_method_async_pairs_with_reply(const char *dest, - const char *path, - const char *iface, - const char *method, - int num, - va_list args, - dbus_pending_cb cb, - int timeout_msec, - void *data) + const char *path, + const char *iface, + const char *method, + int num, + va_list args, + dbus_pending_cb cb, + int timeout_msec, + void *data) { dbus_handle_s *dh = NULL; pending_call_data *pdata = NULL; @@ -2479,10 +2442,14 @@ int dbus_handle_method_async_pairs_with_reply(const char *dest, pdata->func = cb; pdata->data = data; } - g_dbus_connection_call(dh->conn, dest, path, iface, method, - param, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL, - (GAsyncReadyCallback)_cb_pending, - pdata); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + param, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout_msec, + NULL, + (GAsyncReadyCallback)_cb_pending, + pdata); return ret; err: @@ -2492,14 +2459,14 @@ err: } int dbus_handle_method_async_with_reply(const char *dest, - const char *path, - const char *iface, - const char *method, - const char *signature, - const char *param[], - dbus_pending_cb cb, - int timeout_msec, - void *data) + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[], + dbus_pending_cb cb, + int timeout_msec, + void *data) { dbus_handle_s *dh = NULL; pending_call_data *pdata = NULL; @@ -2535,10 +2502,14 @@ int dbus_handle_method_async_with_reply(const char *dest, pdata->func = cb; pdata->data = data; } - g_dbus_connection_call(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL, - (GAsyncReadyCallback)_cb_pending, - pdata); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout_msec, + NULL, + (GAsyncReadyCallback)_cb_pending, + pdata); return ret; err: @@ -2586,10 +2557,14 @@ int dbus_handle_method_async_with_reply_var(const char *dest, pdata->func = cb; pdata->data = data; } - g_dbus_connection_call(dh->conn, dest, path, iface, method, - param, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL, - (GAsyncReadyCallback)_cb_pending, - pdata); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + param, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout_msec, + NULL, + (GAsyncReadyCallback)_cb_pending, + pdata); return ret; err: @@ -2615,8 +2590,7 @@ int dbus_connection_get_sender_pid(GDBusConnection *conn, const char * sender) vret = g_dbus_connection_call_sync(conn, "org.freedesktop.DBus", "/", "org.freedesktop.DBus", "GetConnectionUnixProcessID", - g_variant_new("(s)", sender), - NULL, + g_variant_new("(s)", sender), NULL, G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, @@ -2877,3 +2851,66 @@ void dbus_handle_check_owner_name(dbus_handle_h handle, const char *owner_name) g_strfreev(strv); } + +int check_systemd_active(void) +{ + int ret = FALSE; + GVariant *msg = NULL; + GVariant *var = NULL; + char *state; + + _I("%s %s", "org.freedesktop.systemd1.Unit", "ActiveState"); + + msg = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1", + "/org/freedesktop/systemd1/unit/default_2etarget", + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new("(ss)", "org.freedesktop.systemd1.Unit", "ActiveState")); + if (!msg) + return -EBADMSG; + + if (!dh_get_param_from_var(msg, "(v)", &var)) { + _E("reply is not variant type"); + ret = -EBADMSG; + goto out; + } + if (!dh_get_param_from_var(var, "(s)", &state)) { + _E("variant doesn't have string (%s)", g_variant_get_type_string(var)); + ret = -EBADMSG; + goto out; + } + + if (strncmp(state, "active", 6) == 0) + ret = TRUE; + + g_free(state); +out: + if (var) + g_variant_unref(var); + if (msg) + g_variant_unref(msg); + + return ret; +} + +GVariant *dbus_handle_make_simple_array(const char *sig, int *param) +{ + GVariantBuilder *builder = NULL; + GVariant *var = NULL; + char format[256]; + int i = 0; + + builder = g_variant_builder_new(G_VARIANT_TYPE(sig)); + if (!builder) { + _E("failed to g_variant_builder_new"); + return NULL; + } + + while (param[i]) + g_variant_builder_add(builder, "i", param[i++]); + + snprintf(format, sizeof(format) - 1, "(%s)", sig); + var = g_variant_new(format, builder); + g_variant_builder_unref(builder); + return var; +} diff --git a/src/libgdbus/dbus-system.h b/src/libgdbus/dbus-system.h index cce31bb..490419b 100644 --- a/src/libgdbus/dbus-system.h +++ b/src/libgdbus/dbus-system.h @@ -1,7 +1,7 @@ /* - * deviced + * libsyscommon * - * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. @@ -16,9 +16,8 @@ * limitations under the License. */ - -#ifndef __DBUS_H__ -#define __DBUS_H__ +#ifndef __DBUS_SYSTEM_H__ +#define __DBUS_SYSTEM_H__ #include #include @@ -34,112 +33,25 @@ typedef struct { int size; } dbus_byte; -GVariant *dbus_handle_method_sync_with_reply_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *var); - -GVariant *dbus_handle_method_sync_with_reply_var_timeout(const char *dest, const char *path, const char *iface, const char *method, GVariant *var, int timeout); - -/* fd */ -gint* dbus_handle_get_unix_fd_list(GDBusMethodInvocation *invocation, int *size); - -GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply(const char *dest, const char *path, - const char *iface, const char *method, - const char *signature, const char *param[], - int *in_fdlist, int in_size, - int **out_fdlist, int *out_size); -GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, const char *path, - const char *iface, const char *method, - GVariant *param, - int *in_fdlist, int in_size, - int **out_fdlist, int *out_size); - -int dbus_handle_method_sync(const char *dest, const char *path, - const char *interface, const char *method, - const char *sig, const char *param[]); - -int dbus_handle_method_sync_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *param); - -int dbus_handle_method_sync_timeout(const char *dest, const char *path, - const char *interface, const char *method, - const char *sig, const char *param[], int timeout); - -int dbus_handle_method_sync_pairs(const char *dest, const char *path, - const char *interface, const char *method, - int num, va_list args); - -int dbus_handle_method_async_pairs(const char *dest, const char *path, - const char *interface, const char *method, - int num, va_list args); - -int dbus_handle_method_async(const char *dest, const char *path, - const char *interface, const char *method, - const char *sig, const char *param[]); - -int dbus_handle_method_async_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *param); - -typedef void (*dbus_pending_cb)(GVariant *var, void *user_data, GError *err); -int dbus_handle_method_async_with_reply(const char *dest, - const char *path, - const char *iface, - const char *method, - const char *signature, - const char *param[], - dbus_pending_cb cb, - int timeout_msec, - void *data); - - -int dbus_handle_method_async_with_reply_var(const char *dest, - const char *path, - const char *iface, - const char *method, - GVariant *param, - dbus_pending_cb cb, - int timeout_msec, - void *data); - -int dbus_handle_method_async_pairs_with_reply(const char *dest, - const char *path, - const char *iface, - const char *method, - int num, - va_list args, - dbus_pending_cb cb, - int timeout_msec, - void *data); - -int check_systemd_active(void); - -/** - * @brief Dbus handler which is used to register and call methods - - * @since_tizen 4.0 - */ typedef void *dbus_handle_h; -/** - * @brief Dbus method handler which is used to unregister dbus methods - * @since_tizen 4.0 - */ typedef void *dbus_object_handle_h; -/** - * @brief Structure which contains the dbus method name and callback function. - * @since_tizen 4.0 - */ typedef struct { const char *member; const char *signature_in; const char *signature_out; - GVariant *(*func)(GDBusConnection *conn, - const gchar *sender, const gchar *path, const gchar *iface, const gchar *name, - GVariant *param, GDBusMethodInvocation *invocation, gpointer user_data); + GVariant *(*func) (GDBusConnection *conn, + const gchar *sender, + const gchar *path, + const gchar *iface, + const gchar *name, + GVariant *param, + GDBusMethodInvocation *invocation, + gpointer user_data); } dbus_method_s; -/** - * @brief Structure which contains the dbus interface information and its methods.i - * @since_tizen 4.0 - */ typedef struct { dbus_object_handle_h oh; const char *name; @@ -147,33 +59,179 @@ typedef struct { int nr_methods; } dbus_interface_u; +typedef struct { + guint pid; + guint uid; + gchar *unique_name; + gchar *sec_label; +} GDBusCredentials; + #define dh_get_param_from_var(gvar, signature, ...) ((g_strcmp0(signature, g_variant_get_type_string(gvar)) == 0) ? g_variant_get(gvar, signature, __VA_ARGS__), TRUE : FALSE) #define dbus_handle_new_g_variant_tuple() g_variant_new_tuple(NULL, 0) -/** - * @brief Callback function which is called when the user data needs to be released. - * @since_tizen 4.0 - */ typedef void (*destroy_notified)(void *data); +typedef void (*dbus_pending_cb)(GVariant *var, void *user_data, GError *err); + typedef struct { dbus_pending_cb func; void *data; } pending_call_data; -int dbus_handle_request_bus_name(dbus_handle_h handle, const char *bus_name, GBusNameAcquiredCallback acquired_handler, GBusNameLostCallback lost_handler); - -dbus_handle_h dbus_handle_get_connection(GBusType bus_type, gboolean priv); - -int dbus_handle_register_dbus_object(dbus_handle_h handle, const char *obj_path, const dbus_interface_u *iface); -int dbus_handle_unregister_dbus_object(dbus_handle_h handle, const char *obj_path); - -int dbus_handle_add_dbus_object(dbus_handle_h handle, const char *obj_path, const dbus_interface_u *iface_u); -int dbus_handle_register_dbus_object_all(dbus_handle_h handle); - -guint subscribe_dbus_signal(dbus_handle_h handle, const char *path, const char *iface, const char *name, GDBusSignalCallback cb, void *data, destroy_notified free_func); -void unsubscribe_dbus_signal(dbus_handle_h handle, guint id); +dbus_handle_h dbus_handle_get_connection (GBusType bus_type, + gboolean priv); + +int dbus_handle_request_bus_name (dbus_handle_h handle, + const char *bus_name, + GBusNameAcquiredCallback acquired_handler, + GBusNameLostCallback lost_handler); + +int dbus_handle_register_dbus_object (dbus_handle_h handle, + const char *obj_path, + const dbus_interface_u *iface); + +int dbus_handle_unregister_dbus_object (dbus_handle_h handle, + const char *obj_path); + +int dbus_handle_add_dbus_object (dbus_handle_h handle, + const char *obj_path, + const dbus_interface_u *iface_u); + +int dbus_handle_register_dbus_object_all (dbus_handle_h handle); + + +int dbus_handle_method_sync (const char *dest, + const char *path, + const char *interface, + const char *method, + const char *sig, + const char *param[]); + +int dbus_handle_method_sync_var (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *param); + +int dbus_handle_method_sync_timeout (const char *dest, + const char *path, + const char *interface, + const char *method, + const char *sig, + const char *param[], + int timeout); + +int dbus_handle_method_sync_pairs (const char *dest, + const char *path, + const char *interface, + const char *method, + int num, + va_list args); + +int dbus_handle_method_async_pairs (const char *dest, + const char *path, + const char *interface, + const char *method, + int num, + va_list args); + +int dbus_handle_method_async (const char *dest, + const char *path, + const char *interface, + const char *method, + const char *sig, + const char *param[]); + +int dbus_handle_method_async_var (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *param); + +int dbus_handle_method_async_with_reply (const char *dest, + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[], + dbus_pending_cb cb, + int timeout_msec, + void *data); + +int dbus_handle_method_async_with_reply_var (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *param, + dbus_pending_cb cb, + int timeout_msec, + void *data); + +int dbus_handle_method_async_pairs_with_reply (const char *dest, + const char *path, + const char *iface, + const char *method, + int num, + va_list args, + dbus_pending_cb cb, + int timeout_msec, + void *data); + +GVariant *dbus_handle_method_sync_with_reply_var (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *var); + +GVariant *dbus_handle_method_sync_with_reply_var_timeout (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *var, + int timeout); + +gint* dbus_handle_get_unix_fd_list (GDBusMethodInvocation *invocation, + int *size); + +GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply (const char *dest, + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[], + int *in_fdlist, + int in_size, + int **out_fdlist, + int *out_size); + +GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *param, + int *in_fdlist, + int in_size, + int **out_fdlist, + int *out_size); + + +guint subscribe_dbus_signal (dbus_handle_h handle, + const char *path, + const char *iface, + const char *name, + GDBusSignalCallback cb, + void *data, + destroy_notified free_func); + +void unsubscribe_dbus_signal (dbus_handle_h handle, + guint id); + +int dbus_handle_emit_dbus_signal (const char *dest, + const char *path, + const char *iface, + const char *name, + GVariant *param); enum ctx_quit_reason {CTX_QUIT_UNKNOWN, CTX_QUIT_NORMAL, CTX_QUIT_TIMEOUT}; @@ -187,30 +245,54 @@ typedef struct { void *user_data; } sig_ctx; -sig_ctx *dbus_handle_new_signal_ctx(void); -void dbus_handle_free_signal_ctx(sig_ctx *ctx); -guint subscribe_dbus_signal_ctx(dbus_handle_h handle, sig_ctx *ctx, const char *sender, const char *path, const char *iface, const char *name, GDBusSignalCallback cb); -int dbus_handle_signal_ctx_wait(sig_ctx *ctx); -int dbus_handle_signal_ctx_add_timeout(sig_ctx *ctx, int timeout); +sig_ctx *dbus_handle_new_signal_ctx (void); -GVariant *dbus_handle_make_simple_array(const char *sig, int *param); +void dbus_handle_free_signal_ctx (sig_ctx *ctx); -int dbus_handle_emit_dbus_signal(const char *dest, const char *path, const char *iface, const char *name, GVariant *param); +guint subscribe_dbus_signal_ctx (dbus_handle_h handle, + sig_ctx *ctx, + const char *sender, + const char *path, + const char *iface, + const char *name, + GDBusSignalCallback cb); -typedef struct -{ - guint pid; - guint uid; - gchar *unique_name; - gchar *sec_label; -} GDBusCredentials; +int dbus_handle_signal_ctx_wait (sig_ctx *ctx); + +int dbus_handle_signal_ctx_add_timeout (sig_ctx *ctx, + int timeout); + + + + +int dbus_connection_get_sender_pid (GDBusConnection *conn, + const char * sender); + +int dbus_handle_get_sender_pid (dbus_handle_h handle, + const char * sender); + +int dbus_handle_get_sender_credentials (dbus_handle_h handle, + const char *name, + GDBusCredentials *creds); + +int dbus_handle_watch_name (const char *name, + GBusNameAppearedCallback name_appeared_handler, + GBusNameVanishedCallback name_vanished_handler, + void *user_data, + GDestroyNotify user_data_free_func); + +void dbus_handle_unwatch_name (guint id); + +char** dbus_handle_get_owner_list (dbus_handle_h handle, + const char *bus_name); + +void dbus_handle_check_owner_name (dbus_handle_h handle, + const char *owner_name); + +int check_systemd_active (void); + +GVariant *dbus_handle_make_simple_array (const char *sig, + int *param); -int dbus_connection_get_sender_pid(GDBusConnection *conn, const char * sender); -int dbus_handle_get_sender_pid(dbus_handle_h handle, const char * sender); -int dbus_handle_get_sender_credentials(dbus_handle_h handle, const char *name, GDBusCredentials *creds); -int dbus_handle_watch_name(const char *name, GBusNameAppearedCallback name_appeared_handler, GBusNameVanishedCallback name_vanished_handler, void *user_data, GDestroyNotify user_data_free_func); -void dbus_handle_unwatch_name(guint id); -char** dbus_handle_get_owner_list(dbus_handle_h handle, const char *bus_name); -void dbus_handle_check_owner_name(dbus_handle_h handle, const char *owner_name); -#endif +#endif \ No newline at end of file -- 2.7.4