diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2007-10-24 21:19:22 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2007-11-06 01:27:20 +0100 |
commit | 0cbebb2414160c7d187b1f3e5a00f430cc83bf7b (patch) | |
tree | b89338248ca3ca908b38fbbad57dc5ee0c84ebad /dispatcher | |
parent | a90cf00bb52e078f8055422f5d97e66a7629cb1a (diff) |
refactor message dispatching
Separate dispatch_platform_message() from dispatch_stb_message(), also just dispatch messages to the introspectable interface
Diffstat (limited to 'dispatcher')
-rw-r--r-- | dispatcher/dispatcher.c | 59 |
1 files changed, 35 insertions, 24 deletions
diff --git a/dispatcher/dispatcher.c b/dispatcher/dispatcher.c index f9f2a38..c0863d2 100644 --- a/dispatcher/dispatcher.c +++ b/dispatcher/dispatcher.c @@ -283,28 +283,6 @@ dispatch_stb_message (StbDispatcher *dispatcher, gchar *destination; priv = STB_DISPATCHER_GET_PRIVATE (dispatcher); - - if (dbus_message_has_interface (message, DBUS_INTERFACE_STB_PLATFORM)) - { - if (dbus_message_has_member (message, "getPlatform") && priv->platform) - { - DBusMessage *reply; - DBusMessageIter iter; - - /* create a reply with the stored platform */ - reply = dbus_message_new_method_return (message); - dbus_message_iter_init_append (reply, &iter); - dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &priv->platform); - - dbus_connection_send (priv->connection, reply, NULL); - dbus_message_unref (reply); - - return; - } - else if (dbus_message_has_member (message, "setPlatform")) - priv->platform = retrieve_platform (message); - } - destination = get_destination (message); /* there's something wrong with the message */ @@ -351,6 +329,38 @@ return_error (StbDispatcher *dispatcher, dbus_message_unref (reply); } +static void +dispatch_platform_message (StbDispatcher *dispatcher, + DBusMessage *message) +{ + StbDispatcherPrivate *priv; + + priv = dispatcher->_priv; + + if (!dbus_message_has_interface (message, DBUS_INTERFACE_STB_PLATFORM)) + return; + + if (dbus_message_has_member (message, "getPlatform") && priv->platform) + { + DBusMessage *reply; + DBusMessageIter iter; + + /* create a reply with the stored platform */ + reply = dbus_message_new_method_return (message); + dbus_message_iter_init_append (reply, &iter); + dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &priv->platform); + + dbus_connection_send (priv->connection, reply, NULL); + dbus_message_unref (reply); + + return; + } + else if (dbus_message_has_member (message, "setPlatform")) + priv->platform = retrieve_platform (message); + + dispatch_stb_message (dispatcher, message); +} + static DBusHandlerResult dispatcher_filter_func (DBusConnection *connection, DBusMessage *message, @@ -366,9 +376,10 @@ dispatcher_filter_func (DBusConnection *connection, { /* FIXME: handle NameOwnerChanged */ } - else if (dbus_message_has_interface (message, DBUS_INTERFACE_INTROSPECTABLE) || - dbus_message_has_interface (message, DBUS_INTERFACE_STB_PLATFORM)) + else if (dbus_message_has_interface (message, DBUS_INTERFACE_INTROSPECTABLE)) dispatch_stb_message (dispatcher, message); + else if (dbus_message_has_interface (message, DBUS_INTERFACE_STB_PLATFORM)) + dispatch_platform_message (dispatcher, message); else if (dbus_message_has_interface (message, DBUS_INTERFACE_STB)) { if (can_caller_do_action (dispatcher, message)) |