[maemo-commits] [maemo-commits] r15997 - in projects/haf/branches/hildon-thumbnail/daemonize: . tests

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Sep 3 18:33:01 EEST 2008
Author: pvanhoof
Date: 2008-09-03 18:32:59 +0300 (Wed, 03 Sep 2008)
New Revision: 15997

Added:
   projects/haf/branches/hildon-thumbnail/daemonize/tests/daemon.c
   projects/haf/branches/hildon-thumbnail/daemonize/tests/daemon.xml
Modified:
   projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog
   projects/haf/branches/hildon-thumbnail/daemonize/configure.ac
   projects/haf/branches/hildon-thumbnail/daemonize/tests/
   projects/haf/branches/hildon-thumbnail/daemonize/tests/Makefile.am
Log:
2008-09-03  Philip Van Hoof  <philip at codeminded.be>

        tests/daemon.xml
        tests/daemon.c
        tests/Makefile.am
        configure.ac: Made a little external plugin test



Modified: projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog	2008-09-03 14:36:35 UTC (rev 15996)
+++ projects/haf/branches/hildon-thumbnail/daemonize/ChangeLog	2008-09-03 15:32:59 UTC (rev 15997)
@@ -1,5 +1,12 @@
 2008-09-03  Philip Van Hoof  <philip at codeminded.be>
 
+	tests/daemon.xml
+	tests/daemon.c
+	tests/Makefile.am
+	configure.ac: Made a little external plugin test
+
+2008-09-03  Philip Van Hoof  <philip at codeminded.be>
+
 	* configure.ac
 	* config.h.in: Made GIO required
 

