diff options
Diffstat (limited to 'src/browser-service/channel-proxy.c')
-rw-r--r-- | src/browser-service/channel-proxy.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/browser-service/channel-proxy.c b/src/browser-service/channel-proxy.c new file mode 100644 index 0000000..3ff9fac --- /dev/null +++ b/src/browser-service/channel-proxy.c @@ -0,0 +1,88 @@ +#include "config.h" +#include "channel-proxy.h" +#include "marshallers.h" + +struct _GruschlerChannelProxy +{ + DBusGProxy parent; +}; + +struct _GruschlerChannelProxyClass +{ + DBusGProxyClass parent_class; +}; + +G_DEFINE_TYPE (GruschlerChannelProxy, + gruschler_channel_proxy, + DBUS_TYPE_G_PROXY); + +static void +gruschler_channel_proxy_init (GruschlerChannelProxy *proxy) +{ +} + +static void +gruschler_channel_proxy_constructed (GObject *object) +{ + GObjectClass *parent_class; + DBusGProxy *proxy; + + parent_class = G_OBJECT_CLASS (gruschler_channel_proxy_parent_class); + + if (parent_class->constructed) + parent_class->constructed (object); + + proxy = DBUS_G_PROXY (object); + + dbus_g_proxy_add_signal (proxy, "RequestStarted", + G_TYPE_STRING, G_TYPE_INVALID); + dbus_g_proxy_add_signal (proxy, "RequestStopped", + G_TYPE_STRING, G_TYPE_UINT, G_TYPE_INVALID); + dbus_g_proxy_add_signal (proxy, "DataAvailable", + G_TYPE_STRING, DBUS_TYPE_G_UCHAR_ARRAY, + G_TYPE_INVALID); +} + +static void +gruschler_channel_proxy_class_init (GruschlerChannelProxyClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + + object_class->constructed = gruschler_channel_proxy_constructed; + + dbus_g_object_register_marshaller (gruschler_cclosure_marshal_VOID__STRING_UINT, + G_TYPE_NONE, G_TYPE_STRING, G_TYPE_UINT, + G_TYPE_INVALID); + dbus_g_object_register_marshaller (gruschler_cclosure_marshal_VOID__STRING_BOXED, + G_TYPE_NONE, G_TYPE_STRING, DBUS_TYPE_G_UCHAR_ARRAY, + G_TYPE_INVALID); +} + +DBusGProxy * +gruschler_channel_proxy_new (DBusGProxy *browser_service, + const char *object_path) +{ + DBusGConnection *connection; + + g_return_val_if_fail (DBUS_IS_G_PROXY (browser_service), NULL); + g_return_val_if_fail (NULL != object_path, NULL); + + g_object_get (browser_service, "connection", &connection, NULL); + + return g_object_new (GRUSCHLER_TYPE_CHANNEL_PROXY, + "connection", connection, "path", object_path, + "name", dbus_g_proxy_get_bus_name (browser_service), + "interface", GRUSCHLER_CHANNEL_PROXY_DBUS_INTERFACE, + NULL); +} + +gboolean +gruschler_channel_proxy_open (DBusGProxy *channel, + GError **error) +{ + g_return_val_if_fail (GRUSCHLER_IS_CHANNEL_PROXY (channel), FALSE); + + return dbus_g_proxy_call (channel, "Open", error, + G_TYPE_INVALID, G_TYPE_INVALID); +} + |