[Galago-commits] r2395 - in trunk/libgalago: . docs/protocol libgalago

galago-commits at freedesktop.org galago-commits at freedesktop.org
Mon Jan 9 23:29:29 PST 2006


Author: chipx86
Date: 2006-01-09 23:29:26 -0800 (Mon, 09 Jan 2006)
New Revision: 2395

Modified:
   trunk/libgalago/ChangeLog
   trunk/libgalago/docs/protocol/protocol.hh
   trunk/libgalago/libgalago/galago-core.c
   trunk/libgalago/libgalago/galago-core.h
   trunk/libgalago/libgalago/galago-dbus.c
   trunk/libgalago/libgalago/galago-service.c
Log:
ather than computing the object path for an account, let the daemon handle this. libgalago shouldn't care. This will be replicated for the other objects. This may possibly have unwanted side effects.


Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog	2006-01-10 04:21:04 UTC (rev 2394)
+++ trunk/libgalago/ChangeLog	2006-01-10 07:29:26 UTC (rev 2395)
@@ -1,3 +1,15 @@
+Mon Jan 09 23:27:45 PST 2006  Christian Hammond <chipx86 at chipx86.com>
+
+	* docs/protocol/protocol.hh:
+	* libgalago/galago-core.c:
+	* libgalago/galago-core.h:
+	* libgalago/galago-dbus.c:
+	* libgalago/galago-service.c:
+	  - Rather than computing the object path for an account, let
+	    the daemon handle this. libgalago shouldn't care. This will
+	    be replicated for the other objects. This may possibly have
+	    unwanted side effects.
+
 Mon Jan 09 20:19:33 PST 2006  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/galago-person.c:

Modified: trunk/libgalago/docs/protocol/protocol.hh
===================================================================
--- trunk/libgalago/docs/protocol/protocol.hh	2006-01-10 04:21:04 UTC (rev 2394)
+++ trunk/libgalago/docs/protocol/protocol.hh	2006-01-10 07:29:26 UTC (rev 2395)
@@ -209,14 +209,16 @@
 	 */
 
 	/**
-	 * Adds a service to Galago's services cache.
+	 * Adds a service to Galago's list of services.
 	 *
 	 * @param service The service to add.
+	 *
+	 * @return The service's new object path.
 	 */
-	void AddService(Service service);
+	string AddService(Service service);
 
 	/**
-	 * Removes a service from Galago's services cache.
+	 * Removes a service from Galago's list of services.
 	 *
 	 * @param service The service to remove.
 	 */

Modified: trunk/libgalago/libgalago/galago-core.c
===================================================================
--- trunk/libgalago/libgalago/galago-core.c	2006-01-10 04:21:04 UTC (rev 2394)
+++ trunk/libgalago/libgalago/galago-core.c	2006-01-10 07:29:26 UTC (rev 2395)
@@ -1310,8 +1310,10 @@
 _galago_dbus_core_add_service(GalagoService *service)
 {
 	DBusConnection *dbus_conn;
-	DBusMessage *message;
+	DBusMessage *message, *reply;
 	DBusMessageIter iter;
+	const char *obj_path;
+	DBusError error;
 
 	g_signal_emit(_core, signals[SERVICE_ADDED], 0, service);
 
@@ -1327,16 +1329,29 @@
 										   galago_get_client_obj_path(),
 										   GALAGO_DBUS_CORE_INTERFACE,
 										   "AddService");
-
 	g_return_if_fail(message != NULL);
 
-	dbus_message_set_no_reply(message, TRUE);
-
 	dbus_message_iter_init_append(message, &iter);
 	galago_dbus_message_iter_append_object(&iter, GALAGO_OBJECT(service));
 
-	dbus_connection_send(dbus_conn, message, NULL);
+	dbus_error_init(&error);
+	reply = dbus_connection_send_with_reply_and_block(dbus_conn, message, -1,
+													  &error);
 	dbus_message_unref(message);
+
+	if (dbus_error_is_set(&error))
+	{
+		g_warning("Error sending AddService: %s", error.message);
+		return;
+	}
+
+	g_assert(reply != NULL);
+
+	dbus_message_iter_init(reply, &iter);
+	dbus_message_iter_get_basic(&iter, &obj_path);
+
+	g_message("[%p] Got new object path '%s'\n", service, obj_path);
+	galago_object_set_dbus_path(GALAGO_OBJECT(service), obj_path);
 }
 
 static void

Modified: trunk/libgalago/libgalago/galago-core.h
===================================================================
--- trunk/libgalago/libgalago/galago-core.h	2006-01-10 04:21:04 UTC (rev 2394)
+++ trunk/libgalago/libgalago/galago-core.h	2006-01-10 07:29:26 UTC (rev 2395)
@@ -246,16 +246,16 @@
 void galago_remove_person(GalagoPerson *person);
 
 /**
- * Returns the person with the specified ID.
+ * Returns the person with the specified UID.
  *
- * @param id     The person ID.
+ * @param uid    The person's UID.
  * @param origin The desired person's origin.
  * @param query  TRUE if a remote query should be done if there is no
  *               local person found, or FALSE.
  *
  * @return The person, if found, or NULL.
  */
