From a929c9a3b465db8b7e17b9b39936c612c2621a7c Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Fri, 14 Jul 2006 16:20:12 +0000 Subject: * Remove all bindings --- glib/examples/statemachine/statemachine.c | 353 ------------------------------ 1 file changed, 353 deletions(-) delete mode 100644 glib/examples/statemachine/statemachine.c (limited to 'glib/examples/statemachine/statemachine.c') 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 -#include -#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; -} -- cgit