4
* Authors: Rodrigo Moya <rodrigo.moya@canonical.com>
6
* Copyright 2010 Canonical Ltd.
8
* This program is free software: you can redistribute it and/or modify it
9
* under the terms of the GNU General Public License version 3, as published
10
* by the Free Software Foundation.
12
* This program is distributed in the hope that it will be useful, but
13
* WITHOUT ANY WARRANTY; without even the implied warranties of
14
* MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
15
* PURPOSE. See the GNU General Public License for more details.
17
* You should have received a copy of the GNU General Public License along
18
* with this program. If not, see <http://www.gnu.org/licenses/>.
25
#include <dbus/dbus-glib.h>
27
#include "syncdaemon-events-interface.h"
29
G_DEFINE_TYPE(SyncdaemonEventsInterface, syncdaemon_events_interface, SYNCDAEMON_TYPE_INTERFACE)
31
struct _SyncdaemonEventsInterfacePrivate {
36
syncdaemon_events_interface_finalize (GObject *object)
38
SyncdaemonEventsInterface *interface = SYNCDAEMON_EVENTS_INTERFACE (object);
40
if (interface->priv != NULL) {
41
if (interface->priv->proxy != NULL)
42
g_object_unref (interface->priv->proxy);
44
g_free (interface->priv);
47
G_OBJECT_CLASS (syncdaemon_events_interface_parent_class)->finalize (object);
51
syncdaemon_events_interface_class_init (SyncdaemonEventsInterfaceClass *klass)
53
GObjectClass *object_class = G_OBJECT_CLASS (klass);
55
object_class->finalize = syncdaemon_events_interface_finalize;
59
event_cb (DBusGProxy *proxy, GHashTable *event_dict, gpointer user_data)
61
SyncdaemonDaemon *daemon = NULL;
62
SyncdaemonEventsInterface *interface = SYNCDAEMON_EVENTS_INTERFACE (user_data);
64
g_object_get (G_OBJECT (interface), "daemon", &daemon, NULL);
66
g_signal_emit_by_name (daemon, "event", event_dict);
70
syncdaemon_events_interface_init (SyncdaemonEventsInterface *interface)
72
interface->priv = g_new0 (SyncdaemonEventsInterfacePrivate, 1);
74
/* Setup DBus proxy */
75
interface->priv->proxy = syncdaemon_interface_setup_proxy (SYNCDAEMON_INTERFACE (interface),
76
"com.ubuntuone.Syncdaemon",
77
"/events", "com.ubuntuone.Syncdaemon.Events");
78
if (interface->priv->proxy != NULL) {
79
dbus_g_proxy_add_signal (DBUS_G_PROXY (interface->priv->proxy), "Event",
80
dbus_g_type_get_map ("GHashTable",
84
dbus_g_proxy_connect_signal (DBUS_G_PROXY (interface->priv->proxy), "Event",
85
G_CALLBACK (event_cb), interface, NULL);
90
* syncdaemon_events_interface_new:
92
SyncdaemonEventsInterface *
93
syncdaemon_events_interface_new (SyncdaemonDaemon *daemon)
95
g_return_val_if_fail (SYNCDAEMON_IS_DAEMON (daemon), NULL);
97
return g_object_new (SYNCDAEMON_TYPE_EVENTS_INTERFACE, "daemon", daemon, NULL);
101
* syncdaemon_events_interface_push_event:
104
syncdaemon_events_interface_push_event (SyncdaemonEventsInterface *interface,
105
const gchar *event_name,
108
GError *error = NULL;
110
g_return_if_fail (SYNCDAEMON_IS_EVENTS_INTERFACE (interface));
112
if (!dbus_g_proxy_call (DBUS_G_PROXY (interface->priv->proxy), "push_event", &error,
114
G_TYPE_STRING, event_name,
117
g_warning ("Failled calling push_event: %s", error->message);
118
g_error_free (error->message);