]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Add org.freedesktop.DBus.Verbose interface to dbus-daemon when compiled with DBUS_ENA...
authorRalf Habacker <ralf.habacker@freenet.de>
Sun, 1 Feb 2015 13:52:27 +0000 (14:52 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Fri, 13 Feb 2015 10:20:21 +0000 (11:20 +0100)
This interface contains methods 'EnableVerbose' and 'DisableVerbose'
to control verbose mode on daemon runtime.

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=88896
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
bus/driver.c
dbus/dbus-internals.c
dbus/dbus-internals.h
dbus/dbus-shared.h

index e82602bcfab3fc7f362fd21b5a64a19004b72cfc..603504f658d2dcdfaa20c145acd452974a9d1297 100644 (file)
@@ -1770,6 +1770,72 @@ bus_driver_handle_reload_config (DBusConnection *connection,
   return FALSE;
 }
 
+#ifdef DBUS_ENABLE_VERBOSE_MODE
+static dbus_bool_t
+bus_driver_handle_enable_verbose (DBusConnection *connection,
+                                  BusTransaction *transaction,
+                                  DBusMessage    *message,
+                                  DBusError      *error)
+{
+    DBusMessage *reply = NULL;
+
+    _DBUS_ASSERT_ERROR_IS_CLEAR (error);
+
+    reply = dbus_message_new_method_return (message);
+    if (reply == NULL)
+      goto oom;
+
+    if (! bus_transaction_send_from_driver (transaction, connection, reply))
+      goto oom;
+
+    _dbus_set_verbose(TRUE);
+
+    dbus_message_unref (reply);
+    return TRUE;
+
+   oom:
+    _DBUS_ASSERT_ERROR_IS_CLEAR (error);
+
+    BUS_SET_OOM (error);
+
+    if (reply)
+      dbus_message_unref (reply);
+    return FALSE;
+}
+
+static dbus_bool_t
+bus_driver_handle_disable_verbose (DBusConnection *connection,
+                                   BusTransaction *transaction,
+                                   DBusMessage    *message,
+                                   DBusError      *error)
+{
+    DBusMessage *reply = NULL;
+
+    _DBUS_ASSERT_ERROR_IS_CLEAR (error);
+
+    reply = dbus_message_new_method_return (message);
+    if (reply == NULL)
+      goto oom;
+
+    if (! bus_transaction_send_from_driver (transaction, connection, reply))
+      goto oom;
+
+    _dbus_set_verbose(FALSE);
+
+    dbus_message_unref (reply);
+    return TRUE;
+
+   oom:
+    _DBUS_ASSERT_ERROR_IS_CLEAR (error);
+
+    BUS_SET_OOM (error);
+
+    if (reply)
+      dbus_message_unref (reply);
+    return FALSE;
+}
+#endif
+
 static dbus_bool_t
 bus_driver_handle_get_id (DBusConnection *connection,
                           BusTransaction *transaction,
@@ -2042,6 +2108,14 @@ static const MessageHandler monitoring_message_handlers[] = {
   { NULL, NULL, NULL, NULL }
 };
 
+#ifdef DBUS_ENABLE_VERBOSE_MODE
+static const MessageHandler verbose_message_handlers[] = {
+  { "EnableVerbose", "", "", bus_driver_handle_enable_verbose},
+  { "DisableVerbose", "", "", bus_driver_handle_disable_verbose},
+  { NULL, NULL, NULL, NULL }
+};
+#endif
+
 #ifdef DBUS_ENABLE_STATS
 static const MessageHandler stats_message_handlers[] = {
   { "GetStats", "", "a{sv}", bus_stats_handle_get_stats },
@@ -2074,6 +2148,9 @@ static InterfaceHandler interface_handlers[] = {
     "    </signal>\n" },
   { DBUS_INTERFACE_INTROSPECTABLE, introspectable_message_handlers, NULL },
   { DBUS_INTERFACE_MONITORING, monitoring_message_handlers, NULL },
+#ifdef DBUS_ENABLE_VERBOSE_MODE
+  { DBUS_INTERFACE_VERBOSE, verbose_message_handlers, NULL },
+#endif
 #ifdef DBUS_ENABLE_STATS
   { BUS_INTERFACE_STATS, stats_message_handlers, NULL },
 #endif
index 575a0875c89d6f8ec51274c1d2e362c23d1d7d17..92a108c85014e2fa857fba1695f14874d7ccb5e7 100644 (file)
@@ -363,6 +363,16 @@ _dbus_is_verbose_real (void)
   return verbose;
 }
 
+void _dbus_set_verbose (dbus_bool_t state)
+{
+    verbose = state;
+}
+
+dbus_bool_t _dbus_get_verbose (void)
+{
+    return verbose;
+}
+
 /**
  * Prints a warning message to stderr
  * if the user has enabled verbose mode.
index 6b487f5d38539891f08c13fe30cbe582ced77205..8dea10f117827819815060631f9e3bfd52567ad5 100644 (file)
@@ -99,6 +99,8 @@ void _dbus_verbose_real       (const char *format,
 #endif
 void _dbus_verbose_reset_real (void);
 dbus_bool_t _dbus_is_verbose_real (void);
+dbus_bool_t _dbus_get_verbose (void);
+void _dbus_set_verbose (dbus_bool_t state);
 
 #  define _dbus_verbose_reset _dbus_verbose_reset_real
 #  define _dbus_is_verbose _dbus_is_verbose_real
index 51c3da8fad2cfc2fdaee4f4e39af622f80e20093..7ab91035eae7077df1241d14713869ed170369f8 100644 (file)
@@ -89,6 +89,8 @@ typedef enum
 /** The monitoring interface exported by the dbus-daemon */
 #define DBUS_INTERFACE_MONITORING     "org.freedesktop.DBus.Monitoring"
 
+/** The verbose interface exported by the dbus-daemon */
+#define DBUS_INTERFACE_VERBOSE        "org.freedesktop.DBus.Verbose"
 /** The interface supported by introspectable objects */
 #define DBUS_INTERFACE_INTROSPECTABLE "org.freedesktop.DBus.Introspectable"
 /** The interface supported by objects with properties */