Modified: projects/haf/branches/hildon-thumbnail/daemonize/configure.ac
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/configure.ac	2008-09-03 14:36:35 UTC (rev 15996)
+++ projects/haf/branches/hildon-thumbnail/daemonize/configure.ac	2008-09-03 15:32:59 UTC (rev 15997)
@@ -185,6 +185,7 @@
 # --- Output ---
 
 AC_OUTPUT(Makefile \
+	  tests/Makefile \
 	  daemon/Makefile \
 	  daemon/plugins/Makefile \
           thumbs/Makefile \


Property changes on: projects/haf/branches/hildon-thumbnail/daemonize/tests
___________________________________________________________________
Name: svn:ignore
   + Makefile.in
*-glue.h
hildon-thumbnail-tester
.libs
hildon-thumbnail-daemon-plugin-test
.deps
Makefile


Modified: projects/haf/branches/hildon-thumbnail/daemonize/tests/Makefile.am
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/tests/Makefile.am	2008-09-03 14:36:35 UTC (rev 15996)
+++ projects/haf/branches/hildon-thumbnail/daemonize/tests/Makefile.am	2008-09-03 15:32:59 UTC (rev 15997)
@@ -1,8 +1,21 @@
-INCLUDES = -I$(srcdir)/../thumbs -I$(srcdir)/.. $(PKG_CFLAGS)
+INCLUDES = -I$(srcdir)/../thumbs -I$(srcdir)/.. $(PKG_CFLAGS) \
+	$(DBUS_CFLAGS) $(GLIB_CFLAGS) $(GMODULE_CFLAGS) $(GIO_CFLAGS)
 
-bin_PROGRAMS = hildon-thumbnail-tester
+bin_PROGRAMS = hildon-thumbnail-tester hildon-thumbnail-daemon-plugin-test
 
+hildon_thumbnail_daemon_plugin_test_SOURCES = daemon.c daemon-glue.h
+hildon_thumbnail_daemon_plugin_test_LDADD = $(top_builddir)/thumbs/libhildonthumbnail.la
+	$(DBUS_LIBS) $(GLIB_LIBS) $(GMODULE_LIBS) $(GIO_LIBS)
+
 hildon_thumbnail_tester_SOURCES = tests.c
 hildon_thumbnail_tester_LDADD = $(top_builddir)/thumbs/libhildonthumbnail.la $(PKG_LIBS)
 
 EXTRA_DIST = $(wildcard $(srcdir)/images/*)
+
+
+%-glue.h: $(top_srcdir)/tests/%.xml
+	$(DBUSBINDINGTOOL) --mode=glib-server --output=$@ --prefix=$(subst -,_,$*) $^
+
+BUILT_SOURCES = daemon-glue.h
+
+EXTRA_DIST = $(BUILT_SOURCES) daemon.xml

Added: projects/haf/branches/hildon-thumbnail/daemonize/tests/daemon.c
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/tests/daemon.c	2008-09-03 14:36:35 UTC (rev 15996)
+++ projects/haf/branches/hildon-thumbnail/daemonize/tests/daemon.c	2008-09-03 15:32:59 UTC (rev 15997)
@@ -0,0 +1,200 @@
+#include <glib.h>
+#include <gio/gio.h>
+#include <dbus/dbus-glib-bindings.h>
+
+
+#define DAEMON_SERVICE      "org.freedesktop.thumbnailer"
+#define DAEMON_PATH         "/org/freedesktop/thumbnailer"
+#define DAEMON_INTERFACE    "org.freedesktop.thumbnailer"
+
+#define MANAGER_SERVICE      "org.freedesktop.thumbnailer.manager"
+#define MANAGER_PATH         "/org/freedesktop/thumbnailer/manager"
+#define MANAGER_INTERFACE    "org.freedesktop.thumbnailer.manager"
+
+#define TYPE_DAEMON             (daemon_get_type())
+#define DAEMON(o)               (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_DAEMON, Daemon))
+#define DAEMON_CLASS(c)         (G_TYPE_CHECK_CLASS_CAST ((c), TYPE_DAEMON, DaemonClass))
+#define DAEMON_GET_CLASS(o)     (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_DAEMON, DaemonClass))
+
+typedef struct Daemon Daemon;
+typedef struct DaemonClass DaemonClass;
+
+struct Daemon {
+	GObject parent;
+};
+
+struct DaemonClass {
+	GObjectClass parent;
+};
+
+typedef struct {
+	DBusGConnection *connection;
+} DaemonPrivate;
+
+enum {
+	PROP_0,
+	PROP_CONNECTION
+};
+
+G_DEFINE_TYPE (Daemon, daemon, G_TYPE_OBJECT)
+
+#define DAEMON_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), TYPE_DAEMON, DaemonPrivate))
+
+void 
+daemon_create (Daemon *object, GStrv uris, DBusGMethodInvocation *context)
+{
+}
+
+#include "daemon-glue.h"
+
+
+static void 
+daemon_set_connection (Daemon *object, DBusGConnection *connection)
+{
+	DaemonPrivate *priv = DAEMON_GET_PRIVATE (object);
+	priv->connection = connection;
+}
+
+
+static void
+daemon_set_property (GObject      *object,
+		      guint         prop_id,
+		      const GValue *value,
+		      GParamSpec   *pspec)
+{
+	switch (prop_id) {
+	case PROP_CONNECTION:
+		daemon_set_connection (DAEMON (object),
+				       g_value_get_pointer (value));
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+
+static void
+daemon_get_property (GObject    *object,
+		      guint       prop_id,
+		      GValue     *value,
+		      GParamSpec *pspec)
+{
+	DaemonPrivate *priv;
+
+	priv = DAEMON_GET_PRIVATE (object);
+
+	switch (prop_id) {
+	case PROP_CONNECTION:
+		g_value_set_pointer (value, priv->connection);
+		break;
+	default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+	}
+}
+
+static void
+daemon_finalize (GObject *object)
+{
+	G_OBJECT_CLASS (daemon_parent_class)->finalize (object);
+}
+
+static void
+daemon_class_init (DaemonClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+	object_class->finalize = daemon_finalize;
+	object_class->set_property = daemon_set_property;
+	object_class->get_property = daemon_get_property;
+
+	
+	g_object_class_install_property (object_class,
+					 PROP_CONNECTION,
+					 g_param_spec_pointer ("connection",
+							       "DBus connection",
+							       "DBus connection",
+							      G_PARAM_READWRITE |
+							      G_PARAM_CONSTRUCT));
+
+	g_type_class_add_private (object_class, sizeof (DaemonPrivate));
+}
+
+static void
+daemon_init (Daemon *object)
+{
+}
+
+static void
+daemon_start (Daemon *object)
+{
+	GError *error = NULL;
+	DaemonPrivate *priv = DAEMON_GET_PRIVATE (object);
+
+	DBusGProxy *manager_proxy = dbus_g_proxy_new_for_name (priv->connection, 
+					   MANAGER_SERVICE,
+					   MANAGER_PATH,
+					   MANAGER_INTERFACE);
+
+
+	dbus_g_proxy_call (manager_proxy, "Register",
+			   &error, G_TYPE_STRING,
+			   "image/png",
+			   G_TYPE_INVALID,
+			   G_TYPE_INVALID);
+
+	if (error) {
+		g_critical ("Failed to init: %s\n", error->message);
+		g_error_free (error);
+	}
+
+	g_object_unref (manager_proxy);
+	
+}
+
+
+int 
+main (int argc, char **argv) 
+{
+	DBusGConnection *connection;
+	DBusGProxy *proxy;
+	GError *error = NULL;
+	guint result;
+	GMainLoop *main_loop;
+	GObject *object;
+
+	g_type_init ();
+
+	if (!g_thread_supported ())
+		g_thread_init (NULL);
+
+	connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
+
+	proxy = dbus_g_proxy_new_for_name (connection, 
+					   DBUS_SERVICE_DBUS,
+					   DBUS_PATH_DBUS,
+					   DBUS_INTERFACE_DBUS);
+
+	org_freedesktop_DBus_request_name (proxy, DAEMON_SERVICE,
+					   DBUS_NAME_FLAG_DO_NOT_QUEUE,
+					   &result, error);
+
+	object = g_object_new (TYPE_DAEMON, 
+			       "connection", connection, 
+			       NULL);
+
+	daemon_start (DAEMON (object));
+
+	dbus_g_object_type_install_info (G_OBJECT_TYPE (object), 
+					 &dbus_glib_daemon_object_info);
+
+	dbus_g_connection_register_g_object (connection, 
+					     DAEMON_PATH, 
+					     object);
+
+
+	main_loop = g_main_loop_new (NULL, FALSE);
+	g_main_loop_run (main_loop);
+
+	g_main_loop_unref (main_loop);
+
+	return 0;
+}

Added: projects/haf/branches/hildon-thumbnail/daemonize/tests/daemon.xml
===================================================================
--- projects/haf/branches/hildon-thumbnail/daemonize/tests/daemon.xml	2008-09-03 14:36:35 UTC (rev 15996)
+++ projects/haf/branches/hildon-thumbnail/daemonize/tests/daemon.xml	2008-09-03 15:32:59 UTC (rev 15997)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/">
+  <interface name="org.freedesktop.thumbnailer">  
+    <method name="Create">
+      <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/>
+      <arg type="as" name="uris" direction="in" />
+    </method>
+  </interface>
+</node>


More information about the maemo-commits mailing list