summaryrefslogtreecommitdiff
path: root/dispatcher
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2007-12-08 22:00:08 +0100
committerCarlos Garnacho <carlosg@gnome.org>2007-12-08 22:00:08 +0100
commitd8e81e11f9ee784cedce32e8370c030820baf982 (patch)
treea59370f70bc73efc9014192adc43c14655de3c47 /dispatcher
parent95625b21c44453d805c3f0bfe2443e37c306bbf6 (diff)
Add logging to the dispatcher.
* dispatcher/dispatcher.[ch] (stb_dispatcher_[gs]et_debug): Added. Added some debug messages to the message dispatching flux. * dispatcher/main.c: turn debugging on when -d is passed.
Diffstat (limited to 'dispatcher')
-rw-r--r--dispatcher/dispatcher.c97
-rw-r--r--dispatcher/dispatcher.h5
-rw-r--r--dispatcher/main.c3
3 files changed, 103 insertions, 2 deletions
diff --git a/dispatcher/dispatcher.c b/dispatcher/dispatcher.c
index 6fa2c2e..5439c25 100644
--- a/dispatcher/dispatcher.c
+++ b/dispatcher/dispatcher.c
@@ -44,6 +44,17 @@
#define STB_DISPATCHER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), STB_TYPE_DISPATCHER, StbDispatcherPrivate))
+#define DEBUG(d,m...) \
+if (G_UNLIKELY (((StbDispatcherPrivate *) d->_priv)->debug)) \
+ { \
+ g_debug (m); \
+ }
+
+enum {
+ PROP_0,
+ PROP_DEBUG
+};
+
typedef struct StbDispatcherPrivate StbDispatcherPrivate;
typedef struct StbDispatcherAsyncData StbDispatcherAsyncData;
@@ -59,6 +70,8 @@ struct StbDispatcherPrivate
#ifdef HAVE_POLKIT
PolKitContext *polkit_context;
#endif
+
+ guint debug : 1;
};
struct StbDispatcherAsyncData
@@ -76,6 +89,15 @@ static GObject* stb_dispatcher_constructor (GType type,
guint n_construct_properties,
GObjectConstructParam *construct_params);
+static void stb_dispatcher_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void stb_dispatcher_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec);
+
G_DEFINE_TYPE (StbDispatcher, stb_dispatcher, G_TYPE_OBJECT);
@@ -85,8 +107,15 @@ stb_dispatcher_class_init (StbDispatcherClass *class)
GObjectClass *object_class = G_OBJECT_CLASS (class);
object_class->constructor = stb_dispatcher_constructor;
- object_class->finalize = stb_dispatcher_finalize;
-
+ object_class->set_property = stb_dispatcher_set_property;
+ object_class->get_property = stb_dispatcher_get_property;
+ object_class->finalize = stb_dispatcher_finalize;
+
+ g_object_class_install_property (object_class,
+ PROP_DEBUG,
+ g_param_spec_boolean ("debug", "", "",
+ FALSE,
+ G_PARAM_READWRITE));
g_type_class_add_private (object_class,
sizeof (StbDispatcherPrivate));
}
@@ -186,6 +215,8 @@ dispatch_reply (DBusPendingCall *pending_call,
async_data = (StbDispatcherAsyncData *) data;
priv = async_data->dispatcher->_priv;
+ DEBUG (async_data->dispatcher, "sending reply from: %s", dbus_message_get_path (reply));
+
/* get the platform if necessary */
if (dbus_message_has_interface (reply, DBUS_INTERFACE_STB_PLATFORM) &&
dbus_message_has_member (reply, "getPlatform") && !priv->platform)
@@ -301,6 +332,8 @@ dispatch_stb_message (StbDispatcher *dispatcher,
return;
}
+ DEBUG (dispatcher, "dispatching message to: %s", dbus_message_get_path (message));
+
copy = dbus_message_copy (message);
/* forward the message to the corresponding service */
@@ -332,6 +365,8 @@ return_error (StbDispatcher *dispatcher,
priv = STB_DISPATCHER_GET_PRIVATE (dispatcher);
+ DEBUG (dispatcher, "sending error %s from: %s", error_name, dbus_message_get_path (message));
+
reply = dbus_message_new_error (message, error_name,
"No permissions to perform the task.");
dbus_connection_send (priv->connection, reply, NULL);
@@ -532,6 +567,40 @@ stb_dispatcher_init (StbDispatcher *dispatcher)
}
static void
+stb_dispatcher_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_DEBUG:
+ stb_dispatcher_set_debug (STB_DISPATCHER (object),
+ g_value_get_boolean (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
+stb_dispatcher_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id)
+ {
+ case PROP_DEBUG:
+ g_value_set_boolean (value,
+ stb_dispatcher_get_debug (STB_DISPATCHER (object)));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
+static void
stb_dispatcher_finalize (GObject *object)
{
StbDispatcherPrivate *priv;
@@ -579,3 +648,27 @@ stb_dispatcher_get (void)
{
return g_object_new (STB_TYPE_DISPATCHER, NULL);
}
+
+void
+stb_dispatcher_set_debug (StbDispatcher *dispatcher,
+ gboolean debug)
+{
+ StbDispatcherPrivate *priv;
+
+ g_return_if_fail (STB_IS_DISPATCHER (dispatcher));
+
+ priv = STB_DISPATCHER_GET_PRIVATE (dispatcher);
+ priv->debug = debug;
+ g_object_notify (G_OBJECT (dispatcher), "debug");
+}
+
+gboolean
+stb_dispatcher_get_debug (StbDispatcher *dispatcher)
+{
+ StbDispatcherPrivate *priv;
+
+ g_return_val_if_fail (STB_IS_DISPATCHER (dispatcher), FALSE);
+
+ priv = STB_DISPATCHER_GET_PRIVATE (dispatcher);
+ return priv->debug;
+}
diff --git a/dispatcher/dispatcher.h b/dispatcher/dispatcher.h
index 063e64b..3ecae82 100644
--- a/dispatcher/dispatcher.h
+++ b/dispatcher/dispatcher.h
@@ -52,6 +52,11 @@ GType stb_dispatcher_get_type (void);
StbDispatcher *stb_dispatcher_get (void);
+void stb_dispatcher_set_debug (StbDispatcher *dispatcher,
+ gboolean debug);
+gboolean stb_dispatcher_get_debug (StbDispatcher *dispatcher);
+
+
G_END_DECLS
#endif /* __STB_DISPATCHER_H */
diff --git a/dispatcher/main.c b/dispatcher/main.c
index c2861fe..8088bd0 100644
--- a/dispatcher/main.c
+++ b/dispatcher/main.c
@@ -103,6 +103,9 @@ main (int argc, char *argv[])
signal (SIGTERM, signal_received);
dispatcher = stb_dispatcher_get ();
+ if (G_UNLIKELY (debug))
+ stb_dispatcher_set_debug (dispatcher, TRUE);
+
main_loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (main_loop);