File bug-1015264_pacemaker-libservices-refactor-DBus-code.patch of Package pacemaker.8397
commit 5d3f5470576c15426926e45a69f708382809996b
Author: Ken Gaillot <kgaillot@redhat.com>
Date: Fri Sep 2 11:04:56 2016 -0500
Refactor: libservices: bring DBus code closer to current standards
Add a copyright and license notice, indent properly, and try to keep
line lengths reasonable.
diff --git a/lib/services/dbus.c b/lib/services/dbus.c
index d36c73d..9ad3779 100644
--- a/lib/services/dbus.c
+++ b/lib/services/dbus.c
@@ -1,3 +1,10 @@
+/*
+ * Copyright (C) 2014-2016 Andrew Beekhof <andrew@beekhof.net>
+ *
+ * This source code is licensed under the GNU Lesser General Public License
+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
+ */
+
#include <crm_internal.h>
#include <crm/crm.h>
#include <crm/services.h>
@@ -6,26 +13,28 @@
#define BUS_PROPERTY_IFACE "org.freedesktop.DBus.Properties"
-struct db_getall_data
-{
- char *name;
- char *target;
- char *object;
- void *userdata;
- void (*callback)(const char *name, const char *value, void *userdata);
+struct db_getall_data {
+ char *name;
+ char *target;
+ char *object;
+ void *userdata;
+ void (*callback)(const char *name, const char *value, void *userdata);
};
-static bool pcmk_dbus_error_check(DBusError *err, const char *prefix, const char *function, int line)
+static bool
+pcmk_dbus_error_check(DBusError *err, const char *prefix, const char *function, int line)
{
if (err && dbus_error_is_set(err)) {
- do_crm_log_alias(LOG_ERR, __FILE__, function, line, "%s: DBus error '%s'", prefix, err->message);
+ do_crm_log_alias(LOG_ERR, __FILE__, function, line,
+ "%s: DBus error '%s'", prefix, err->message);
dbus_error_free(err);
return TRUE;
}
return FALSE;
}
-DBusConnection *pcmk_dbus_connect(void)
+DBusConnection *
+pcmk_dbus_connect(void)
{
DBusError err;
DBusConnection *connection;
@@ -42,12 +51,15 @@ DBusConnection *pcmk_dbus_connect(void)
return connection;
}
-void pcmk_dbus_disconnect(DBusConnection *connection)
+void
+pcmk_dbus_disconnect(DBusConnection *connection)
{
+ return;
}
bool
-pcmk_dbus_find_error(const char *method, DBusPendingCall* pending, DBusMessage *reply, DBusError *ret)
+pcmk_dbus_find_error(const char *method, DBusPendingCall* pending,
+ DBusMessage *reply, DBusError *ret)
{
DBusError error;
@@ -110,7 +122,9 @@ pcmk_dbus_find_error(const char *method, DBusPendingCall* pending, DBusMessage *
return FALSE;
}
-DBusMessage *pcmk_dbus_send_recv(DBusMessage *msg, DBusConnection *connection, DBusError *error, int timeout)
+DBusMessage *
+pcmk_dbus_send_recv(DBusMessage *msg, DBusConnection *connection,
+ DBusError *error, int timeout)
{
const char *method = NULL;
DBusMessage *reply = NULL;
@@ -120,11 +134,12 @@ DBusMessage *pcmk_dbus_send_recv(DBusMessage *msg, DBusConnection *connection, D
method = dbus_message_get_member (msg);
if (timeout <= 0) {
+ /* DBUS_TIMEOUT_USE_DEFAULT (-1) tells DBus to use a sane default */
timeout = DBUS_TIMEOUT_USE_DEFAULT;
}
// send message and get a handle for a reply
- if (!dbus_connection_send_with_reply (connection, msg, &pending, timeout/* -1 is default timeout, aka. DBUS_TIMEOUT_USE_DEFAULT */)) {
+ if (!dbus_connection_send_with_reply(connection, msg, &pending, timeout)) {
if(error) {
dbus_error_init(error);
error->message = "Call to dbus_connection_send_with_reply() failed";
@@ -154,8 +169,10 @@ DBusMessage *pcmk_dbus_send_recv(DBusMessage *msg, DBusConnection *connection, D
return reply;
}
-DBusPendingCall* pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection,
- void(*done)(DBusPendingCall *pending, void *user_data), void *user_data, int timeout)
+DBusPendingCall *
+pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection,
+ void(*done)(DBusPendingCall *pending, void *user_data),
+ void *user_data, int timeout)
{
DBusError error;
const char *method = NULL;
@@ -169,11 +186,12 @@ DBusPendingCall* pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection,
if (timeout <= 0) {
+ /* DBUS_TIMEOUT_USE_DEFAULT (-1) tells DBus to use a sane default */
timeout = DBUS_TIMEOUT_USE_DEFAULT;
}
// send message and get a handle for a reply
- if (!dbus_connection_send_with_reply (connection, msg, &pending, timeout/* -1 is default timeout, aka. DBUS_TIMEOUT_USE_DEFAULT */)) {
+ if (!dbus_connection_send_with_reply(connection, msg, &pending, timeout)) {
crm_err("Send with reply failed for %s", method);
return NULL;
@@ -187,11 +205,11 @@ DBusPendingCall* pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection,
crm_info("DBus %s call completed too soon", method);
if(done) {
#if 0
- /* This sounds like a good idea, but allegedly it breaks things */
- done(pending, user_data);
- pending = NULL;
+ /* This sounds like a good idea, but allegedly it breaks things */
+ done(pending, user_data);
+ pending = NULL;
#else
- CRM_ASSERT(dbus_pending_call_set_notify(pending, done, user_data, NULL));
+ CRM_ASSERT(dbus_pending_call_set_notify(pending, done, user_data, NULL));
#endif
}
@@ -201,7 +219,9 @@ DBusPendingCall* pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection,
return pending;
}
-bool pcmk_dbus_type_check(DBusMessage *msg, DBusMessageIter *field, int expected, const char *function, int line)
+bool
+pcmk_dbus_type_check(DBusMessage *msg, DBusMessageIter *field, int expected,
+ const char *function, int line)
{
int dtype = 0;
DBusMessageIter lfield;
@@ -340,25 +360,21 @@ pcmk_dbus_lookup_cb(DBusPendingCall *pending, void *user_data)
}
char *
-pcmk_dbus_get_property(
- DBusConnection *connection, const char *target, const char *obj, const gchar * iface, const char *name,
- void (*callback)(const char *name, const char *value, void *userdata), void *userdata, DBusPendingCall **pending,
- int timeout)
+pcmk_dbus_get_property(DBusConnection *connection, const char *target,
+ const char *obj, const gchar * iface, const char *name,
+ void (*callback)(const char *name, const char *value, void *userdata),
+ void *userdata, DBusPendingCall **pending, int timeout)
{
DBusMessage *msg;
const char *method = "GetAll";
char *output = NULL;
-
struct db_getall_data *query_data = NULL;
- /* char *state = pcmk_dbus_get_property(systemd_proxy, BUS_NAME, unit, BUS_NAME ".Unit", "ActiveState"); */
-
crm_debug("Calling: %s on %s", method, target);
msg = dbus_message_new_method_call(target, // target for the method call
obj, // object to call on
BUS_PROPERTY_IFACE, // interface to call on
method); // method name
-
if (NULL == msg) {
crm_err("Call to %s failed: No message", method);
return NULL;
@@ -404,7 +420,10 @@ pcmk_dbus_get_property(
return output;
}
-static void pcmk_dbus_connection_dispatch(DBusConnection *connection, DBusDispatchStatus new_status, void *data){
+static void
+pcmk_dbus_connection_dispatch(DBusConnection *connection,
+ DBusDispatchStatus new_status, void *data)
+{
crm_trace("status %d for %p", new_status, data);
if (new_status == DBUS_DISPATCH_DATA_REMAINS){
dbus_connection_dispatch(connection);
@@ -418,20 +437,20 @@ static void pcmk_dbus_connection_dispatch(DBusConnection *connection, DBusDispat
/* Copied from dbus-watch.c */
static const char*
-dbus_watch_flags_to_string (int flags)
+dbus_watch_flags_to_string(int flags)
{
- const char *watch_type;
-
- if ((flags & DBUS_WATCH_READABLE) &&
- (flags & DBUS_WATCH_WRITABLE))
- watch_type = "readwrite";
- else if (flags & DBUS_WATCH_READABLE)
- watch_type = "read";
- else if (flags & DBUS_WATCH_WRITABLE)
- watch_type = "write";
- else
- watch_type = "not read or write";
- return watch_type;
+ const char *watch_type;
+
+ if ((flags & DBUS_WATCH_READABLE) && (flags & DBUS_WATCH_WRITABLE)) {
+ watch_type = "readwrite";
+ } else if (flags & DBUS_WATCH_READABLE) {
+ watch_type = "read";
+ } else if (flags & DBUS_WATCH_WRITABLE) {
+ watch_type = "write";
+ } else {
+ watch_type = "not read or write";
+ }
+ return watch_type;
}
static int
@@ -456,11 +475,13 @@ pcmk_dbus_watch_dispatch(gpointer userdata)
if(flags != dbus_watch_get_flags(watch)) {
flags = dbus_watch_get_flags(watch);
- crm_trace("Dispatched client %p: %s (%d)", client, dbus_watch_flags_to_string(flags), flags);
+ crm_trace("Dispatched client %p: %s (%d)", client,
+ dbus_watch_flags_to_string(flags), flags);
}
if(oom) {
- crm_err("DBus encountered OOM while attempting to dispatch %p (%s)", client, dbus_watch_flags_to_string(flags));
+ crm_err("DBus encountered OOM while attempting to dispatch %p (%s)",
+ client, dbus_watch_flags_to_string(flags));
}
return 0;
}
@@ -479,7 +500,8 @@ struct mainloop_fd_callbacks pcmk_dbus_cb = {
};
static dbus_bool_t
-pcmk_dbus_watch_add(DBusWatch *watch, void *data){
+pcmk_dbus_watch_add(DBusWatch *watch, void *data)
+{
int fd = dbus_watch_get_unix_fd(watch);
mainloop_io_t *client = mainloop_add_fd(
@@ -494,12 +516,14 @@ static void
pcmk_dbus_watch_toggle(DBusWatch *watch, void *data)
{
mainloop_io_t *client = dbus_watch_get_data(watch);
- crm_notice("DBus client %p is now %s", client, dbus_watch_get_enabled(watch)?"enabled":"disabled");
+ crm_notice("DBus client %p is now %s",
+ client, (dbus_watch_get_enabled(watch)? "enabled" : "disabled"));
}
static void
-pcmk_dbus_watch_remove(DBusWatch *watch, void *data){
+pcmk_dbus_watch_remove(DBusWatch *watch, void *data)
+{
mainloop_io_t *client = dbus_watch_get_data(watch);
crm_trace("Removed client %p (%p)", client, data);
@@ -515,8 +539,10 @@ pcmk_dbus_timeout_dispatch(gpointer data)
}
static dbus_bool_t
-pcmk_dbus_timeout_add(DBusTimeout *timeout, void *data){
- guint id = g_timeout_add(dbus_timeout_get_interval(timeout), pcmk_dbus_timeout_dispatch, timeout);
+pcmk_dbus_timeout_add(DBusTimeout *timeout, void *data)
+{
+ guint id = g_timeout_add(dbus_timeout_get_interval(timeout),
+ pcmk_dbus_timeout_dispatch, timeout);
crm_trace("Adding timeout %p (%d)", timeout, dbus_timeout_get_interval(timeout));
@@ -527,7 +553,8 @@ pcmk_dbus_timeout_add(DBusTimeout *timeout, void *data){
}
static void
-pcmk_dbus_timeout_remove(DBusTimeout *timeout, void *data){
+pcmk_dbus_timeout_remove(DBusTimeout *timeout, void *data)
+{
void *vid = dbus_timeout_get_data(timeout);
guint id = GPOINTER_TO_UINT(vid);
@@ -540,7 +567,8 @@ pcmk_dbus_timeout_remove(DBusTimeout *timeout, void *data){
}
static void
-pcmk_dbus_timeout_toggle(DBusTimeout *timeout, void *data){
+pcmk_dbus_timeout_toggle(DBusTimeout *timeout, void *data)
+{
bool enabled = dbus_timeout_get_enabled(timeout);
crm_trace("Toggling timeout for %p to %s", timeout, enabled?"off":"on");
@@ -554,12 +582,16 @@ pcmk_dbus_timeout_toggle(DBusTimeout *timeout, void *data){
/* Inspired by http://www.kolej.mff.cuni.cz/~vesej3am/devel/dbus-select.c */
-void pcmk_dbus_connection_setup_with_select(DBusConnection *c){
- dbus_connection_set_exit_on_disconnect (c, FALSE);
- dbus_connection_set_timeout_functions(
- c, pcmk_dbus_timeout_add, pcmk_dbus_timeout_remove, pcmk_dbus_timeout_toggle, NULL, NULL);
- dbus_connection_set_watch_functions(c, pcmk_dbus_watch_add, pcmk_dbus_watch_remove, pcmk_dbus_watch_toggle, NULL, NULL);
- dbus_connection_set_dispatch_status_function(c, pcmk_dbus_connection_dispatch, NULL, NULL);
-
- pcmk_dbus_connection_dispatch(c, dbus_connection_get_dispatch_status(c), NULL);
+void
+pcmk_dbus_connection_setup_with_select(DBusConnection *c)
+{
+ dbus_connection_set_exit_on_disconnect(c, FALSE);
+ dbus_connection_set_timeout_functions(c, pcmk_dbus_timeout_add,
+ pcmk_dbus_timeout_remove,
+ pcmk_dbus_timeout_toggle, NULL, NULL);
+ dbus_connection_set_watch_functions(c, pcmk_dbus_watch_add,
+ pcmk_dbus_watch_remove,
+ pcmk_dbus_watch_toggle, NULL, NULL);
+ dbus_connection_set_dispatch_status_function(c, pcmk_dbus_connection_dispatch, NULL, NULL);
+ pcmk_dbus_connection_dispatch(c, dbus_connection_get_dispatch_status(c), NULL);
}