-GalagoPerson *galago_get_person(const char *id, GalagoOrigin origin,
+GalagoPerson *galago_get_person(const char *uid, GalagoOrigin origin,
 								gboolean query);
 
 /**

Modified: trunk/libgalago/libgalago/galago-dbus.c
===================================================================
--- trunk/libgalago/libgalago/galago-dbus.c	2006-01-10 04:21:04 UTC (rev 2394)
+++ trunk/libgalago/libgalago/galago-dbus.c	2006-01-10 07:29:26 UTC (rev 2395)
@@ -143,10 +143,13 @@
 galago_dbus_message_iter_get_object_list(DBusMessageIter *iter, GType type)
 {
 	GList *list = NULL;
+	DBusMessageIter array_iter;
 
-	g_return_val_if_fail(iter  != NULL, NULL);
+	g_return_val_if_fail(iter != NULL, NULL);
+	g_return_val_if_fail(dbus_message_iter_get_arg_type(iter) ==
+						 DBUS_TYPE_ARRAY,
+						 NULL);
 
-	DBusMessageIter array_iter;
 	dbus_message_iter_recurse(iter, &array_iter);
 
 	while (dbus_message_iter_get_arg_type(&array_iter) != DBUS_TYPE_INVALID)
@@ -393,18 +396,18 @@
 
 	if (obj_path == NULL)
 	{
-		g_warning("No object path was registered for class '%s'. "
-				  "Please report this.",
-				  g_type_name(G_OBJECT_CLASS_TYPE(klass)));
+		g_error("No object path was registered for class '%s'. "
+				"Please report this.",
+				g_type_name(G_OBJECT_CLASS_TYPE(klass)));
 
 		return NULL;
 	}
 
 	if (iface == NULL)
 	{
-		g_warning("No D-BUS interface was registered for class '%s'. "
-				  "Please report this.",
-				  g_type_name(G_OBJECT_CLASS_TYPE(klass)));
+		g_error("No D-BUS interface was registered for class '%s'. "
+				"Please report this.",
+				g_type_name(G_OBJECT_CLASS_TYPE(klass)));
 
 		return NULL;
 	}

Modified: trunk/libgalago/libgalago/galago-service.c
===================================================================
--- trunk/libgalago/libgalago/galago-service.c	2006-01-10 04:21:04 UTC (rev 2394)
+++ trunk/libgalago/libgalago/galago-service.c	2006-01-10 07:29:26 UTC (rev 2395)
@@ -196,7 +196,9 @@
 	name     = galago_service_get_name(service);
 	flags    = galago_service_get_flags(service);
 
-	dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &obj_path);
+	g_message("--- Appending Service (%s)", obj_path);
+
+	galago_dbus_message_iter_append_string_or_nil(iter, obj_path);
 	dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &id);
 	dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &name);
 	dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &flags);
@@ -209,7 +211,7 @@
 	const char *obj_path, *id, *name;
 	int flags;
 
-	dbus_message_iter_get_basic(iter, &obj_path);
+	obj_path = galago_dbus_message_iter_get_string_or_nil(iter);
 	dbus_message_iter_next(iter);
 
 	dbus_message_iter_get_basic(iter, &id);
@@ -399,6 +401,7 @@
 	g_return_val_if_fail(galago_is_initted(), NULL);
 	g_return_val_if_fail(id  != NULL,         NULL);
 	g_return_val_if_fail(*id != '\0',         NULL);
+	g_return_val_if_fail(obj_path == NULL || origin == GALAGO_REMOTE, NULL);
 
 	if ((map_info = _galago_services_map_id_to_info(id)) != NULL)
 	{
@@ -413,8 +416,6 @@
 
 	if (service == NULL)
 	{
-		const char *obj_prefix;
-
 		service = g_object_new(GALAGO_TYPE_SERVICE,
 							   "id", id,
 							   "name", name,
@@ -422,22 +423,9 @@
 							   "origin", origin,
 							   NULL);
 
-		if (obj_path != NULL)
-		{
-			/* Assumes an escaped path already */
-			galago_object_set_dbus_path(GALAGO_OBJECT(service), obj_path);
-		}
-		else if ((obj_prefix = galago_context_get_obj_path_prefix()) != NULL)
-		{
-			const char *escaped_id = galago_dbus_normalize_name(id);
-			char *new_obj_path = g_strdup_printf("%s/services/%s",
-												 obj_prefix, escaped_id);
+		/* Set the object path, if specified. */
+		galago_object_set_dbus_path(GALAGO_OBJECT(service), obj_path);
 
-			galago_object_set_dbus_path(GALAGO_OBJECT(service), new_obj_path);
-
-			g_free(new_obj_path);
-		}
-
 		galago_context_add_service(service);
 	}
 



More information about the galago-commits mailing list