[Galago-commits] r1975 - in branches/libgalago/glib-port: .
libgalago
galago-commits at freedesktop.org
galago-commits at freedesktop.org
Wed Jun 22 23:19:59 PDT 2005
Author: chipx86
Date: 2005-06-22 23:19:57 -0700 (Wed, 22 Jun 2005)
New Revision: 1975
Modified:
branches/libgalago/glib-port/ChangeLog
branches/libgalago/glib-port/libgalago/galago-service.c
branches/libgalago/glib-port/libgalago/galago-service.h
Log:
Make GalagoService compile. Won't work, though. Not right at least.
Modified: branches/libgalago/glib-port/ChangeLog
===================================================================
--- branches/libgalago/glib-port/ChangeLog 2005-06-23 06:16:24 UTC (rev 1974)
+++ branches/libgalago/glib-port/ChangeLog 2005-06-23 06:19:57 UTC (rev 1975)
@@ -1,3 +1,9 @@
+Wed Jun 22 23:18:51 PDT 2005 Christian Hammond <chipx86 at chipx86.com>
+
+ * libgalago/galago-service.c:
+ * libgalago/galago-service.h:
+ - Make GalagoService compile. Won't work, though. Not right at least.
+
Wed Jun 22 23:13:13 PDT 2005 Christian Hammond <chipx86 at chipx86.com>
* libgalago/galago-value.c:
Modified: branches/libgalago/glib-port/libgalago/galago-service.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-service.c 2005-06-23 06:16:24 UTC (rev 1974)
+++ branches/libgalago/glib-port/libgalago/galago-service.c 2005-06-23 06:19:57 UTC (rev 1975)
@@ -42,6 +42,13 @@
GList *accounts;
};
+enum
+{
+ ACCOUNT_ADDED,
+ ACCOUNT_REMOVED,
+ LAST_SIGNAL
+};
+
static GalagoService *_galago_service_new_common(const char *id,
const char *name,
gboolean native,
@@ -55,12 +62,57 @@
/**************************************************************************
* Object/Class support
**************************************************************************/
-GALAGO_REGISTER_CLASS(galago_service, GalagoService, NULL,
- GALAGO_DBUS_SERVICE_INTERFACE);
+static void galago_service_finalize(GObject *gobject);
+static void galago_service_dbus_message_append(DBusMessageIter *iter,
+ const GalagoObject *object);
+static void *galago_service_dbus_message_get(DBusMessageIter *iter);
+static void galago_service_dbus_push_full(GalagoObject *object);
+static GalagoObjectClass *parent_class = NULL;
+static guint signals[LAST_SIGNAL] = {0};
+
+G_DEFINE_TYPE(GalagoService, galago_service, GALAGO_TYPE_OBJECT);
+
static void
-galago_service_object_init(GalagoService *service)
+galago_service_class_init(GalagoServiceClass *klass)
{
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+ GalagoObjectClass *object_class = GALAGO_OBJECT_CLASS(klass);
+
+ parent_class = g_type_class_peek_parent(klass);
+
+ object_class->dbus_interface = GALAGO_DBUS_SERVICE_INTERFACE;
+
+ gobject_class->finalize = galago_service_finalize;
+
+ object_class->dbus_message_append = galago_service_dbus_message_append;
+ object_class->dbus_message_get = galago_service_dbus_message_get;
+ object_class->dbus_push_full = galago_service_dbus_push_full;
+
+ signals[ACCOUNT_ADDED] =
+ g_signal_new("account-added",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoServiceClass, account_added),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+
+ signals[ACCOUNT_REMOVED] =
+ g_signal_new("account-removed",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoServiceClass, account_removed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+}
+
+static void
+galago_service_init(GalagoService *service)
+{
service->priv = g_new0(GalagoServicePrivate, 1);
service->priv->accounts_table =
@@ -68,7 +120,7 @@
}
static void
-galago_service_object_finalize(GalagoObject *object)
+galago_service_finalize(GObject *object)
{
GalagoService *service = (GalagoService *)object;
@@ -81,7 +133,7 @@
g_hash_table_destroy(service->priv->accounts_table);
- galago_context_push(galago_object_get_context(service));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
galago_context_remove_service(service);
galago_context_pop();
@@ -92,6 +144,8 @@
g_free(service->priv->name);
g_free(service->priv);
+
+ G_OBJECT_CLASS(parent_class)->finalize(object);
}
static void
@@ -102,7 +156,7 @@
const char *obj_path, *id, *name;
dbus_uint32_t flags;
- obj_path = galago_object_get_dbus_path(service);
+ obj_path = galago_object_get_dbus_path(GALAGO_OBJECT(service));
id = galago_service_get_id(service);
name = galago_service_get_name(service);
flags = galago_service_get_flags(service);
@@ -169,24 +223,7 @@
}
}
-static void
-galago_service_class_init(GalagoObjectClass *klass)
-{
- klass->finalize = galago_service_object_finalize;
- klass->dbus_message_append = galago_service_dbus_message_append;
- klass->dbus_message_get = galago_service_dbus_message_get;
- klass->dbus_push_full = galago_service_dbus_push_full;
- galago_signal_register(klass->signal_context, "account-added",
- galago_marshal_VOID__BOXED, 1,
- GALAGO_VALUE_TYPE_OBJECT);
- galago_signal_register(klass->signal_context, "account-removed",
- galago_marshal_VOID__BOXED, 1,
- GALAGO_VALUE_TYPE_OBJECT);
- galago_signal_register(klass->signal_context, "updated",
- galago_marshal_VOID, 0);
-}
-
/**************************************************************************
* GalagoService API
**************************************************************************/
@@ -288,7 +325,7 @@
{
const char *obj_prefix;
- service = galago_object_new(GALAGO_TYPE_SERVICE);
+ service = g_object_new(GALAGO_TYPE_SERVICE, NULL);
service->priv->id = g_strdup(id);
service->priv->name = g_strdup(name);
@@ -298,7 +335,7 @@
if (obj_path != NULL)
{
/* Assumes an escaped path already */
- galago_object_set_dbus_path(service, obj_path);
+ galago_object_set_dbus_path(GALAGO_OBJECT(service), obj_path);
}
else if ((obj_prefix = galago_context_get_obj_path_prefix()) != NULL)
{
@@ -313,7 +350,7 @@
snprintf(new_obj_path, len, "%s/services/%s", obj_prefix,
escaped_id);
- galago_object_set_dbus_path(service, new_obj_path);
+ galago_object_set_dbus_path(GALAGO_OBJECT(service), new_obj_path);
g_free(new_obj_path);
}
@@ -388,17 +425,16 @@
!galago_service_is_native(service) && !galago_is_daemon() &&
galago_is_connected())
{
- GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(service);
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
- galago_context_push(galago_object_get_context(service));
- galago_signal_context_freeze(signal_context);
+ /* TODO: Freeze signals */
account = galago_dbus_send_message_with_reply(service, "GetAccount",
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, NULL, GALAGO_TYPE_ACCOUNT),
+ galago_value_new_object(GALAGO_TYPE_ACCOUNT, NULL),
galago_value_new(GALAGO_VALUE_TYPE_STRING, &username, NULL),
NULL);
- galago_signal_context_thaw(signal_context);
+ /* TODO: Thaw signals */
galago_context_pop();
}
@@ -414,19 +450,18 @@
if (query && !galago_service_is_native(service) && !galago_is_daemon() &&
galago_is_connected())
{
- GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(service);
GList *temp;
- galago_context_push(galago_object_get_context(service));
- galago_signal_context_freeze(signal_context);
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
+ /* TODO: Freeze signals. */
temp = galago_dbus_send_message_with_reply(service, "GetAccounts",
galago_value_new_list(GALAGO_VALUE_TYPE_OBJECT, NULL,
- GALAGO_TYPE_ACCOUNT),
+ (void *)GALAGO_TYPE_ACCOUNT),
NULL);
g_list_free(temp);
- galago_signal_context_thaw(signal_context);
+ /* TODO: Thaw signals. */
galago_context_pop();
}
@@ -462,8 +497,7 @@
if (galago_service_is_native(service))
_galago_dbus_service_add_account(service, account);
- galago_signal_emit(service, "account-added", account);
- galago_signal_emit(service, "updated");
+ g_signal_emit(service, signals[ACCOUNT_ADDED], 0, account);
}
void
@@ -488,12 +522,11 @@
{
galago_dbus_send_message(service, "RemoveAccount",
galago_value_new(GALAGO_VALUE_TYPE_OBJECT, &account,
- GALAGO_TYPE_ACCOUNT),
+ (void *)GALAGO_TYPE_ACCOUNT),
NULL);
}
- galago_signal_emit(service, "account-removed", account);
- galago_signal_emit(service, "updated");
+ g_signal_emit(service, signals[ACCOUNT_REMOVED], 0, account);
}
const char *
@@ -550,6 +583,6 @@
return;
galago_dbus_send_message(service, "AddAccount",
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, &account, GALAGO_TYPE_ACCOUNT),
+ galago_value_new_object(GALAGO_TYPE_ACCOUNT, G_OBJECT(account)),
NULL);
}
Modified: branches/libgalago/glib-port/libgalago/galago-service.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-service.h 2005-06-23 06:16:24 UTC (rev 1974)
+++ branches/libgalago/glib-port/libgalago/galago-service.h 2005-06-23 06:19:57 UTC (rev 1975)
@@ -61,15 +61,29 @@
{
GalagoObjectClass parent_class;
+ /* Signals */
+ void (*account_added)(GalagoService *service, GalagoAccount *account);
+ void (*account_removed)(GalagoService *service, GalagoAccount *account);
+
void (*reserved_1)(void);
void (*reserved_2)(void);
void (*reserved_3)(void);
void (*reserved_4)(void);
};
-#define GALAGO_TYPE_SERVICE (galago_service_get_class())
+#define GALAGO_TYPE_SERVICE (galago_service_get_type())
+#define GALAGO_SERVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GALAGO_TYPE_SERVICE, GalagoService))
+#define GALAGO_SERVICE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GALAGO_TYPE_SERVICE, GalagoServiceClass))
+#define GALAGO_IS_SERVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GALAGO_TYPE_SERVICE))
+#define GALAGO_IS_SERVICE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GALAGO_TYPE_SERVICE))
+#define GALAGO_SERVICE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), GALAGO_TYPE_SERVICE, GalagoServiceClass))
+
#define GALAGO_DBUS_SERVICE_INTERFACE "org.freedesktop.Galago.Service"
-#define GALAGO_IS_SERVICE(obj) (GALAGO_IS_OBJECT(obj) && galago_object_check_cast((obj), GALAGO_TYPE_SERVICE))
#ifdef __cplusplus
extern "C" {
@@ -101,11 +115,11 @@
/*@{*/
/**
- * Returns the class for a GalagoService.
+ * Returns GalagoService's GType.
*
- * @return The GalagoService class.
+ * @return The GType.
*/
-GalagoObjectClass *galago_service_get_class(void);
+GType galago_service_get_type(void);
/**
* Creates a service.
More information about the galago-commits
mailing list