[Galago-commits] r1980 - in branches/libgalago/glib-port: .
libgalago tests
galago-commits at freedesktop.org
galago-commits at freedesktop.org
Thu Jun 23 21:02:11 PDT 2005
Author: chipx86
Date: 2005-06-23 21:01:51 -0700 (Thu, 23 Jun 2005)
New Revision: 1980
Modified:
branches/libgalago/glib-port/ChangeLog
branches/libgalago/glib-port/libgalago/galago-account.c
branches/libgalago/glib-port/libgalago/galago-account.h
branches/libgalago/glib-port/libgalago/galago-avatar.c
branches/libgalago/glib-port/libgalago/galago-core.c
branches/libgalago/glib-port/libgalago/galago-dbus-compat.h
branches/libgalago/glib-port/libgalago/galago-dbus.c
branches/libgalago/glib-port/libgalago/galago-dbus.h
branches/libgalago/glib-port/libgalago/galago-object.c
branches/libgalago/glib-port/libgalago/galago-person.c
branches/libgalago/glib-port/libgalago/galago-person.h
branches/libgalago/glib-port/libgalago/galago-photo.c
branches/libgalago/glib-port/libgalago/galago-presence.c
branches/libgalago/glib-port/libgalago/galago.h
branches/libgalago/glib-port/tests/check-libgalago.c
branches/libgalago/glib-port/tests/get-presence.c
branches/libgalago/glib-port/tests/monitor.c
Log:
The good thing about ending up in the wrong city and being on the bus for three hours is that you end up getting a lot of work done.
Modified: branches/libgalago/glib-port/ChangeLog
===================================================================
--- branches/libgalago/glib-port/ChangeLog 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/ChangeLog 2005-06-24 04:01:51 UTC (rev 1980)
@@ -1,3 +1,23 @@
+Thu Jun 23 21:00:24 PDT 2005 Christian Hammond <chipx86 at chipx86.com>
+
+ * libgalago/galago-account.c:
+ * libgalago/galago-account.h:
+ * libgalago/galago-avatar.c:
+ * libgalago/galago-core.c:
+ * libgalago/galago-dbus.c:
+ * libgalago/galago-dbus-compat.h:
+ * libgalago/galago-dbus.h:
+ * libgalago/galago.h:
+ * libgalago/galago-object.c:
+ * libgalago/galago-person.c:
+ * libgalago/galago-person.h:
+ * libgalago/galago-photo.c:
+ * libgalago/galago-presence.c:
+ * tests/check-libgalago.c:
+ * tests/get-presence.c:
+ * tests/monitor.c:
+ - libgalago now compiles.
+
Thu Jun 23 01:20:58 PDT 2005 Christian Hammond <chipx86 at chipx86.com>
* libgalago/Makefile.am:
Modified: branches/libgalago/glib-port/libgalago/galago-account.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-account.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-account.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -84,7 +84,7 @@
parent_class = g_type_class_peek_parent(klass);
- object_class->dbus_interface = GALAGO_DBUS_AVATAR_INTERFACE;
+ object_class->dbus_interface = GALAGO_DBUS_ACCOUNT_INTERFACE;
gobject_class->finalize = galago_account_finalize;
@@ -225,11 +225,11 @@
/* Service */
galago_dbus_message_iter_append_object(iter,
- galago_account_get_service(account));
+ GALAGO_OBJECT(galago_account_get_service(account)));
/* Person */
galago_dbus_message_iter_append_object(iter,
- galago_account_get_person(account));
+ GALAGO_OBJECT(galago_account_get_person(account)));
/* Username */
username = galago_account_get_username(account);
Modified: branches/libgalago/glib-port/libgalago/galago-account.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-account.h 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-account.h 2005-06-24 04:01:51 UTC (rev 1980)
@@ -80,6 +80,8 @@
#define GALAGO_ACCOUNT_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS((obj), GALAGO_TYPE_ACCOUNT, GalagoAccountClass))
+#define GALAGO_DBUS_ACCOUNT_INTERFACE "org.freedesktop.Galago.Account"
+
#ifdef __cplusplus
extern "C" {
#endif
Modified: branches/libgalago/glib-port/libgalago/galago-avatar.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-avatar.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-avatar.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -92,7 +92,7 @@
size_t image_len;
galago_dbus_message_iter_append_object(iter,
- galago_avatar_get_account(avatar));
+ GALAGO_OBJECT(galago_avatar_get_account(avatar)));
galago_avatar_get_image_data(avatar, &image_data, &image_len);
galago_dbus_message_iter_append_byte_array(iter, image_data, image_len);
Modified: branches/libgalago/glib-port/libgalago/galago-core.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-core.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-core.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -64,8 +64,27 @@
{
GalagoObjectClass parent_class;
+ /* Signals */
+ void (*registered)(GalagoCore *core);
+ void (*unregistered)(GalagoCore *core);
+ void (*service_added)(GalagoCore *core, GalagoService *service);
+ void (*service_removed)(GalagoCore *core, GalagoService *service);
+ void (*person_added)(GalagoCore *core, GalagoPerson *person);
+ void (*person_removed)(GalagoCore *core, GalagoPerson *person);
+
} GalagoCoreClass;
+enum
+{
+ REGISTERED,
+ UNREGISTERED,
+ SERVICE_ADDED,
+ SERVICE_REMOVED,
+ PERSON_ADDED,
+ PERSON_REMOVED,
+ LAST_SIGNAL
+};
+
#define GALAGO_DAEMON_ID "#galago-daemon#"
static void _galago_core_disconnect(void);
@@ -79,17 +98,6 @@
static GalagoCore *_core = NULL;
static gboolean first_init = TRUE;
-/* D-BUS compatibility */
-typedef dbus_bool_t (*StartServiceFunc)(DBusConnection *, const char *,
- dbus_uint32_t, dbus_uint32_t *,
- DBusError *);
-
-#if GALAGO_CHECK_DBUS_VERSION(0, 30)
-StartServiceFunc start_service = dbus_bus_start_service_by_name;
-#else
-StartServiceFunc start_service = dbus_bus_activate_service;
-#endif
-
static GalagoContextOps context_ops =
{
_galago_dbus_core_add_service,
@@ -101,40 +109,111 @@
/**************************************************************************
* Object/Class support
**************************************************************************/
-#define GALAGO_TYPE_CORE (galago_core_get_class())
+static void galago_core_finalize(GObject *gobject);
-GALAGO_REGISTER_CLASS(galago_core, GalagoCore, NULL,
- GALAGO_DBUS_CORE_INTERFACE);
+static GalagoObjectClass *parent_class = NULL;
+static guint signals[LAST_SIGNAL] = {0};
+#define GALAGO_TYPE_CORE (galago_core_get_type())
+
+G_DEFINE_TYPE(GalagoCore, galago_core, GALAGO_TYPE_OBJECT);
+
static void
-galago_core_object_init(GalagoCore *core)
+galago_core_class_init(GalagoCoreClass *klass)
{
- _core = core;
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+ GalagoObjectClass *object_class = GALAGO_OBJECT_CLASS(klass);
- galago_object_set_dbus_path(core, GALAGO_DBUS_CORE_OBJECT);
+ parent_class = g_type_class_peek_parent(klass);
- galago_signals_init();
+ object_class->dbus_interface = GALAGO_DBUS_CORE_INTERFACE;
+
+ gobject_class->finalize = galago_core_finalize;
+
+ signals[REGISTERED] =
+ g_signal_new("registered",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoCoreClass, registered),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[UNREGISTERED] =
+ g_signal_new("unregistered",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoCoreClass, unregistered),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[SERVICE_ADDED] =
+ g_signal_new("service_added",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoCoreClass, service_added),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+
+ signals[SERVICE_REMOVED] =
+ g_signal_new("service_removed",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoCoreClass, service_removed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+
+ signals[PERSON_ADDED] =
+ g_signal_new("person_added",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoCoreClass, person_added),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+
+ signals[PERSON_REMOVED] =
+ g_signal_new("person_removed",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoCoreClass, person_removed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
}
static void
-galago_core_object_finalize(GalagoObject *object)
+galago_core_init(GalagoCore *core)
{
+ _core = core;
+
+ galago_object_set_dbus_path(GALAGO_OBJECT(core), GALAGO_DBUS_CORE_OBJECT);
+}
+
+static void
+galago_core_finalize(GObject *object)
+{
GalagoContext *context;
_galago_core_disconnect();
/*
- * Hack to prevent this object from beign removed from the
- * soon-to-be destroyed context after this function ends.
+ * Prevent this object from beign removed from the soon-to-be
+ * destroyed context after this function ends.
*/
- galago_object_set_dbus_path(object, NULL);
+ galago_object_set_dbus_path(GALAGO_OBJECT(object), NULL);
context = galago_context_get();
galago_context_pop();
galago_context_destroy(context);
- galago_signals_uninit();
-
if (_core->app_name != NULL)
g_free(_core->app_name);
@@ -143,31 +222,8 @@
if (_core->conn_obj_path != NULL)
g_free(_core->conn_obj_path);
-}
-static void
-galago_core_class_init(GalagoObjectClass *klass)
-{
- klass->finalize = galago_core_object_finalize;
-
- galago_signal_register(klass->signal_context, "registered",
- galago_marshal_VOID, 0);
- galago_signal_register(klass->signal_context, "unregistered",
- galago_marshal_VOID, 0);
- galago_signal_register(klass->signal_context, "service-added",
- galago_marshal_VOID__BOXED, 1,
- GALAGO_VALUE_TYPE_OBJECT);
- galago_signal_register(klass->signal_context, "service-removed",
- galago_marshal_VOID__BOXED, 1,
- GALAGO_VALUE_TYPE_OBJECT);
- galago_signal_register(klass->signal_context, "person-added",
- galago_marshal_VOID__BOXED, 1,
- GALAGO_VALUE_TYPE_OBJECT);
- galago_signal_register(klass->signal_context, "person-removed",
- galago_marshal_VOID__BOXED, 1,
- GALAGO_VALUE_TYPE_OBJECT);
- galago_signal_register(klass->signal_context, "updated",
- galago_marshal_VOID, 0);
+ G_OBJECT_CLASS(parent_class)->finalize(object);
}
/**************************************************************************
@@ -227,13 +283,14 @@
_core->daemon_active = FALSE;
_core->registered = FALSE;
- galago_signal_emit(_core, "unregistered");
+ g_signal_emit(_core, signals[UNREGISTERED], 0);
}
dbus_error_init(&error);
- if (!start_service(_core->dbus_conn, GALAGO_DBUS_SERVICE, 0, NULL,
- &error))
+ if (!dbus_bus_start_service_by_name(_core->dbus_conn,
+ GALAGO_DBUS_SERVICE, 0, NULL,
+ &error))
{
galago_log_error("Received ServiceDoesNotExist, and cannot "
"re-activate daemon. Disconnecting for now.\n");
@@ -306,7 +363,7 @@
_core->daemon_active = FALSE;
_core->registered = FALSE;
- galago_signal_emit(_core, "unregistered");
+ g_signal_emit(_core, signals[UNREGISTERED], 0);
if (galago_core_get_exit_with_daemon())
{
@@ -683,7 +740,8 @@
return TRUE;
}
- if (!start_service(_core->dbus_conn, GALAGO_DBUS_SERVICE, 0, NULL, &error))
+ if (!dbus_bus_start_service_by_name(_core->dbus_conn, GALAGO_DBUS_SERVICE,
+ 0, NULL, &error))
{
galago_log_error("Error activating Galago service: %s\n",
error.message);
@@ -760,7 +818,7 @@
_core->registered = FALSE;
if (!unregistered_emitted)
- galago_signal_emit(_core, "unregistered");
+ g_signal_emit(_core, signals[UNREGISTERED], 0);
}
#ifdef HAVE_SIGNAL_H
@@ -785,7 +843,7 @@
if (_core != NULL)
{
- galago_object_ref(_core);
+ g_object_ref(_core);
return TRUE;
}
@@ -795,7 +853,7 @@
galago_context_push(context);
- _core = galago_object_new(GALAGO_TYPE_CORE);
+ _core = g_object_new(GALAGO_TYPE_CORE, NULL);
_core->app_name = g_strdup(name);
_core->feed = feed;
@@ -849,7 +907,8 @@
if (!galago_is_initted())
return;
- _core = g_object_unref(_core);
+ /* TODO: Will need to check if the object has been finalized somewhere. */
+ g_object_unref(_core);
}
gboolean
@@ -1019,7 +1078,7 @@
g_return_if_fail(galago_is_initted());
g_return_if_fail(service != NULL);
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
galago_context_add_service(service);
galago_context_pop();
}
@@ -1030,7 +1089,7 @@
g_return_if_fail(galago_is_initted());
g_return_if_fail(service != NULL);
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
galago_context_remove_service(service);
galago_context_pop();
}
@@ -1043,21 +1102,19 @@
g_return_val_if_fail(galago_is_initted(), NULL);
g_return_val_if_fail(id != NULL, NULL);
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
service = galago_context_get_service(id, native);
if (query && service == NULL && !native && !galago_is_daemon() &&
galago_is_connected())
{
- GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(_core);
-
- galago_signal_context_freeze(signal_context);
+ /* TODO: Freeze signals */
service = galago_dbus_send_message_with_reply(_core, "GetService",
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, NULL, GALAGO_TYPE_SERVICE),
+ galago_value_new_object(GALAGO_TYPE_SERVICE, NULL),
galago_value_new(GALAGO_VALUE_TYPE_STRING, &id, NULL),
NULL);
- galago_signal_context_thaw(signal_context);
+ /* TODO: Thaw signals */
}
galago_context_pop();
@@ -1070,25 +1127,24 @@
{
GList *services;
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
services = galago_context_get_services(native);
if (query && !native && !galago_is_daemon() && galago_is_connected())
{
- GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(_core);
GList *temp;
- galago_signal_context_freeze(signal_context);
+ /* TODO: Freeze signals */
temp = galago_dbus_send_message_with_reply(_core, "GetServices",
galago_value_new_list(GALAGO_VALUE_TYPE_OBJECT, NULL,
- GALAGO_TYPE_SERVICE),
+ (void *)GALAGO_TYPE_SERVICE),
NULL);
g_list_free(temp);
services = galago_context_get_services(native);
- galago_signal_context_thaw(signal_context);
+ /* TODO: Thaw signals */
}
galago_context_pop();
@@ -1102,7 +1158,7 @@
g_return_if_fail(galago_is_initted());
g_return_if_fail(person != NULL);
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
galago_context_add_person(person);
galago_context_pop();
}
@@ -1113,7 +1169,7 @@
g_return_if_fail(galago_is_initted());
g_return_if_fail(person != NULL);
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
galago_context_remove_person(person);
galago_context_pop();
}
@@ -1126,21 +1182,19 @@
g_return_val_if_fail(galago_is_initted(), NULL);
g_return_val_if_fail(id != NULL, NULL);
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
person = galago_context_get_person(id, native);
if (query && person == NULL && !native && !galago_is_daemon() &&
galago_is_connected())
{
- GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(_core);
-
- galago_signal_context_freeze(signal_context);
+ /* TODO: Freeze signals */
person = galago_dbus_send_message_with_reply(_core, "GetPerson",
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, NULL, GALAGO_TYPE_PERSON),
+ galago_value_new_object(GALAGO_TYPE_PERSON, NULL),
galago_value_new(GALAGO_VALUE_TYPE_STRING, &id, NULL),
NULL);
- galago_signal_context_thaw(signal_context);
+ /* TODO: Thaw signals */
}
galago_context_pop();
@@ -1153,25 +1207,24 @@
{
GList *people;
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
people = galago_context_get_people(native);
if (query && !native && !galago_is_daemon() && galago_is_connected())
{
- GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(_core);
GList *temp;
- galago_signal_context_freeze(signal_context);
+ /* TODO: Freeze signals */
temp = galago_dbus_send_message_with_reply(_core, "GetPeople",
galago_value_new_list(GALAGO_VALUE_TYPE_OBJECT, NULL,
- GALAGO_TYPE_PERSON),
+ (void *)GALAGO_TYPE_PERSON),
NULL);
g_list_free(temp);
people = galago_context_get_people(native);
- galago_signal_context_thaw(signal_context);
+ /* TODO: Thaw signals */
}
galago_context_pop();
@@ -1186,20 +1239,18 @@
g_return_val_if_fail(galago_is_initted(), NULL);
- galago_context_push(galago_object_get_context(_core));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(_core)));
me = galago_core_get_person(GALAGO_ME_ID, native, FALSE);
if (query && me == NULL && !native && !galago_is_daemon() &&
galago_is_connected())
{
- GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(_core);
-
- galago_signal_context_freeze(signal_context);
+ /* TODO: Freeze signals */
me = galago_dbus_send_message_with_reply(_core, "GetMe",
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, NULL, GALAGO_TYPE_PERSON),
+ galago_value_new_object(GALAGO_TYPE_PERSON, NULL),
NULL);
- galago_signal_context_thaw(signal_context);
+ /* TODO: Thaw signals */
}
galago_context_pop();
@@ -1256,7 +1307,7 @@
galago_core_set_watch_all(TRUE);
_core->registered = TRUE;
- galago_signal_emit(_core, "registered");
+ g_signal_emit(_core, signals[REGISTERED], 0);
return TRUE;
}
@@ -1277,7 +1328,7 @@
_core->registered = FALSE;
- galago_signal_emit(_core, "unregistered");
+ g_signal_emit(_core, signals[UNREGISTERED], 0);
}
static void
@@ -1287,8 +1338,7 @@
DBusMessage *message;
DBusMessageIter iter;
- galago_signal_emit(_core, "service-added", service);
- galago_signal_emit(_core, "updated");
+ g_signal_emit(_core, signals[SERVICE_ADDED], 0, service);
if (!galago_is_connected() || !galago_core_is_feed() ||
!galago_service_is_native(service))
@@ -1308,7 +1358,7 @@
dbus_message_set_no_reply(message, TRUE);
dbus_message_iter_init_append(message, &iter);
- galago_dbus_message_iter_append_object(&iter, service);
+ galago_dbus_message_iter_append_object(&iter, GALAGO_OBJECT(service));
dbus_connection_send(dbus_conn, message, NULL);
dbus_message_unref(message);
@@ -1321,8 +1371,7 @@
DBusMessage *message;
DBusMessageIter iter;
- galago_signal_emit(_core, "service-removed", service);
- galago_signal_emit(_core, "updated");
+ g_signal_emit(_core, signals[SERVICE_REMOVED], 0, service);
if (!galago_is_connected() || !galago_core_is_feed() ||
!galago_service_is_native(service))
@@ -1342,7 +1391,7 @@
dbus_message_set_no_reply(message, TRUE);
dbus_message_iter_init_append(message, &iter);
- galago_dbus_message_iter_append_object(&iter, service);
+ galago_dbus_message_iter_append_object(&iter, GALAGO_OBJECT(service));
dbus_connection_send(dbus_conn, message, NULL);
dbus_message_unref(message);
@@ -1355,8 +1404,7 @@
DBusMessage *message;
DBusMessageIter iter;
- galago_signal_emit(_core, "person-added", person);
- galago_signal_emit(_core, "updated");
+ g_signal_emit(_core, signals[PERSON_ADDED], 0, person);
if (!galago_is_connected() || !galago_core_is_feed() ||
!galago_person_is_native(person))
@@ -1376,7 +1424,7 @@
dbus_message_set_no_reply(message, TRUE);
dbus_message_iter_init_append(message, &iter);
- galago_dbus_message_iter_append_object(&iter, person);
+ galago_dbus_message_iter_append_object(&iter, GALAGO_OBJECT(person));
dbus_connection_send(dbus_conn, message, NULL);
dbus_message_unref(message);
@@ -1389,8 +1437,7 @@
DBusMessage *message;
DBusMessageIter iter;
- galago_signal_emit(_core, "person-removed", person);
- galago_signal_emit(_core, "updated");
+ g_signal_emit(_core, signals[PERSON_REMOVED], 0, person);
if (!galago_is_connected() || !galago_core_is_feed() ||
!galago_person_is_native(person))
@@ -1410,7 +1457,7 @@
dbus_message_set_no_reply(message, TRUE);
dbus_message_iter_init_append(message, &iter);
- galago_dbus_message_iter_append_object(&iter, person);
+ galago_dbus_message_iter_append_object(&iter, GALAGO_OBJECT(person));
dbus_connection_send(dbus_conn, message, NULL);
dbus_message_unref(message);
Modified: branches/libgalago/glib-port/libgalago/galago-dbus-compat.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-dbus-compat.h 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-dbus-compat.h 2005-06-24 04:01:51 UTC (rev 1980)
@@ -87,6 +87,8 @@
# define dbus_message_iter_init_append(msg, iter) \
dbus_message_iter_init(msg, iter)
+# define dbus_bus_start_service_by_name(dbus_conn, service, flags, reply, error) \
+ dbus_bus_activate_service((dbus_conn), (service), (flags), (reply), (error))
# define galago_dbus_message_iter_append_byte(iter, val) \
dbus_message_iter_append_byte((iter), (val))
Modified: branches/libgalago/glib-port/libgalago/galago-dbus.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-dbus.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-dbus.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -61,14 +61,14 @@
void
galago_dbus_message_iter_append_object(DBusMessageIter *iter,
- const void *object)
+ const GalagoObject *object)
{
GalagoObjectClass *klass;
g_return_if_fail(iter != NULL);
g_return_if_fail(object != NULL && GALAGO_IS_OBJECT(object));
- klass = GALAGO_OBJECT_CLASS(object);
+ klass = GALAGO_OBJECT_GET_CLASS(object);
if (klass->dbus_message_append != NULL)
{
@@ -88,7 +88,7 @@
galago_log_error("Class type %s passed to "
"galago_dbus_message_iter_append_object does not "
"implement dbus_message_append!\n",
- galago_class_get_name(klass));
+ g_type_name(G_OBJECT_CLASS_TYPE(klass)));
}
}
@@ -135,22 +135,26 @@
}
void *
-galago_dbus_message_iter_get_object(DBusMessageIter *iter, GType *type)
+galago_dbus_message_iter_get_object(DBusMessageIter *iter, GType type)
{
GalagoObject *object;
+ GalagoObjectClass *klass;
#if GALAGO_CHECK_DBUS_VERSION(0, 30)
DBusMessageIter temp_iter;
#endif
- g_return_val_if_fail(iter != NULL, NULL);
- g_return_val_if_fail(klass != NULL, NULL);
+ g_return_val_if_fail(iter != NULL, NULL);
+ klass = g_type_class_ref(type);
+
if (klass->dbus_message_get == NULL)
{
galago_log_error("Class type %s passed to "
"galago_dbus_message_iter_get_object does not "
"implement dbus_message_get!\n",
- galago_class_get_name(klass));
+ g_type_name(type));
+
+ g_type_class_unref(klass);
return NULL;
}
@@ -161,6 +165,7 @@
object = klass->dbus_message_get(iter);
+ g_type_class_unref(klass);
return object;
}
@@ -175,7 +180,6 @@
#endif
g_return_val_if_fail(iter != NULL, NULL);
- g_return_val_if_fail(klass != NULL, NULL);
#if 0 && GALAGO_CHECK_DBUS_VERSION(0, 30)
dbus_message_iter_recurse(iter, &array_iter);
@@ -414,14 +418,14 @@
klass = GALAGO_OBJECT_CLASS(object);
obj_path = galago_object_get_dbus_path(object);
- iface = galago_class_get_dbus_iface(klass);
+ iface = klass->dbus_interface;
if (obj_path == NULL)
{
galago_log_error(
"No object path was registered for class '%s'. "
"Please report this.\n",
- galago_class_get_name(klass));
+ g_type_name(G_OBJECT_CLASS_TYPE(klass)));
return NULL;
}
@@ -431,7 +435,7 @@
galago_log_error(
"No D-BUS interface was registered for class '%s'. "
"Please report this.\n",
- galago_class_get_name(klass));
+ g_type_name(G_OBJECT_CLASS_TYPE(klass)));
return NULL;
}
@@ -535,7 +539,7 @@
{
case GALAGO_VALUE_TYPE_OBJECT:
retval = galago_dbus_message_iter_get_object_list(iter,
- galago_value_get_object_class(value));
+ galago_value_get_gtype(value));
break;
default:
@@ -548,7 +552,7 @@
case GALAGO_VALUE_TYPE_OBJECT:
retval = galago_dbus_message_iter_get_object(iter,
- galago_value_get_object_class(value));
+ galago_value_get_gtype(value));
break;
default:
@@ -622,7 +626,7 @@
if (!dbus_error_has_name(&error, GALAGO_DBUS_ERROR_OBJECT_NOT_FOUND))
{
galago_log_error("Error sending %s.%s: %s\n",
- galago_class_get_name(GALAGO_OBJECT_CLASS(object)),
+ g_type_name(G_OBJECT_TYPE(object)),
name, error.message);
}
@@ -707,7 +711,7 @@
galago_log_error("Class type %s passed to "
"galago_dbus_object_push_full does not "
"implement dbus_push_full!\n",
- galago_class_get_name(klass));
+ g_type_name(G_OBJECT_CLASS_TYPE(klass)));
}
}
Modified: branches/libgalago/glib-port/libgalago/galago-dbus.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-dbus.h 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-dbus.h 2005-06-24 04:01:51 UTC (rev 1980)
@@ -68,7 +68,7 @@
* @param object The object to append.
*/
void galago_dbus_message_iter_append_object(DBusMessageIter *iter,
- const void *object);
+ const GalagoObject *object);
/**
* Appends a list of objects to a D-BUS message.
Modified: branches/libgalago/glib-port/libgalago/galago-object.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-object.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-object.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -38,7 +38,16 @@
gboolean watched;
};
+enum
+{
+ PROP_CONTEXT
+};
+
static void galago_object_finalize(GObject *gobject);
+static void galago_object_set_property(GObject *gobject, guint prop_id,
+ const GValue *value, GParamSpec *pspec);
+static void galago_object_get_property(GObject *gobject, guint prop_id,
+ GValue *value, GParamSpec *pspec);
static GObjectClass *parent_class = NULL;
@@ -51,13 +60,21 @@
parent_class = g_type_class_peek_parent(klass);
- gobject_class->finalize = galago_object_finalize;
+ gobject_class->finalize = galago_object_finalize;
+ gobject_class->set_property = galago_object_set_property;
+ gobject_class->get_property = galago_object_get_property;
+
+ g_object_class_install_property(gobject_class, PROP_CONTEXT,
+ g_param_spec_pointer("context", "Context",
+ "The GalagoContext this object belongs to",
+ G_PARAM_READABLE));
}
static void
galago_object_init(GalagoObject *object)
{
object->priv = g_new0(GalagoObjectPrivate, 1);
+ object->priv->context = galago_context_get();
}
static void
@@ -67,8 +84,42 @@
if (object->priv != NULL)
g_free(object->priv);
+
+ G_OBJECT_CLASS(parent_class)->finalize(gobject);
}
+static void
+galago_object_set_property(GObject *gobject, guint prop_id,
+ const GValue *value, GParamSpec *pspec)
+{
+ /* GalagoObject *object = GALAGO_OBJECT(gobject); */
+
+ switch (prop_id)
+ {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+galago_object_get_property(GObject *gobject, guint prop_id, GValue *value,
+ GParamSpec *pspec)
+{
+ GalagoObject *object = GALAGO_OBJECT(gobject);
+
+ switch (prop_id)
+ {
+ case PROP_CONTEXT:
+ g_value_set_pointer(value, galago_object_get_context(object));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec);
+ break;
+ }
+}
+
void
galago_object_set_dbus_path(GalagoObject *object, const gchar *obj_path)
{
Modified: branches/libgalago/glib-port/libgalago/galago-person.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-person.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-person.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -52,6 +52,12 @@
} AccountCacheKey;
+enum
+{
+ PHOTO_SET,
+ LAST_SIGNAL
+};
+
static GalagoPerson *_galago_person_new_common(const char *id,
gboolean native,
gboolean me,
@@ -68,10 +74,45 @@
/**************************************************************************
* Object/Class support
**************************************************************************/
-GALAGO_REGISTER_CLASS(galago_person, GalagoPerson, NULL,
- GALAGO_DBUS_PERSON_INTERFACE);
+static void galago_person_finalize(GObject *gobject);
+static void galago_person_dbus_message_append(DBusMessageIter *iter,
+ const GalagoObject *object);
+static void *galago_person_dbus_message_get(DBusMessageIter *iter);
+static void galago_person_dbus_push_full(GalagoObject *object);
+static GalagoObjectClass *parent_class = NULL;
+static guint signals[LAST_SIGNAL] = {0};
+
+G_DEFINE_TYPE(GalagoPerson, galago_person, GALAGO_TYPE_OBJECT);
+
static void
+galago_person_class_init(GalagoPersonClass *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_PERSON_INTERFACE;
+
+ gobject_class->finalize = galago_person_finalize;
+
+ object_class->dbus_message_append = galago_person_dbus_message_append;
+ object_class->dbus_message_get = galago_person_dbus_message_get;
+ object_class->dbus_push_full = galago_person_dbus_push_full;
+
+ signals[PHOTO_SET] =
+ g_signal_new("photo_set",
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET(GalagoPersonClass, photo_set),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE, 1,
+ G_TYPE_POINTER);
+}
+
+static void
cache_key_free(AccountCacheKey *key)
{
if (key->username != NULL)
@@ -81,7 +122,7 @@
}
static void
-galago_person_object_init(GalagoPerson *person)
+galago_person_init(GalagoPerson *person)
{
person->priv = g_new0(GalagoPersonPrivate, 1);
@@ -91,7 +132,7 @@
}
static void
-galago_person_object_finalize(GalagoObject *object)
+galago_person_finalize(GObject *object)
{
GalagoPerson *person = (GalagoPerson *)object;
@@ -107,7 +148,7 @@
if (person->priv->properties_table != NULL)
g_hash_table_destroy(person->priv->properties_table);
- galago_context_push(galago_object_get_context(person));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(person)));
galago_context_remove_person(person);
galago_context_pop();
@@ -115,6 +156,8 @@
g_free(person->priv->id);
g_free(person->priv);
+
+ G_OBJECT_CLASS(parent_class)->finalize(object);
}
static void
@@ -125,7 +168,7 @@
const char *obj_path, *id;
gboolean is_me;
- obj_path = galago_object_get_dbus_path(person);
+ obj_path = galago_object_get_dbus_path(GALAGO_OBJECT(person));
id = galago_person_get_id(person);
is_me = galago_person_is_me(person);
@@ -186,22 +229,7 @@
/* NOTE: Accounts are already handled by this point. */
}
-static void
-galago_person_class_init(GalagoObjectClass *klass)
-{
- klass->finalize = galago_person_object_finalize;
- klass->dbus_message_append = galago_person_dbus_message_append;
- klass->dbus_message_get = galago_person_dbus_message_get;
- klass->dbus_push_full = galago_person_dbus_push_full;
- galago_signal_register(klass->signal_context, "photo-set",
- galago_marshal_VOID__POINTER, 1,
- GALAGO_VALUE_TYPE_OBJECT);
- galago_signal_register(klass->signal_context, "updated",
- galago_marshal_VOID, 0);
-}
-
-
/**************************************************************************
* GalagoPerson API
**************************************************************************/
@@ -220,7 +248,8 @@
{
const char *obj_prefix;
- person = galago_object_new(GALAGO_TYPE_PERSON);
+ /* TODO: Context */
+ person = g_object_new(GALAGO_TYPE_PERSON, NULL);
person->priv->id = g_strdup(id);
person->priv->native = native;
@@ -228,7 +257,7 @@
if (obj_path != NULL)
{
- galago_object_set_dbus_path(person, obj_path);
+ galago_object_set_dbus_path(GALAGO_OBJECT(person), obj_path);
}
else if ((obj_prefix = galago_context_get_obj_path_prefix()) != NULL)
{
@@ -248,7 +277,7 @@
snprintf(new_obj_path, len, "%s/people/%s", obj_prefix,
escaped_id);
- galago_object_set_dbus_path(person, new_obj_path);
+ galago_object_set_dbus_path(GALAGO_OBJECT(person), new_obj_path);
g_free(new_obj_path);
}
@@ -370,8 +399,7 @@
if (galago_person_is_native(person))
_galago_dbus_person_set_photo(person, photo);
- galago_signal_emit(person, "photo-set", photo);
- galago_signal_emit(person, "updated");
+ g_signal_emit(person, signals[PHOTO_SET], 0, photo);
}
GalagoPhoto *
@@ -384,14 +412,12 @@
!galago_person_is_native(person) && !galago_is_daemon() &&
galago_is_connected())
{
- GalagoSignalContext *signal_context = GALAGO_SIGNAL_CONTEXT(person);
-
- galago_signal_context_freeze(signal_context);
+ /* TODO: Freeze signals */
person->priv->photo =
galago_dbus_send_message_with_reply(person, "GetPhoto",
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, NULL, GALAGO_TYPE_PHOTO),
+ galago_value_new_object(GALAGO_TYPE_PHOTO, NULL),
NULL);
- galago_signal_context_thaw(signal_context);
+ /* TODO: Thaw signals */
}
return person->priv->photo;
@@ -430,12 +456,12 @@
{
GList *temp;
- galago_context_push(galago_object_get_context(person));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(person)));
/* galago_signal_context_freeze(signal_context); */
temp = galago_dbus_send_message_with_reply(person, "GetAccounts",
galago_value_new_list(GALAGO_VALUE_TYPE_OBJECT, NULL,
- GALAGO_TYPE_ACCOUNT),
+ (void *)GALAGO_TYPE_ACCOUNT),
NULL);
g_list_free(temp);
@@ -515,8 +541,7 @@
person->priv->accounts = g_list_append(person->priv->accounts, account);
#if 0
- galago_signal_emit(service, "account-added", account);
- galago_signal_emit(service, "updated");
+ g_signal_emit(person, signals[ACCOUNT_ADDED], 0, account);
#endif
}
@@ -545,8 +570,7 @@
person->priv->accounts = g_list_remove(person->priv->accounts, account);
#if 0
- galago_signal_emit(person, "account-removed", account);
- galago_signal_emit(person, "updated");
+ g_signal_emit(person, signals[ACCOUNT_REMOVED], 0, account);
#endif
}
@@ -577,13 +601,12 @@
!galago_person_is_native(person) && !galago_is_daemon() &&
galago_is_connected())
{
- galago_context_push(galago_object_get_context(person));
+ galago_context_push(galago_object_get_context(GALAGO_OBJECT(person)));
/* galago_signal_context_freeze(signal_context); */
account = galago_dbus_send_message_with_reply(person, "GetAccount",
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, NULL, GALAGO_TYPE_ACCOUNT),
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, &service,
- GALAGO_TYPE_SERVICE),
+ galago_value_new_object(GALAGO_TYPE_ACCOUNT, NULL),
+ galago_value_new_object(GALAGO_TYPE_SERVICE, G_OBJECT(service)),
galago_value_new(GALAGO_VALUE_TYPE_STRING, &username, NULL),
NULL);
@@ -796,7 +819,7 @@
else
{
galago_dbus_send_message(person, "SetPhoto",
- galago_value_new(GALAGO_VALUE_TYPE_OBJECT, &photo, GALAGO_TYPE_PHOTO),
+ galago_value_new_object(GALAGO_TYPE_PHOTO, G_OBJECT(photo)),
NULL);
}
}
Modified: branches/libgalago/glib-port/libgalago/galago-person.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-person.h 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-person.h 2005-06-24 04:01:51 UTC (rev 1980)
@@ -53,6 +53,9 @@
{
GalagoObjectClass parent_class;
+ /* Signals */
+ void (*photo_set)(GalagoPerson *person, GalagoPhoto *photo);
+
void (*reserved_1)(void);
void (*reserved_2)(void);
void (*reserved_3)(void);
Modified: branches/libgalago/glib-port/libgalago/galago-photo.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-photo.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-photo.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -91,7 +91,7 @@
size_t image_len;
galago_dbus_message_iter_append_object(iter,
- galago_photo_get_person(photo));
+ GALAGO_OBJECT(galago_photo_get_person(photo)));
galago_photo_get_image_data(photo, &image_data, &image_len);
galago_dbus_message_iter_append_byte_array(iter, image_data, image_len);
Modified: branches/libgalago/glib-port/libgalago/galago-presence.c
===================================================================
--- branches/libgalago/glib-port/libgalago/galago-presence.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago-presence.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -170,7 +170,7 @@
dbus_uint32_t idle_time;
galago_dbus_message_iter_append_object(iter,
- galago_presence_get_account(presence));
+ GALAGO_OBJECT(galago_presence_get_account(presence)));
is_idle = galago_presence_is_idle(presence);
galago_dbus_message_iter_append_boolean(iter, is_idle);
Modified: branches/libgalago/glib-port/libgalago/galago.h
===================================================================
--- branches/libgalago/glib-port/libgalago/galago.h 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/libgalago/galago.h 2005-06-24 04:01:51 UTC (rev 1980)
@@ -29,12 +29,10 @@
#include <libgalago/galago-dbus.h>
#include <libgalago/galago-log.h>
#include <libgalago/galago-object.h>
-#include <libgalago/galago-object-utils.h>
#include <libgalago/galago-person.h>
#include <libgalago/galago-photo.h>
#include <libgalago/galago-presence.h>
#include <libgalago/galago-service.h>
-#include <libgalago/galago-signals.h>
#include <libgalago/galago-status.h>
#include <libgalago/galago-utils.h>
Modified: branches/libgalago/glib-port/tests/check-libgalago.c
===================================================================
--- branches/libgalago/glib-port/tests/check-libgalago.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/tests/check-libgalago.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -60,21 +60,6 @@
/**************************************************************************
- * Object tests
- **************************************************************************/
-START_TEST(test_object_abstract)
-{
- galago_log_set_enabled(GALAGO_LOG_ERROR, FALSE);
-
- fail_unless(galago_object_new(GALAGO_CLASS_IMAGE) == NULL,
- "Created abstract object. This shouldn't happen!");
-
- galago_log_set_enabled(GALAGO_LOG_ERROR, TRUE);
-}
-END_TEST
-
-
-/**************************************************************************
* Core tests
**************************************************************************/
START_TEST(test_core)
@@ -105,9 +90,6 @@
/* libgalago tests */
ADD_TCASE("init_reinit", test_init_reinit);
- /* object tests */
- ADD_TCASE("object_abstract", test_object_abstract);
-
return s;
}
Modified: branches/libgalago/glib-port/tests/get-presence.c
===================================================================
--- branches/libgalago/glib-port/tests/get-presence.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/tests/get-presence.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -103,7 +103,7 @@
status = (GalagoStatus *)l->data;
printf("\tType: %s\n",
- get_name_from_status_type(galago_status_get_type(status)));
+ get_name_from_status_type(galago_status_get_primitive(status)));
printf("\tID: %s\n", galago_status_get_id(status));
printf("\tName: %s\n", galago_status_get_name(status));
}
Modified: branches/libgalago/glib-port/tests/monitor.c
===================================================================
--- branches/libgalago/glib-port/tests/monitor.c 2005-06-23 08:22:03 UTC (rev 1979)
+++ branches/libgalago/glib-port/tests/monitor.c 2005-06-24 04:01:51 UTC (rev 1980)
@@ -23,6 +23,7 @@
#include <stdio.h>
#include <string.h>
+#if 0
static void
account_added_cb(GalagoService *service, const char *property,
GalagoAccount *account, void *user_data)
@@ -40,6 +41,7 @@
galago_account_get_username(account),
galago_service_get_id(service));
}
+#endif
int
main(int argc, char **argv)
@@ -59,10 +61,12 @@
galago_core_set_watch_all(TRUE);
+#if 0
galago_signal_connect_class(GALAGO_CLASS_SERVICE, "account-added",
G_CALLBACK(account_added_cb), NULL);
galago_signal_connect_class(GALAGO_CLASS_SERVICE, "account-removed",
G_CALLBACK(account_removed_cb), NULL);
+#endif
g_main_loop_run(loop);
More information about the galago-commits
mailing list