summaryrefslogtreecommitdiffstats
path: root/glib/examples
diff options
context:
space:
mode:
Diffstat (limited to 'glib/examples')
-rw-r--r--glib/examples/.cvsignore17
-rw-r--r--glib/examples/Makefile.am38
-rw-r--r--glib/examples/example-client.c121
-rw-r--r--glib/examples/example-service.c153
-rw-r--r--glib/examples/example-service.xml19
-rw-r--r--glib/examples/example-signal-emitter.c132
-rw-r--r--glib/examples/example-signal-emitter.xml13
-rw-r--r--glib/examples/example-signal-recipient.c102
-rw-r--r--glib/examples/statemachine/.cvsignore16
-rw-r--r--glib/examples/statemachine/Makefile.am35
-rw-r--r--glib/examples/statemachine/sm-marshal.list1
-rw-r--r--glib/examples/statemachine/statemachine-client.c662
-rw-r--r--glib/examples/statemachine/statemachine-server.c229
-rw-r--r--glib/examples/statemachine/statemachine-server.h37
-rw-r--r--glib/examples/statemachine/statemachine-server.xml14
-rw-r--r--glib/examples/statemachine/statemachine.c353
-rw-r--r--glib/examples/statemachine/statemachine.h77
-rw-r--r--glib/examples/statemachine/statemachine.xml33
18 files changed, 0 insertions, 2052 deletions
diff --git a/glib/examples/.cvsignore b/glib/examples/.cvsignore
deleted file mode 100644
index fc6a0634..00000000
--- a/glib/examples/.cvsignore
+++ /dev/null
@@ -1,17 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-*.lo
-*.la
-example-client
-example-service
-example-service-glue.h
-example-signal-recipient
-example-signal-emitter
-example-signal-emitter-glue.h
-run-with-tmp-session-bus.conf
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/glib/examples/Makefile.am b/glib/examples/Makefile.am
deleted file mode 100644
index 34b9cb8b..00000000
--- a/glib/examples/Makefile.am
+++ /dev/null
@@ -1,38 +0,0 @@
-SUBDIRS = . statemachine
-
-INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) -DDBUS_COMPILATION
-
-## Makefile.am bits for sample client/server pair
-
-noinst_PROGRAMS= example-client example-service
-
-example_client_SOURCES= example-client.c
-example_client_LDADD= $(top_builddir)/glib/libdbus-glib-1.la
-
-example_service_SOURCES= example-service.c
-example_service_LDADD= $(top_builddir)/glib/libdbus-glib-1.la
-
-BUILT_SOURCES = example-service-glue.h
-
-example-service-glue.h: example-service.xml
- $(LIBTOOL) --mode=execute $(top_builddir)/glib/dbus-binding-tool --prefix=some_object --mode=glib-server --output=example-service-glue.h $(srcdir)/example-service.xml
-
-
-## Makefile.am bits for another client/server pair
-
-noinst_PROGRAMS += example-signal-recipient example-signal-emitter
-
-example_signal_recipient_SOURCES= example-signal-recipient.c
-example_signal_recipient_LDADD= $(top_builddir)/glib/libdbus-glib-1.la
-
-example_signal_emitter_SOURCES= example-signal-emitter.c
-example_signal_emitter_LDADD= $(top_builddir)/glib/libdbus-glib-1.la
-
-BUILT_SOURCES += example-signal-emitter-glue.h
-
-example-signal-emitter-glue.h: example-signal-emitter.xml
- $(LIBTOOL) --mode=execute $(top_builddir)/glib/dbus-binding-tool --prefix=test_object --mode=glib-server --output=example-signal-emitter-glue.h $(srcdir)/example-signal-emitter.xml
-
-CLEANFILES = $(BUILT_SOURCES)
-
-EXTRA_DIST = example-service.xml example-signal-emitter.xml
diff --git a/glib/examples/example-client.c b/glib/examples/example-client.c
deleted file mode 100644
index dac1f825..00000000
--- a/glib/examples/example-client.c
+++ /dev/null
@@ -1,121 +0,0 @@
-#include <dbus/dbus-glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-static void lose (const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
-static void lose_gerror (const char *prefix, GError *error) G_GNUC_NORETURN;
-
-static void
-lose (const char *str, ...)
-{
- va_list args;
-
- va_start (args, str);
-
- vfprintf (stderr, str, args);
- fputc ('\n', stderr);
-
- va_end (args);
-
- exit (1);
-}
-
-static void
-lose_gerror (const char *prefix, GError *error)
-{
- lose ("%s: %s", prefix, error->message);
-}
-
-static void
-print_hash_value (gpointer key, gpointer val, gpointer data)
-{
- printf ("%s -> %s\n", (char *) key, (char *) val);
-}
-
-int
-main (int argc, char **argv)
-{
- DBusGConnection *bus;
- DBusGProxy *remote_object;
- DBusGProxy *remote_object_introspectable;
- GError *error = NULL;
- char **reply_list;
- char **reply_ptr;
- GValueArray *hello_reply_struct;
- GHashTable *hello_reply_dict;
- char *introspect_data;
- guint i;
-
- g_type_init ();
-
- {
- GLogLevelFlags fatal_mask;
-
- fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
- fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
- g_log_set_always_fatal (fatal_mask);
- }
-
- bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (!bus)
- lose_gerror ("Couldn't connect to session bus", error);
-
- remote_object = dbus_g_proxy_new_for_name (bus,
- "org.designfu.SampleService",
- "/SomeObject",
- "org.designfu.SampleInterface");
-
- if (!dbus_g_proxy_call (remote_object, "HelloWorld", &error,
- G_TYPE_STRING, "Hello from example-client.c!", G_TYPE_INVALID,
- G_TYPE_STRV, &reply_list, G_TYPE_INVALID))
- lose_gerror ("Failed to complete HelloWorld", error);
-
-
- if (!dbus_g_proxy_call (remote_object, "GetTuple", &error,
- G_TYPE_INVALID,
- G_TYPE_VALUE_ARRAY, &hello_reply_struct, G_TYPE_INVALID))
- lose_gerror ("Failed to complete GetTuple", error);
-
- if (!dbus_g_proxy_call (remote_object, "GetDict", &error,
- G_TYPE_INVALID,
- DBUS_TYPE_G_STRING_STRING_HASHTABLE, &hello_reply_dict, G_TYPE_INVALID))
- lose_gerror ("Failed to complete GetDict", error);
-
- printf ("reply_list: ");
- for (reply_ptr = reply_list; *reply_ptr; reply_ptr++)
- printf ("\"%s\" ", *reply_ptr);
- printf ("\n");
- g_strfreev (reply_list);
-
- for (i = 0; i < hello_reply_struct->n_values; i++)
- {
- GValue strval = { 0, };
-
- g_value_init (&strval, G_TYPE_STRING);
- if (!g_value_transform (g_value_array_get_nth (hello_reply_struct, i), &strval))
- g_value_set_static_string (&strval, "(couldn't transform to string)");
- g_print ("%s: %s\n", g_type_name (G_VALUE_TYPE (g_value_array_get_nth (hello_reply_struct, i))),
- g_value_get_string (&strval));
- }
- g_value_array_free (hello_reply_struct);
- printf ("\n");
-
- g_hash_table_foreach (hello_reply_dict, print_hash_value, NULL);
- g_hash_table_destroy (hello_reply_dict);
-
- remote_object_introspectable = dbus_g_proxy_new_for_name (bus,
- "org.designfu.SampleService",
- "/SomeObject",
- "org.freedesktop.DBus.Introspectable");
- if (!dbus_g_proxy_call (remote_object_introspectable, "Introspect", &error,
- G_TYPE_INVALID,
- G_TYPE_STRING, &introspect_data, G_TYPE_INVALID))
- lose_gerror ("Failed to complete Introspect", error);
- printf ("%s", introspect_data);
- g_free (introspect_data);
-
- g_object_unref (G_OBJECT (remote_object_introspectable));
- g_object_unref (G_OBJECT (remote_object));
-
- exit(0);
-}
diff --git a/glib/examples/example-service.c b/glib/examples/example-service.c
deleted file mode 100644
index a66855c1..00000000
--- a/glib/examples/example-service.c
+++ /dev/null
@@ -1,153 +0,0 @@
-#include <dbus/dbus-glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-static void lose (const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
-static void lose_gerror (const char *prefix, GError *error) G_GNUC_NORETURN;
-
-static void
-lose (const char *str, ...)
-{
- va_list args;
-
- va_start (args, str);
-
- vfprintf (stderr, str, args);
- fputc ('\n', stderr);
-
- va_end (args);
-
- exit (1);
-}
-
-static void
-lose_gerror (const char *prefix, GError *error)
-{
- lose ("%s: %s", prefix, error->message);
-}
-
-typedef struct SomeObject SomeObject;
-typedef struct SomeObjectClass SomeObjectClass;
-
-GType some_object_get_type (void);
-
-struct SomeObject
-{
- GObject parent;
-};
-
-struct SomeObjectClass
-{
- GObjectClass parent;
-};
-
-#define SOME_TYPE_OBJECT (some_object_get_type ())
-#define SOME_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOME_TYPE_OBJECT, SomeObject))
-#define SOME_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOME_TYPE_OBJECT, SomeObjectClass))
-#define SOME_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOME_TYPE_OBJECT))
-#define SOME_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOME_TYPE_OBJECT))
-#define SOME_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOME_TYPE_OBJECT, SomeObjectClass))
-
-G_DEFINE_TYPE(SomeObject, some_object, G_TYPE_OBJECT)
-
-gboolean some_object_hello_world (SomeObject *obj, const char *hello_message, char ***ret, GError **error);
-gboolean some_object_get_tuple (SomeObject *obj, GValueArray **ret, GError **error);
-gboolean some_object_get_dict (SomeObject *obj, GHashTable **ret, GError **error);
-
-#include "example-service-glue.h"
-
-static void
-some_object_init (SomeObject *obj)
-{
-}
-
-static void
-some_object_class_init (SomeObjectClass *klass)
-{
-}
-
-gboolean
-some_object_hello_world (SomeObject *obj, const char *hello_message, char ***ret, GError **error)
-{
- printf ("%s\n", hello_message);
- *ret = g_new (char *, 3);
- (*ret)[0] = g_strdup ("Hello");
- (*ret)[1] = g_strdup (" from example-service.c");
- (*ret)[2] = NULL;
-
- return TRUE;
-}
-
-gboolean
-some_object_get_tuple (SomeObject *obj, GValueArray **ret, GError **error)
-{
- *ret = g_value_array_new (6);
- g_value_array_prepend (*ret, NULL);
- g_value_init (g_value_array_get_nth (*ret, 0), G_TYPE_STRING);
- g_value_set_string (g_value_array_get_nth (*ret, 0), "hello");
- g_value_array_prepend (*ret, NULL);
- g_value_init (g_value_array_get_nth (*ret, 0), G_TYPE_UINT);
- g_value_set_uint (g_value_array_get_nth (*ret, 0), 42);
-
- return TRUE;
-}
-
-gboolean
-some_object_get_dict (SomeObject *obj, GHashTable **ret, GError **error)
-{
- *ret = g_hash_table_new (g_str_hash, g_str_equal);
- g_hash_table_insert (*ret, "first", "Hello Dict");
- g_hash_table_insert (*ret, "second", " from example-service.c");
- return TRUE;
-}
-
-int
-main (int argc, char **argv)
-{
- DBusGConnection *bus;
- DBusGProxy *bus_proxy;
- GError *error = NULL;
- SomeObject *obj;
- GMainLoop *mainloop;
- guint request_name_result;
-
- g_type_init ();
-
- {
- GLogLevelFlags fatal_mask;
-
- fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK);
- fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL;
- g_log_set_always_fatal (fatal_mask);
- }
-
- dbus_g_object_type_install_info (SOME_TYPE_OBJECT, &dbus_glib_some_object_object_info);
-
- mainloop = g_main_loop_new (NULL, FALSE);
-
- bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (!bus)
- lose_gerror ("Couldn't connect to session bus", error);
-
- bus_proxy = dbus_g_proxy_new_for_name (bus, "org.freedesktop.DBus",
- "/org/freedesktop/DBus",
- "org.freedesktop.DBus");
-
- if (!dbus_g_proxy_call (bus_proxy, "RequestName", &error,
- G_TYPE_STRING, "org.designfu.SampleService",
- G_TYPE_UINT, 0,
- G_TYPE_INVALID,
- G_TYPE_UINT, &request_name_result,
- G_TYPE_INVALID))
- lose_gerror ("Failed to acquire org.designfu.SampleService", error);
-
- obj = g_object_new (SOME_TYPE_OBJECT, NULL);
-
- dbus_g_connection_register_g_object (bus, "/SomeObject", G_OBJECT (obj));
-
- printf ("service running\n");
-
- g_main_loop_run (mainloop);
-
- exit (0);
-}
diff --git a/glib/examples/example-service.xml b/glib/examples/example-service.xml
deleted file mode 100644
index 9c39bb05..00000000
--- a/glib/examples/example-service.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<node name="/">
- <interface name="org.designfu.SampleInterface">
- <method name="HelloWorld">
- <arg type="s"/>
- <arg type="as" direction="out"/>
- </method>
-
- <method name="GetTuple">
- <arg type="(ss)" direction="out" />
- </method>
-
- <method name="GetDict">
- <arg type="a{ss}" direction="out"/>
- </method>
-
- </interface>
-</node>
diff --git a/glib/examples/example-signal-emitter.c b/glib/examples/example-signal-emitter.c
deleted file mode 100644
index c60865d2..00000000
--- a/glib/examples/example-signal-emitter.c
+++ /dev/null
@@ -1,132 +0,0 @@
-#include <dbus/dbus-glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-static void lose (const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
-static void lose_gerror (const char *prefix, GError *error) G_GNUC_NORETURN;
-
-static void
-lose (const char *str, ...)
-{
- va_list args;
-
- va_start (args, str);
-
- vfprintf (stderr, str, args);
- fputc ('\n', stderr);
-
- va_end (args);
-
- exit (1);
-}
-
-static void
-lose_gerror (const char *prefix, GError *error)
-{
- lose ("%s: %s", prefix, error->message);
-}
-
-typedef struct TestObject TestObject;
-typedef struct TestObjectClass TestObjectClass;
-
-GType test_object_get_type (void);
-
-struct TestObject
-{
- GObject parent;
-};
-
-struct TestObjectClass
-{
- GObjectClass parent;
-};
-
-enum
-{
- HELLO_SIGNAL,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-#define TEST_TYPE_OBJECT (test_object_get_type ())
-#define TEST_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), TEST_TYPE_OBJECT, TestObject))
-#define TEST_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_TYPE_OBJECT, TestObjectClass))
-#define TEST_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), TEST_TYPE_OBJECT))
-#define TEST_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_TYPE_OBJECT))
-#define TEST_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_TYPE_OBJECT, TestObjectClass))
-
-G_DEFINE_TYPE(TestObject, test_object, G_TYPE_OBJECT)
-
-gboolean test_object_emit_hello_signal (TestObject *obj, GError **error);
-
-#include "example-signal-emitter-glue.h"
-
-static void
-test_object_init (TestObject *obj)
-{
-}
-
-static void
-test_object_class_init (TestObjectClass *klass)
-{
- signals[HELLO_SIGNAL] =
- g_signal_new ("hello_signal",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
-}
-
-gboolean
-test_object_emit_hello_signal (TestObject *obj, GError **error)
-{
- g_signal_emit (obj, signals[HELLO_SIGNAL], 0, "Hello");
- return TRUE;
-}
-
-
-int
-main (int argc, char **argv)
-{
- DBusGConnection *bus;
- DBusGProxy *bus_proxy;
- GError *error = NULL;
- TestObject *obj;
- GMainLoop *mainloop;
- guint request_name_result;
-
- g_type_init ();
-
- dbus_g_object_type_install_info (TEST_TYPE_OBJECT, &dbus_glib_test_object_object_info);
-
- mainloop = g_main_loop_new (NULL, FALSE);
-
- bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (!bus)
- lose_gerror ("Couldn't connect to session bus", error);
-
- bus_proxy = dbus_g_proxy_new_for_name (bus, "org.freedesktop.DBus",
- "/org/freedesktop/DBus",
- "org.freedesktop.DBus");
-
- if (!dbus_g_proxy_call (bus_proxy, "RequestName", &error,
- G_TYPE_STRING, "org.designfu.TestService",
- G_TYPE_UINT, 0,
- G_TYPE_INVALID,
- G_TYPE_UINT, &request_name_result,
- G_TYPE_INVALID))
- lose_gerror ("Failed to acquire org.designfu.TestService", error);
-
- obj = g_object_new (TEST_TYPE_OBJECT, NULL);
-
- dbus_g_connection_register_g_object (bus, "/org/designfu/TestService/object", G_OBJECT (obj));
-
- printf ("test service running\n");
-
- g_main_loop_run (mainloop);
-
- exit (0);
-}
diff --git a/glib/examples/example-signal-emitter.xml b/glib/examples/example-signal-emitter.xml
deleted file mode 100644
index ae178e3b..00000000
--- a/glib/examples/example-signal-emitter.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<node name="/">
- <interface name="org.designfu.TestService">
-
- <method name="emitHelloSignal">
- </method>
-
- <!-- Mark the signal as exported -->
- <signal name="HelloSignal"/>
-
- </interface>
-</node>
diff --git a/glib/examples/example-signal-recipient.c b/glib/examples/example-signal-recipient.c
deleted file mode 100644
index 86ba4c77..00000000
--- a/glib/examples/example-signal-recipient.c
+++ /dev/null
@@ -1,102 +0,0 @@
-#include <dbus/dbus-glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-static void lose (const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
-static void lose_gerror (const char *prefix, GError *error) G_GNUC_NORETURN;
-
-static void
-lose (const char *str, ...)
-{
- va_list args;
-
- va_start (args, str);
-
- vfprintf (stderr, str, args);
- fputc ('\n', stderr);
-
- va_end (args);
-
- exit (1);
-}
-
-static void
-lose_gerror (const char *prefix, GError *error)
-{
- lose ("%s: %s", prefix, error->message);
-}
-
-static gboolean
-emit_signal (gpointer arg)
-{
- DBusGProxy *proxy = arg;
-
- dbus_g_proxy_call_no_reply (proxy, "emitHelloSignal", G_TYPE_INVALID);
- return TRUE;
-}
-
-static void
-hello_signal_handler (DBusGProxy *proxy, const char *hello_string, gpointer user_data)
-{
- printf ("Received signal and it says: %s\n", hello_string);
-}
-
-int
-main (int argc, char **argv)
-{
- DBusGConnection *bus;
- DBusGProxy *remote_object;
- GError *error = NULL;
- GMainLoop *mainloop;
-
- g_type_init ();
-
- mainloop = g_main_loop_new (NULL, FALSE);
-
- bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (!bus)
- lose_gerror ("Couldn't connect to session bus", error);
-
- /* We use _for_name_owner in order to track this particular service
- * instance, which lets us receive signals.
- */
- remote_object = dbus_g_proxy_new_for_name (bus,
- "org.designfu.TestService",
- "/org/designfu/TestService/object",
- "org.designfu.TestService");
- if (!remote_object)
- lose_gerror ("Failed to get name owner", error);
-
- /* IMPORTANT:
- *
- * Note because this signal's signature is VOID__STRING, we do not
- * need to register a marshaller, since there is a builtin one.
- * However for other signatures, you must generate a marshaller,
- * then call dbus_g_object_register_marshaller. It would look like
- * this:
- *
- * dbus_g_object_register_marshaller (g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, G_TYPE_STRING, G_TYPE_INVALID);
- *
- */
-
- /* Tell DBus what the type signature of the signal callback is; this
- * allows us to sanity-check incoming messages before invoking the
- * callback. You need to do this once for each proxy you create,
- * not every time you want to connect to the signal.
- */
- dbus_g_proxy_add_signal (remote_object, "HelloSignal", G_TYPE_STRING, G_TYPE_INVALID);
-
- /* Actually connect to the signal. Note you can call
- * dbus_g_proxy_connect_signal multiple times for one invocation of
- * dbus_g_proxy_add_signal.
- */
- dbus_g_proxy_connect_signal (remote_object, "HelloSignal", G_CALLBACK (hello_signal_handler),
- NULL, NULL);
-
-
- g_timeout_add (2000, emit_signal, remote_object);
-
- g_main_loop_run (mainloop);
-
- exit (0);
-}
diff --git a/glib/examples/statemachine/.cvsignore b/glib/examples/statemachine/.cvsignore
deleted file mode 100644
index 6bf74218..00000000
--- a/glib/examples/statemachine/.cvsignore
+++ /dev/null
@@ -1,16 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-*.lo
-*.la
-statemachine-client
-statemachine-server
-statemachine-glue.h
-statemachine-server-glue.h
-run-with-tmp-session-bus.conf
-sm-marshal.[ch]
-*.bb
-*.bbg
-*.da
-*.gcov
diff --git a/glib/examples/statemachine/Makefile.am b/glib/examples/statemachine/Makefile.am
deleted file mode 100644
index 0fea83ed..00000000
--- a/glib/examples/statemachine/Makefile.am
+++ /dev/null
@@ -1,35 +0,0 @@
-INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) $(DBUS_GTK_THREADS_CFLAGS) -DDBUS_COMPILATION
-
-## Makefile.am bits for sample client/server pair
-
-noinst_PROGRAMS= statemachine-server
-
-if HAVE_GTK
-noinst_PROGRAMS += statemachine-client
-endif
-
-EXTRA_DIST = statemachine.h statemachine-server.h sm-marshal.list statemachine-server.xml statemachine.xml
-
-statemachine_server_SOURCES= statemachine-server.c sm-marshal.c statemachine.c
-statemachine_server_LDADD= $(top_builddir)/glib/libdbus-glib-1.la
-
-statemachine_client_SOURCES= statemachine-client.c sm-marshal.c statemachine.h
-statemachine_client_LDADD= $(top_builddir)/glib/libdbus-glib-1.la $(DBUS_GTK_THREADS_LIBS)
-
-BUILT_SOURCES = statemachine-server-glue.h statemachine-glue.h
-
-statemachine-server-glue.h: statemachine-server.xml
- $(LIBTOOL) --mode=execute $(top_builddir)/glib/dbus-binding-tool --prefix=sm_server --mode=glib-server --output=$@ $<
-
-statemachine-glue.h: statemachine.xml
- $(LIBTOOL) --mode=execute $(top_builddir)/glib/dbus-binding-tool --prefix=sm_object --mode=glib-server --output=$@ $<
-
-sm-marshal.c: Makefile sm-marshal.list
- @GLIB_GENMARSHAL@ --prefix=sm_marshal $(srcdir)/sm-marshal.list --header --body > $@.tmp && mv $@.tmp $@
-
-sm-marshal.h: Makefile sm-marshal.list
- @GLIB_GENMARSHAL@ --prefix=sm_marshal $(srcdir)/sm-marshal.list --header > $@.tmp && mv $@.tmp $@
-
-BUILT_SOURCES += sm-marshal.c sm-marshal.h
-
-CLEANFILES = $(BUILT_SOURCES)
diff --git a/glib/examples/statemachine/sm-marshal.list b/glib/examples/statemachine/sm-marshal.list
deleted file mode 100644
index e72aa4bc..00000000
--- a/glib/examples/statemachine/sm-marshal.list
+++ /dev/null
@@ -1 +0,0 @@
-VOID:STRING,BOXED
diff --git a/glib/examples/statemachine/statemachine-client.c b/glib/examples/statemachine/statemachine-client.c
deleted file mode 100644
index 88b21847..00000000
--- a/glib/examples/statemachine/statemachine-client.c
+++ /dev/null
@@ -1,662 +0,0 @@
-#include <dbus/dbus-glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <gtk/gtk.h>
-#include <glib/gi18n.h>
-#include "sm-marshal.h"
-
-static void lose (const char *fmt, ...) G_GNUC_NORETURN G_GNUC_PRINTF (1, 2);
-static void lose_gerror (const char *prefix, GError *error) G_GNUC_NORETURN;
-
-static void
-lose (const char *str, ...)
-{
- va_list args;
- GtkWidget *dialog;
- char *text;
-
- va_start (args, str);
-
- text = g_strdup_vprintf (str, args);
-
- va_end (args);
-
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "%s",
- text);
- gtk_dialog_run (GTK_DIALOG (dialog));
-
- g_free (text);
-
- exit (1);
-}
-
-static void
-lose_gerror (const char *prefix, GError *error)
-{
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR,
- GTK_BUTTONS_CLOSE,
- "%s",
- prefix);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- "%s",
- error->message);
-
- gtk_dialog_run (GTK_DIALOG (dialog));
-
- exit (1);
-}
-
-typedef struct
-{
- char *name;
- char *state;
- gdouble progress;
- DBusGProxy *proxy;
- DBusGProxyCall *get_progress_call;
-} MachineInfo;
-
-typedef struct
-{
- GtkWindow *window;
- GtkWidget *view;
- GtkTreeModel *store;
-
- DBusGConnection *bus;
- DBusGProxy *server_proxy;
-
- GSList *pending_creation_calls;
- DBusGProxyCall *get_machines_call;
-} ClientState;
-
-static gboolean
-proxy_to_iter (GtkTreeModel *model, DBusGProxy *proxy, GtkTreeIter *iter)
-{
- if (!gtk_tree_model_get_iter_first (model, iter))
- return FALSE;
- do {
- MachineInfo *info;
- gtk_tree_model_get (model, iter, 0, &info, -1);
- if (info->proxy == proxy)
- return TRUE;
- } while (gtk_tree_model_iter_next (model, iter));
- return FALSE;
-}
-
-static void
-signal_row_change (ClientState *state, GtkTreeIter *iter)
-{
- GtkTreePath *path;
- path = gtk_tree_model_get_path (state->store, iter);
- gtk_tree_model_row_changed (state->store, path, iter);
- gtk_tree_path_free (path);
-}
-
-static void
-get_machine_info_cb (DBusGProxy *proxy,
- DBusGProxyCall *call,
- gpointer data)
-{
- GtkTreeIter iter;
- ClientState *state = data;
- GError *error = NULL;
- char *name, *statename;
- MachineInfo *info;
-
- if (!dbus_g_proxy_end_call (proxy, call, &error,
- G_TYPE_STRING, &name,
- G_TYPE_STRING, &statename,
- G_TYPE_INVALID))
- lose_gerror ("Couldn't complete GetInfo", error);
-
- if (!proxy_to_iter (state->store, proxy, &iter))
- g_assert_not_reached ();
-
- gtk_tree_model_get (state->store, &iter, 0, &info, -1);
- g_free (info->name);
- info->name = name;
- g_free (info->state);
- info->state = statename;
- signal_row_change (state, &iter);
-}
-
-static void
-set_proxy_acquisition_progress (ClientState *state,
- DBusGProxy *proxy,
- double progress)
-{
- MachineInfo *info;
- GtkTreeIter iter;
-
- if (!proxy_to_iter (state->store, proxy, &iter))
- g_assert_not_reached ();
- gtk_tree_model_get (state->store, &iter, 0, &info, -1);
-
- /* Ignore machines in unknown state */
- if (!info->state)
- return;
-
- if (strcmp (info->state, "Acquired"))
- lose ("Got AcquisitionProgress signal in bad state %s",
- info->state);
-
- g_print ("Got acquisition progress change for %p (%s) to %f\n", proxy, info->name ? info->name : "(unknown)", progress);
-
- info->progress = progress;
-
- signal_row_change (state, &iter);
-}
-
-static void
-proxy_acquisition_changed_cb (DBusGProxy *proxy,
- double progress,
- gpointer user_data)
-{
- set_proxy_acquisition_progress (user_data, proxy, progress);
-}
-
-static void
-get_acquiring_progress_cb (DBusGProxy *proxy,
- DBusGProxyCall *call,
- gpointer user_data)
-{
- GError *error = NULL;
- MachineInfo *info;
- GtkTreeIter iter;
- ClientState *state = user_data;
- gdouble progress;
-
- if (!proxy_to_iter (state->store, proxy, &iter))
- g_assert_not_reached ();
- gtk_tree_model_get (state->store, &iter, 0, &info, -1);
-
- g_assert (info->get_progress_call == call);
-
- if (!dbus_g_proxy_end_call (proxy, call, &error,
- G_TYPE_DOUBLE, &progress, G_TYPE_INVALID))
- lose_gerror ("Failed to complete GetAcquiringProgress call", error);
- info->get_progress_call = NULL;
-
- set_proxy_acquisition_progress (state, proxy, progress);
-}
-
-static void
-proxy_state_changed_cb (DBusGProxy *proxy,
- const char *statename,
- gpointer user_data)
-{
- MachineInfo *info;
- GtkTreeIter iter;
- ClientState *state = user_data;
-
- if (!proxy_to_iter (state->store, proxy, &iter))
- g_assert_not_reached ();
- gtk_tree_model_get (state->store, &iter, 0, &info, -1);
-
- g_print ("Got state change for %p (%s) to %s\n", proxy, info->name ? info->name : "(unknown)", statename);
-
- g_free (info->state);
- info->state = g_strdup (statename);
-
- if (!strcmp (info->state, "Acquired"))
- {
- g_print ("Starting GetAcquiringProgress call for %p\n", info->proxy);
- if (info->get_progress_call != NULL)
- {
- dbus_g_proxy_cancel_call (info->proxy, info->get_progress_call);
- info->get_progress_call = NULL;
- }
- info->get_progress_call =
- dbus_g_proxy_begin_call (info->proxy, "GetAcquiringProgress",
- get_acquiring_progress_cb,
- state, NULL,
- G_TYPE_INVALID);
- }
- else
- info->progress = 0.0;
-
- signal_row_change (state, &iter);
-}
-
-static void
-add_machine (ClientState *state,
- const char *name,
- const char *mstate,
- const char *path)
-{
- MachineInfo *info;
- GtkTreeIter iter;
-
- info = g_new0 (MachineInfo, 1);
- info->name = g_strdup (name);
- info->state = g_strdup (mstate);
- info->progress = 0.0;
-
- info->proxy = dbus_g_proxy_new_for_name (state->bus,
- "com.example.StateServer",
- path,
- "com.example.StateMachine");
-
- if (!info->state)
- {
- g_print ("Starting GetInfo call for %p\n", info->proxy);
- dbus_g_proxy_begin_call (info->proxy, "GetInfo",
- get_machine_info_cb,
- state, NULL,
- G_TYPE_INVALID);
- }
-
- /* Watch for state changes */
- dbus_g_proxy_add_signal (info->proxy, "StateChanged",
- G_TYPE_STRING, G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal (info->proxy,
- "StateChanged",
- G_CALLBACK (proxy_state_changed_cb),
- state,
- NULL);
-
- dbus_g_proxy_add_signal (info->proxy, "AcquisitionProgress",
- G_TYPE_DOUBLE, G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal (info->proxy,
- "AcquisitionProgress",
- G_CALLBACK (proxy_acquisition_changed_cb),
- state,
- NULL);
-
- gtk_list_store_prepend (GTK_LIST_STORE (state->store), &iter);
- gtk_list_store_set (GTK_LIST_STORE (state->store), &iter, 0, info, -1);
-
-}
-
-static void
-machine_created_cb (DBusGProxy *proxy,
- const char *name,
- const char *path,
- gpointer data)
-{
- ClientState *state = data;
-
- add_machine (state, name, NULL, path);
-}
-
-static void
-server_destroyed_cb (DBusGProxy *proxy, gpointer data)
-{
- g_print ("Server terminated!\n");
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new (NULL,
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_CLOSE,
- "State Machine server has exited");
-
- gtk_dialog_run (GTK_DIALOG (dialog));
-
- exit (1);
-}
-
-static void
-window_destroyed_cb (GtkWidget *window, gpointer data)
-{
- gtk_main_quit ();
-}
-
-static void
-create_machine_completed_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer data)
-{
- GError *error = NULL;
- ClientState *state = data;
-
- if (!dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID))
- {
- /* Ignore NameInUse errors */
- if (dbus_g_error_has_name (error, "com.example.StateServer.NameInUse"))
- ;
- else
- lose_gerror ("Failed to create new state machine", error);
- }
- g_print ("machine created successfully\n");
- state->pending_creation_calls = g_slist_remove (state->pending_creation_calls, call);
-}
-
-static void
-send_create_machine (ClientState *state)
-{
- DBusGProxyCall *call;
- char *name;
- gint n_children;
-
- n_children = gtk_tree_model_iter_n_children (state->store, NULL);
- name = g_strdup_printf ("machine%d", n_children);
-
- g_print ("Invoking CreateMachine(%s)\n", name);
- call = dbus_g_proxy_begin_call (state->server_proxy, "CreateMachine",
- create_machine_completed_cb,
- state, NULL,
- G_TYPE_STRING, name, G_TYPE_INVALID);
- g_free (name);
- state->pending_creation_calls = g_slist_prepend (state->pending_creation_calls, call);
-}
-
-static void
-do_a_state_change (ClientState *state)
-{
- gint index;
- GtkTreeIter iter;
- gint n_children;
- MachineInfo *info;
-
- n_children = gtk_tree_model_iter_n_children (state->store, NULL);
- if (n_children == 0)
- {
- g_print ("No machines yet, not doing a state switch\n");
- return;
- }
-
- index = g_random_int_range (0, n_children);
- gtk_tree_model_iter_nth_child (state->store, &iter, NULL, index);
- gtk_tree_model_get (state->store, &iter, 0, &info, -1);
-
- if (!info->state)
- {
- g_print ("Machine not yet in known state, skipping state switch\n");
- return;
- }
-
- if (!strcmp (info->state, "Shutdown"))
- {
- g_print ("Sending Start request to machine %s\n", info->name);
- dbus_g_proxy_call_no_reply (info->proxy, "Start", G_TYPE_INVALID);
- }
- else if (!strcmp (info->state, "Loading"))
- {
-
- g_print ("Sending Reacquire request to machine %s\n", info->name);
- dbus_g_proxy_call_no_reply (info->proxy, "Reacquire", G_TYPE_INVALID);
- }
- else
- {
- g_print ("Sending Shutdown request to machine %s\n", info->name);
- dbus_g_proxy_call_no_reply (info->proxy, "Shutdown", G_TYPE_INVALID);
- }
-}
-
-static gboolean
-do_something_random_2 (gpointer data)
-{
- ClientState *state = data;
- do_a_state_change (state);
- g_timeout_add (g_random_int_range (2000, 5000), do_something_random_2, state);
- return FALSE;
-}
-
-static gboolean
-do_something_random (gpointer data)
-{
- ClientState *state = data;
- gint n_children;
-
- switch (g_random_int_range (0, 3))
- {
- case 0:
- send_create_machine (state);
- break;
- case 1:
- case 2:
- do_a_state_change (state);
- break;
- default:
- g_assert_not_reached ();
- }
-
- n_children = gtk_tree_model_iter_n_children (state->store, NULL);
- if (n_children >= 5)
- {
- g_print ("MAX children reached, switching to state changes only\n");
- g_timeout_add (g_random_int_range (500, 3000), do_something_random_2, state);
- }
- else
- g_timeout_add (g_random_int_range (500, 3000), do_something_random, state);
- return FALSE;
-}
-
-static void
-set_cell_name (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gpointer data)
-{
- MachineInfo *info;
-
- gtk_tree_model_get (tree_model, iter, 0, &info, -1);
-
- g_object_set (cell, "text", info->name ? info->name : "", NULL);
-}
-
-static gint
-sort_by_name (GtkTreeModel *model,
- GtkTreeIter *a,
- GtkTreeIter *b,
- gpointer user_data)
-{
- MachineInfo *info_a, *info_b;
-
- gtk_tree_model_get (model, a, 0, &info_a, -1);
- gtk_tree_model_get (model, b, 0, &info_b, -1);
-
- return strcmp (info_a->name ? info_a->name : "",
- info_b ? info_b->name : "");
-}
-
-static void
-set_cell_state (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gpointer data)
-{
- MachineInfo *info;
-
- gtk_tree_model_get (tree_model, iter, 0, &info, -1);
-
- g_object_set (cell, "text", info->state ? info->state : "", NULL);
-}
-
-static gint
-sort_by_state (GtkTreeModel *model,
- GtkTreeIter *a,
- GtkTreeIter *b,
- gpointer user_data)
-{
- MachineInfo *info_a, *info_b;
-
- gtk_tree_model_get (model, a, 0, &info_a, -1);
- gtk_tree_model_get (model, b, 0, &info_b, -1);
-
- return strcmp (info_a->state ? info_a->state : "",
- info_b ? info_b->state : "");
-}
-
-static void
-set_cell_progress (GtkTreeViewColumn *tree_column,
- GtkCellRenderer *cell,
- GtkTreeModel *tree_model,
- GtkTreeIter *iter,
- gpointer data)
-{
- MachineInfo *info;
-
- gtk_tree_model_get (tree_model, iter, 0, &info, -1);
-
- g_object_set (cell, "value", (int) (info->progress * 100), NULL);
-}
-
-static gint
-sort_by_progress (GtkTreeModel *model,
- GtkTreeIter *a,
- GtkTreeIter *b,
- gpointer user_data)
-{
- MachineInfo *info_a, *info_b;
-
- gtk_tree_model_get (model, a, 0, &info_a, -1);
- gtk_tree_model_get (model, b, 0, &info_b, -1);
-
- return info_a->progress > info_b->progress ? 1 : -1;
-}
-
-static void
-get_machines_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer data)
-{
- GError *error = NULL;
- ClientState *state = data;
- GPtrArray *objs;
- guint i;
- GtkWidget *scrolledwin;
- GtkTreeViewColumn *col;
- GtkCellRenderer *rend;
-
- g_assert (call == state->get_machines_call);
-
- if (!dbus_g_proxy_end_call (proxy, call, &error,
- dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_OBJECT_PATH),
- &objs,
- G_TYPE_INVALID))
- lose_gerror ("Failed to get current machine list", error);
-
- gtk_container_remove (GTK_CONTAINER (state->window),
- gtk_bin_get_child (GTK_BIN (state->window)));
-
- scrolledwin = gtk_scrolled_window_new (NULL, NULL);
- gtk_widget_show (scrolledwin);
-
- state->store = GTK_TREE_MODEL (gtk_list_store_new (1, G_TYPE_POINTER));
- state->view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (state->store));
- gtk_widget_show (state->view);
- gtk_container_add (GTK_CONTAINER (scrolledwin), state->view);
- gtk_container_add (GTK_CONTAINER (state->window), scrolledwin);
-
- rend = gtk_cell_renderer_text_new ();
- col = gtk_tree_view_column_new_with_attributes (_("Name"),
- rend,
- NULL);
- gtk_tree_view_column_set_cell_data_func (col, rend, set_cell_name, NULL, NULL);
- gtk_tree_view_column_set_resizable (col, TRUE);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (state->store),
- 0, sort_by_name, NULL, NULL);
- gtk_tree_view_column_set_sort_column_id (col, 0);
- gtk_tree_view_append_column (GTK_TREE_VIEW (state->view), col);
-
- rend = gtk_cell_renderer_text_new ();
- col = gtk_tree_view_column_new_with_attributes (_("State"),
- rend,
- NULL);
- gtk_tree_view_column_set_cell_data_func (col, rend, set_cell_state, NULL, NULL);
- gtk_tree_view_column_set_resizable (col, TRUE);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (state->store),
- 0, sort_by_state, NULL, NULL);
- gtk_tree_view_column_set_sort_column_id (col, 0);
- gtk_tree_view_append_column (GTK_TREE_VIEW (state->view), col);
-
- rend = gtk_cell_renderer_progress_new ();
- col = gtk_tree_view_column_new_with_attributes (_("Progress"),
- rend,
- NULL);
- gtk_tree_view_column_set_cell_data_func (col, rend, set_cell_progress, NULL, NULL);
- gtk_tree_view_column_set_resizable (col, TRUE);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (state->store),
- 0, sort_by_progress, NULL, NULL);
- gtk_tree_view_column_set_sort_column_id (col, 0);
- gtk_tree_view_append_column (GTK_TREE_VIEW (state->view), col);
-
- for (i = 0; i < objs->len; i++)
- {
- add_machine (state, NULL, NULL, g_ptr_array_index (objs, i));
- g_free (g_ptr_array_index (objs, i));
- }
- g_ptr_array_free (objs, TRUE);
-
- g_idle_add (do_something_random, state);
-}
-
-int
-main (int argc, char **argv)
-{
- DBusGConnection *bus;
- DBusGProxy *server;
- GError *error = NULL;
- ClientState state;
- GtkWidget *label;
-
- gtk_init (&argc, &argv);
-
- g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL);
-
- state.window = GTK_WINDOW (gtk_window_new (GTK_WINDOW_TOPLEVEL));
- gtk_window_set_resizable (GTK_WINDOW (state.window), TRUE);
- g_signal_connect (G_OBJECT (state.window), "destroy",
- G_CALLBACK (window_destroyed_cb),
- &state);
- gtk_window_set_title (GTK_WINDOW (state.window), _("D-BUS State Machine Demo"));
- gtk_window_set_default_size (GTK_WINDOW (state.window), 320, 240);
-
- label = gtk_label_new ("");
- gtk_label_set_markup (GTK_LABEL (label), "<b>Loading...</b>");
- gtk_widget_show (label);
-
- gtk_container_add (GTK_CONTAINER (state.window), label);
-
- bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (!bus)
- lose_gerror ("Couldn't connect to session bus", error);
-
- state.bus = bus;
-
- server = dbus_g_proxy_new_for_name_owner (bus,
- "com.example.StateServer",
- "/com/example/StateServer",
- "com.example.StateMachineServer",
- &error);
- if (!server)
- lose_gerror ("Couldn't find \"com.example.StateServer\"", error);
-
- state.server_proxy = server;
-
- g_signal_connect (server, "destroy",
- G_CALLBACK (server_destroyed_cb),
- &state);
-
- dbus_g_object_register_marshaller (sm_marshal_VOID__STRING_BOXED,
- G_TYPE_NONE, G_TYPE_STRING,
- DBUS_TYPE_G_OBJECT_PATH);
-
- dbus_g_proxy_add_signal (server, "MachineCreated", G_TYPE_STRING, DBUS_TYPE_G_OBJECT_PATH, G_TYPE_INVALID);
-
- dbus_g_proxy_connect_signal (server, "MachineCreated",
- G_CALLBACK (machine_created_cb),
- &state, NULL);
-
- state.get_machines_call = dbus_g_proxy_begin_call (server, "GetMachines",
- get_machines_cb, &state, NULL,
- G_TYPE_INVALID);
-
- gtk_widget_show (GTK_WIDGET (state.window));
-
- gtk_main ();
-
- g_object_unref (G_OBJECT (server));
-
- exit(0);
-}
diff --git a/glib/examples/statemachine/statemachine-server.c b/glib/examples/statemachine/statemachine-server.c
deleted file mode 100644
index cc9ca4bd..00000000
--- a/glib/examples/statemachine/statemachine-server.c
+++ /dev/null
@@ -1,229 +0,0 @@
-#include <dbus/dbus-glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "statemachine.h"
-#include "sm-marshal.h"
-#include "statemachine-server.h"
-
-enum
-{
- PROP_O,
- PROP_BUS
-};
-
-enum
-{
- MACHINE_CREATED,
- LAST_SIGNAL
-};
-
-static guint sm_server_signals[LAST_SIGNAL] = { 0 };
-
-static void sm_server_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void sm_server_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-
-G_DEFINE_TYPE(SMServer, sm_server, G_TYPE_OBJECT)
-
-#include "statemachine-server-glue.h"
-#include "statemachine-glue.h"
-
-static void
-sm_server_init (SMServer *obj)
-{
- obj->machines = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-}
-
-static void
-sm_server_class_init (SMServerClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->set_property = sm_server_set_property;
- object_class->get_property = sm_server_get_property;
-
- g_object_class_install_property (object_class,
- PROP_BUS,
- g_param_spec_boxed ("bus",
- "bus",
- "bus",
- DBUS_TYPE_G_CONNECTION,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-
- sm_server_signals[MACHINE_CREATED] =
- g_signal_new ("machine-created",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- sm_marshal_VOID__STRING_BOXED,
- G_TYPE_NONE, 2, G_TYPE_STRING, DBUS_TYPE_G_OBJECT_PATH);
-}
-
-static void
-sm_server_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- SMServer *server = SM_SERVER (object);
-
- switch (prop_id)
- {
- case PROP_BUS:
- server->bus = g_value_get_boxed (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-sm_server_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- SMServer *server = SM_SERVER (object);
-
- switch (prop_id)
- {
- case PROP_BUS:
- g_value_set_boxed (value, server->bus);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-machine_state_changed_cb (SMObject *obj, const char *state, gpointer data)
-{
- char *name;
-
- g_object_get (obj, "name", &name, NULL);
- g_print ("Machine %s switching to state %s\n", name, state);
- g_free (name);
-}
-
-static void
-machine_acquisition_changed_cb (SMObject *obj, gdouble progress, gpointer data)
-{
- char *name;
-
- g_object_get (obj, "name", &name, NULL);
- g_print ("Machine %s got progress %f\n", name, progress);
- g_free (name);
-}
-
-gboolean
-sm_server_create_machine (SMServer *server, const char *name, GError **error)
-{
- SMObject *machine;
- char *path;
-
- machine = g_hash_table_lookup (server->machines, name);
- if (machine != NULL)
- {
- g_set_error (error,
- SM_ERROR,
- SM_ERROR_NAME_IN_USE,
- "Statemachine name \"%s\" is already in use",
- name);
- return FALSE;
- }
-
- machine = g_object_new (SM_TYPE_OBJECT, "name", name, NULL);
-
- path = g_strdup_printf ("/com/example/StateMachines/%s", name);
- dbus_g_connection_register_g_object (server->bus, path, G_OBJECT (machine));
-
- g_hash_table_insert (server->machines, g_strdup (name), machine);
-
- g_print ("Created state machine with name %s at %s\n", name, path);
-
- g_signal_connect_object (machine, "state-changed",
- G_CALLBACK (machine_state_changed_cb),
- NULL, 0);
- g_signal_connect_object (machine, "acquisition-progress",
- G_CALLBACK (machine_acquisition_changed_cb),
- NULL, 0);
-
- g_signal_emit (server, sm_server_signals[MACHINE_CREATED], 0, name, path);
-
- return TRUE;
-}
-
-static void
-add_machine_to_ptr_array (gpointer key, gpointer val, gpointer data)
-{
- const char *name = key;
- /* SMObject *sm = val; */
- GPtrArray *ptrarray = data;
-
- g_ptr_array_add (ptrarray, g_strdup_printf ("/com/example/StateMachines/%s",
- name));
-}
-
-gboolean
-sm_server_get_machines (SMServer *server, GPtrArray **machines, GError **error)
-{
- *machines = g_ptr_array_new ();
-
- g_hash_table_foreach (server->machines, add_machine_to_ptr_array, *machines);
-
- return TRUE;
-}
-
-int
-main (int argc, char **argv)
-{
- DBusGConnection *bus;
- DBusGProxy *bus_proxy;
- GError *error = NULL;
- SMServer *server;
- GMainLoop *mainloop;
- guint request_name_result;
-
- g_type_init ();
-
- dbus_g_object_type_install_info (SM_TYPE_SERVER, &dbus_glib_sm_server_object_info);
- dbus_g_object_type_install_info (SM_TYPE_OBJECT, &dbus_glib_sm_object_object_info);
- dbus_g_error_domain_register (SM_ERROR, NULL, SM_TYPE_ERROR);
-
- mainloop = g_main_loop_new (NULL, FALSE);
-
- bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
- if (!bus)
- g_critical ("Couldn't connect to session bus: %s\n", error->message);
-
- bus_proxy = dbus_g_proxy_new_for_name (bus, "org.freedesktop.DBus",
- "/org/freedesktop/DBus",
- "org.freedesktop.DBus");
-
- if (!dbus_g_proxy_call (bus_proxy, "RequestName", &error,
- G_TYPE_STRING, "com.example.StateServer",
- G_TYPE_UINT, 0,
- G_TYPE_INVALID,
- G_TYPE_UINT, &request_name_result,
- G_TYPE_INVALID))
- g_critical ("Couldn't acquire com.example.StateServer: %s\n", error->message);
-
- server = g_object_new (SM_TYPE_SERVER, "bus", bus, NULL);
-
- dbus_g_connection_register_g_object (bus, "/com/example/StateServer", G_OBJECT (server));
-
- g_print ("StateMachine server initialized\n");
-
- g_main_loop_run (mainloop);
-
- exit (0);
-}
diff --git a/glib/examples/statemachine/statemachine-server.h b/glib/examples/statemachine/statemachine-server.h
deleted file mode 100644
index 360be3a6..00000000
--- a/glib/examples/statemachine/statemachine-server.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef _SM_SERVER_H
-#define _SM_SERVER_H
-
-#include "statemachine.h"
-#include <dbus/dbus-glib.h>
-
-typedef struct SMServer SMServer;
-typedef struct SMServerClass SMServerClass;
-
-struct SMServer
-{
- GObject parent;
-
- /* Private */
- DBusGConnection *bus;
- GHashTable *machines;
-};
-
-struct SMServerClass
-{
- GObjectClass parent;
-};
-
-#define SM_TYPE_SERVER (sm_server_get_type ())
-#define SM_SERVER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SM_TYPE_SERVER, SMServer))
-#define SM_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SM_TYPE_SERVER, SMServerClass))
-#define SM_IS_SERVER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SM_TYPE_SERVER))
-#define SM_IS_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SM_TYPE_SERVER))
-#define SM_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SM_TYPE_SERVER, SMServerClass))
-
-GType sm_server_get_type (void);
-
-gboolean sm_server_create_machine (SMServer *server, const char *name, GError **error);
-
-gboolean sm_server_get_machines (SMServer *server, GPtrArray **machines, GError **error);
-
-#endif
diff --git a/glib/examples/statemachine/statemachine-server.xml b/glib/examples/statemachine/statemachine-server.xml
deleted file mode 100644
index fe9caaf7..00000000
--- a/glib/examples/statemachine/statemachine-server.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<node name="/">
- <interface name="com.example.StateMachineServer">
- <method name="CreateMachine">
- <arg type="s" name="name" direction="in"/>
- </method>
-
- <method name="GetMachines">
- <arg type="ao" direction="out"/>
- </method>
- <signal name="MachineCreated"/>
- </interface>
-</node>
diff --git a/glib/examples/statemachine/statemachine.c b/glib/examples/statemachine/statemachine.c
deleted file mode 100644
index c94e2945..00000000
--- a/glib/examples/statemachine/statemachine.c
+++ /dev/null
@@ -1,353 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "statemachine.h"
-
-static void clear_pending_tasks (SMObject *object);
-static void state_change (SMObject *object, SMObjectState new_state);
-static void sm_object_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec);
-static void sm_object_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec);
-enum
-{
- PROP_0,
- PROP_NAME,
-};
-
-enum
-{
- STATE_CHANGED,
- ACQUISITION_FAILED,
- ACQUISITION_PROGRESS,
- LAST_SIGNAL
-};
-
-static guint sm_object_signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE(SMObject, sm_object, G_TYPE_OBJECT)
-
-static void
-sm_object_init (SMObject *obj)
-{
- obj->state = SM_OBJECT_STATE_SHUTDOWN;
-}
-
-static void
-sm_object_class_init (SMObjectClass *klass)
-{
- GObjectClass *object_class;
-
- object_class = G_OBJECT_CLASS (klass);
-
- object_class->set_property = sm_object_set_property;
- object_class->get_property = sm_object_get_property;
-
- g_object_class_install_property (object_class,
- PROP_NAME,
- g_param_spec_string ("name",
- "name",
- "name",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
- sm_object_signals[STATE_CHANGED] =
- g_signal_new ("state-changed",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
- sm_object_signals[ACQUISITION_PROGRESS] =
- g_signal_new ("acquisition-progress",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__DOUBLE,
- G_TYPE_NONE, 1, G_TYPE_DOUBLE);
- sm_object_signals[ACQUISITION_FAILED] =
- g_signal_new ("acquisition-failed",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0,
- NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-}
-
-/* This should really be standard. */
-#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC }
-
-GQuark
-sm_error_quark (void)
-{
- static GQuark ret = 0;
- if (!ret)
- ret = g_quark_from_static_string ("SMObjectErrorQuark");
- return ret;
-}
-
-GType
-sm_object_state_get_type (void)
-{
- static GType etype = 0;
-
- if (etype == 0)
- {
- static const GEnumValue values[] =
- {
-
- ENUM_ENTRY (SM_OBJECT_STATE_SHUTDOWN, "Shutdown"),
- ENUM_ENTRY (SM_OBJECT_STATE_INITIALIZED, "Loading"),
- ENUM_ENTRY (SM_OBJECT_STATE_ACQUIRED, "Acquired"),
- ENUM_ENTRY (SM_OBJECT_STATE_OPERATING, "Operating"),
- { 0, 0, 0 }
- };
-
- etype = g_enum_register_static ("SMObjectState", values);
- }
-
- return etype;
-}
-
-GType
-sm_error_get_type (void)
-{
- static GType etype = 0;
-
- if (etype == 0)
- {
- static const GEnumValue values[] =
- {
-
- ENUM_ENTRY (SM_ERROR_INVALID_STATE, "InvalidState"),
- ENUM_ENTRY (SM_ERROR_NAME_IN_USE, "NameInUse"),
- { 0, 0, 0 }
- };
-
- g_assert (SM_NUM_ERRORS == G_N_ELEMENTS (values) - 1);
-
- etype = g_enum_register_static ("SMError", values);
- }
-
- return etype;
-}
-
-static void
-sm_object_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- SMObject *sm = SM_OBJECT (object);
-
- switch (prop_id)
- {
- case PROP_NAME:
- sm->name = g_strdup (g_value_get_string (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-sm_object_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- SMObject *sm= SM_OBJECT (object);
-
- switch (prop_id)
- {
- case PROP_NAME:
- g_value_set_string (value, sm->name);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static const char *
-state_to_string (SMObjectState state)
-{
- GEnumValue *value;
- GEnumClass *prop_class;
- const char *ret;
-
- prop_class = g_type_class_ref (SM_TYPE_OBJECT_STATE);
- value = g_enum_get_value (prop_class, state);
- ret = value->value_nick;
-
- g_type_class_unref (prop_class);
- return ret;
-}
-
-static void
-queue_task (SMObject *object, guint delay, GSourceFunc func)
-{
- guint id;
- id = g_timeout_add (delay, func, object);
- object->pending_tasks = g_slist_prepend (object->pending_tasks, GUINT_TO_POINTER (id));
-}
-
-static gboolean
-idle_state_change (gpointer data)
-{
- SMObject *object = data;
-
- g_print ("doing idle state change for %s to %s\n",
- object->name, state_to_string (object->requested_state));
- state_change (object, object->requested_state);
- return FALSE;
-}
-
-static gboolean
-idle_further_acquire (gpointer data)
-{
- SMObject *object = data;
-
- g_print ("doing idle acquisition for machine %s\n", object->name);
- object->acquisition_progress += g_random_double_range (0.20, 0.7);
- if (object->acquisition_progress > 1.0)
- {
- object->acquisition_progress = 1.0;
- return FALSE;
- }
- else
- {
- g_signal_emit (object, sm_object_signals[ACQUISITION_PROGRESS], 0, object->acquisition_progress);
- return TRUE;
- }
-}
-
-static void
-clear_pending_tasks (SMObject *object)
-{
- GSList *tmp;
- for (tmp = object->pending_tasks; tmp; tmp = tmp->next)
- g_source_remove (GPOINTER_TO_UINT (tmp->data));
- g_slist_free (object->pending_tasks);
- object->pending_tasks = NULL;
-}
-
-static void
-state_change (SMObject *object, SMObjectState new_state)
-{
- g_signal_emit (object, sm_object_signals[STATE_CHANGED], 0,
- state_to_string (new_state));
-
- clear_pending_tasks (object);
-
- if (new_state == SM_OBJECT_STATE_ACQUIRED)
- {
- object->acquisition_progress = 0.0;
- queue_task (object, 1000, idle_further_acquire);
- }
- else if (new_state == SM_OBJECT_STATE_INITIALIZED)
- {
- if (g_random_int_range (0, 2) == 0)
- {
- object->requested_state = SM_OBJECT_STATE_ACQUIRED;
- queue_task (object, 3000, idle_state_change);
- }
- }
-
- object->state = new_state;
-}
-
-gboolean
-sm_object_get_info (SMObject *object, char **name, char **state, GError **error)
-{
- *name= g_strdup (object->name);
- *state = g_strdup (state_to_string (object->state));
- return TRUE;
-}
-
-gboolean
-sm_object_start (SMObject *object, GError **error)
-{
- if (object->state != SM_OBJECT_STATE_SHUTDOWN)
- {
- g_set_error (error,
- SM_ERROR,
- SM_ERROR_INVALID_STATE,
- "%s",
- "Can't start from non-shutdown state");
- return FALSE;
- }
- state_change (object, SM_OBJECT_STATE_INITIALIZED);
- return TRUE;
-}
-
-gboolean
-sm_object_shutdown (SMObject *object, GError **error)
-{
- if (object->state == SM_OBJECT_STATE_SHUTDOWN)
- {
- g_set_error (error,
- SM_ERROR,
- SM_ERROR_INVALID_STATE,
- "%s",
- "Can't shutdown from shutdown state");
- return FALSE;
- }
- state_change (object, SM_OBJECT_STATE_SHUTDOWN);
- return TRUE;
-}
-
-gboolean
-sm_object_reinitialize (SMObject *object, GError **error)
-{
- if (object->state != SM_OBJECT_STATE_ACQUIRED
- && object->state != SM_OBJECT_STATE_OPERATING)
- {
- g_set_error (error,
- SM_ERROR,
- SM_ERROR_INVALID_STATE,
- "Can't reinitialize from state %d",
- object->state);
- return FALSE;
- }
- state_change (object, SM_OBJECT_STATE_INITIALIZED);
- return TRUE;
-}
-
-gboolean
-sm_object_reacquire (SMObject *object, GError **error)
-{
- if (object->state == SM_OBJECT_STATE_ACQUIRED)
- {
- g_set_error (error,
- SM_ERROR,
- SM_ERROR_INVALID_STATE,
- "Can't reacquire from state %d",
- object->state);
- return FALSE;
- }
- state_change (object, SM_OBJECT_STATE_ACQUIRED);
- return TRUE;
-}
-
-gboolean
-sm_object_get_acquiring_progress (SMObject *object, gdouble *out, GError **error)
-{
- if (object->state != SM_OBJECT_STATE_ACQUIRED)
- {
- g_set_error (error,
- SM_ERROR,
- SM_ERROR_INVALID_STATE,
- "Can't get progress from state %d",
- object->state);
- return FALSE;
- }
- *out = object->acquisition_progress;
- return TRUE;
-}
diff --git a/glib/examples/statemachine/statemachine.h b/glib/examples/statemachine/statemachine.h
deleted file mode 100644
index ac6047bd..00000000
--- a/glib/examples/statemachine/statemachine.h
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef _SM_OBJECT_H
-#define _SM_OBJECT_H
-
-#include <glib.h>
-#include <glib-object.h>
-
-GQuark sm_error_quark (void);
-
-#define SM_ERROR (sm_error_quark ())
-
-typedef enum
-{
- SM_ERROR_INVALID_STATE = 0,
- SM_ERROR_NAME_IN_USE,
- SM_NUM_ERRORS
-} SMError;
-
-GType sm_error_get_type (void);
-#define SM_TYPE_ERROR (sm_error_get_type ())
-
-typedef enum
-{
- SM_OBJECT_STATE_SHUTDOWN = 0,
- SM_OBJECT_STATE_INITIALIZED,
- SM_OBJECT_STATE_ACQUIRED,
- SM_OBJECT_STATE_OPERATING,
- SM_OBJECT_NUM_STATES
-} SMObjectState;
-
-GType sm_object_state_get_type (void);
-
-#define SM_TYPE_OBJECT_STATE (sm_object_state_get_type ())
-
-typedef struct SMObject SMObject;
-typedef struct SMObjectClass SMObjectClass;
-
-struct SMObject
-{
- GObject parent;
-
- /* Private */
- char *name;
- SMObjectState state;
- double acquisition_progress;
-
- GSList /* guint */ *pending_tasks;
-
- SMObjectState requested_state;
-};
-
-struct SMObjectClass
-{
- GObjectClass parent;
-};
-
-#define SM_TYPE_OBJECT (sm_object_get_type ())
-#define SM_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SM_TYPE_OBJECT, SMObject))
-#define SM_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SM_TYPE_OBJECT, SMObjectClass))
-#define SM_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SM_TYPE_OBJECT))
-#define SM_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SM_TYPE_OBJECT))
-#define SM_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SM_TYPE_OBJECT, SMObjectClass))
-
-GType sm_object_get_type (void);
-
-gboolean sm_object_get_info (SMObject *object, char **name, char **state, GError **error);
-
-gboolean sm_object_start (SMObject *object, GError **error);
-
-gboolean sm_object_shutdown (SMObject *object, GError **error);
-
-gboolean sm_object_reinitialize (SMObject *object, GError **error);
-
-gboolean sm_object_reacquire (SMObject *object, GError **error);
-
-gboolean sm_object_get_acquiring_progress (SMObject *object, gdouble *out, GError **error);
-
-#endif
diff --git a/glib/examples/statemachine/statemachine.xml b/glib/examples/statemachine/statemachine.xml
deleted file mode 100644
index c375ef1b..00000000
--- a/glib/examples/statemachine/statemachine.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<node name="/">
- <interface name="com.example.StateMachine">
-
- <method name="GetInfo">
- <arg type="s" name="name" direction="out"/>
- <arg type="s" name="state" direction="out"/>
- </method>
-
- <method name="Start">
- </method>
-
- <method name="Shutdown">
- </method>
-
- <method name="Reinitialize">
- </method>
-
- <method name="Reacquire">
- </method>
-
- <method name="GetAcquiringProgress">
- <arg type="d" direction="out"/>
- </method>
-
- <!-- Mark the signals as exported -->
- <signal name="StateChanged"/>
- <signal name="AcquisitionFailed"/>
- <signal name="AcquisitionProgress"/>
-
- </interface>
-</node>