[rygel-grilo] Add ms2_client_new() function
- From: Juan A. Suarez Romero <jasuarez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel-grilo] Add ms2_client_new() function
- Date: Tue, 13 Apr 2010 09:33:47 +0000 (UTC)
commit aef93829e4e9206dd2350fad08786f2e92616c53
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date: Mon Apr 12 16:05:25 2010 +0200
Add ms2_client_new() function
lib/media-server2-client.c | 38 +++++++++++++++++++++++++++++++++++---
lib/media-server2-server.c | 12 +++++++-----
src/test-client.c | 8 ++++++++
3 files changed, 50 insertions(+), 8 deletions(-)
---
diff --git a/lib/media-server2-client.c b/lib/media-server2-client.c
index f0ed037..a2323b1 100644
--- a/lib/media-server2-client.c
+++ b/lib/media-server2-client.c
@@ -27,6 +27,10 @@
#include "media-server2-client-glue.h"
#include "media-server2-client.h"
+#define MS2_DBUS_SERVICE_PREFIX "org.gnome.UPnP.MediaServer2."
+#define MS2_DBUS_OBJECT "/org/gnome/UPnP/MediaServer2"
+#define MS2_DBUS_IFACE "org.gnome.UPnP.MediaServer2"
+
#define ENTRY_POINT_IFACE "/org/gnome/UPnP/MediaServer2/"
#define ENTRY_POINT_NAME "org.gnome.UPnP.MediaServer2."
@@ -37,7 +41,7 @@
G_TYPE_INSTANCE_GET_PRIVATE((o), MS2_TYPE_CLIENT, MS2ClientPrivate)
struct _MS2ClientPrivate {
- gpointer *reserved;
+ DBusGProxy *proxy_provider;
};
G_DEFINE_TYPE (MS2Client, ms2_client, G_TYPE_OBJECT);
@@ -66,7 +70,7 @@ ms2_client_get_providers ()
gchar **list_providers;
gchar **p;
gint i;
- gint prefix_size = strlen (ENTRY_POINT_NAME);
+ gint prefix_size = strlen (MS2_DBUS_SERVICE_PREFIX);
connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
if (!connection) {
@@ -95,7 +99,7 @@ ms2_client_get_providers ()
providers = g_ptr_array_new ();
for (p = dbus_names; *p; p++) {
- if (g_str_has_prefix (*p, ENTRY_POINT_NAME)) {
+ if (g_str_has_prefix (*p, MS2_DBUS_SERVICE_PREFIX)) {
g_ptr_array_add (providers, *p);
}
}
@@ -116,9 +120,37 @@ ms2_client_get_providers ()
MS2Client *ms2_client_new (const gchar *provider)
{
+ DBusGConnection *connection;
+ DBusGProxy *gproxy;
+ GError *error = NULL;
MS2Client *client;
+ gchar *dbus_provider;
+
+ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+ if (!connection) {
+ g_printerr ("Could not connect to session bus, %s\n", error->message);
+ g_clear_error (&error);
+ return NULL;
+ }
+
+ dbus_provider = g_strconcat (MS2_DBUS_SERVICE_PREFIX, provider, NULL);
+
+ gproxy = dbus_g_proxy_new_for_name_owner (connection,
+ dbus_provider,
+ MS2_DBUS_OBJECT,
+ MS2_DBUS_IFACE,
+ &error);
+
+ if (!gproxy) {
+ g_printerr ("Could not connect to %s provider, %s\n",
+ provider,
+ error->message);
+ g_clear_error (&error);
+ return NULL;
+ }
client = g_object_new (MS2_TYPE_CLIENT, NULL);
+ client->priv->proxy_provider = gproxy;
return client;
}
diff --git a/lib/media-server2-server.c b/lib/media-server2-server.c
index 0d21006..43cde74 100644
--- a/lib/media-server2-server.c
+++ b/lib/media-server2-server.c
@@ -28,8 +28,8 @@
#include "media-server2-server-glue.h"
#include "media-server2-server.h"
-#define ENTRY_POINT_IFACE "/org/gnome/UPnP/MediaServer2/"
-#define ENTRY_POINT_NAME "org.gnome.UPnP.MediaServer2."
+#define MS2_DBUS_SERVICE_PREFIX "org.gnome.UPnP.MediaServer2."
+#define MS2_DBUS_PATH_PREFIX "/org/gnome/UPnP/MediaServer2/"
#define DBUS_TYPE_G_ARRAY_OF_STRING \
(dbus_g_type_get_collection ("GPtrArray", G_TYPE_STRING))
@@ -76,19 +76,21 @@ ms2_server_dbus_register (MS2Server *server,
DBUS_INTERFACE_DBUS);
/* Request name */
- dbus_name = g_strconcat (ENTRY_POINT_NAME, name, NULL);
+ dbus_name = g_strconcat (MS2_DBUS_SERVICE_PREFIX, name, NULL);
if (!org_freedesktop_DBus_request_name (gproxy,
dbus_name,
DBUS_NAME_FLAG_DO_NOT_QUEUE,
&request_name_result,
NULL)) {
- return FALSE;
+ g_free (dbus_name);
+ return FALSE;
}
g_free (dbus_name);
g_object_unref (gproxy);
+ dbus_path = g_strconcat (MS2_DBUS_PATH_PREFIX, name, NULL);
+
/* Register object */
- dbus_path = g_strconcat (ENTRY_POINT_IFACE, name, NULL);
dbus_g_connection_register_g_object (connection,
dbus_path,
G_OBJECT (server));
diff --git a/src/test-client.c b/src/test-client.c
index 5ce1dd3..bf5484f 100644
--- a/src/test-client.c
+++ b/src/test-client.c
@@ -1,11 +1,19 @@
#include <media-server2-client.h>
#include <glib.h>
+#include <string.h>
int main (int argc, char **argv)
{
gchar **providers;
+ MS2Client *client;
g_type_init ();
providers = ms2_client_get_providers ();
+ if (!providers) {
+ g_print ("There is no MediaServer2 provider\n");
+ return 0;
+ }
+
+ client = ms2_client_new (providers[0]);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]