[Galago-commits] r2499 - in trunk/libgalago: . libgalago

galago-commits at freedesktop.org galago-commits at freedesktop.org
Wed Jan 25 23:06:30 PST 2006


Author: chipx86
Date: 2006-01-25 23:06:25 -0800 (Wed, 25 Jan 2006)
New Revision: 2499

Modified:
   trunk/libgalago/ChangeLog
   trunk/libgalago/libgalago/galago-account.c
   trunk/libgalago/libgalago/galago-private.h
   trunk/libgalago/libgalago/galago-service.c
Log:
Set the object path when receiving an account object.


Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog	2006-01-25 08:30:20 UTC (rev 2498)
+++ trunk/libgalago/ChangeLog	2006-01-26 07:06:25 UTC (rev 2499)
@@ -1,3 +1,10 @@
+Wed Jan 25 22:59:31 PST 2006  Christian Hammond <chipx86 at chipx86.com>
+
+	* libgalago/galago-account.c:
+	* libgalago/galago-private.h:
+	* libgalago/galago-service.c:
+	  - Set the object path when receiving an account object.
+
 Tue Jan 10 00:40:54 PST 2006  Christian Hammond <chipx86 at chipx86.com>
 
 	* docs/protocol/protocol.hh:

Modified: trunk/libgalago/libgalago/galago-account.c
===================================================================
--- trunk/libgalago/libgalago/galago-account.c	2006-01-25 08:30:20 UTC (rev 2498)
+++ trunk/libgalago/libgalago/galago-account.c	2006-01-26 07:06:25 UTC (rev 2499)
@@ -22,6 +22,7 @@
 #include <libgalago/galago-assert.h>
 #include <libgalago/galago-context.h>
 #include <libgalago/galago-core.h>
+#include <libgalago/galago-private.h>
 #include <stdio.h>
 #include <string.h>
 
@@ -277,7 +278,11 @@
 	GalagoAccount *account = (GalagoAccount *)object;
 	const char *username;
 	gboolean connected;
+	const char *obj_path;
 
+	obj_path = galago_object_get_dbus_path(GALAGO_OBJECT(account));
+	galago_dbus_message_iter_append_string_or_nil(iter, obj_path);
+
 	/* Service */
 	galago_dbus_message_iter_append_object(iter,
 		GALAGO_OBJECT(galago_account_get_service(account)));
@@ -306,9 +311,13 @@
 	GalagoPerson *person = NULL;
 	GalagoAccount *account;
 	gboolean connected;
+	const char *obj_path;
 	const char *display_name;
 	const char *username = NULL;
 
+	obj_path = galago_dbus_message_iter_get_string_or_nil(iter);
+	dbus_message_iter_next(iter);
+
 	service = galago_dbus_message_iter_get_object(iter, GALAGO_TYPE_SERVICE);
 	dbus_message_iter_next(iter);
 
@@ -323,7 +332,8 @@
 
 	dbus_message_iter_get_basic(iter, &connected);
 
-	account = galago_service_create_account(service, person, username);
+	/* TODO: Set this all at once! */
+	account = _galago_account_new(service, person, username, obj_path);
 	galago_account_set_display_name(account, display_name);
 	galago_account_set_connected(account, connected);
 
@@ -457,7 +467,48 @@
 	}
 }
 
+GalagoAccount *
+_galago_account_new(GalagoService *service, GalagoPerson *person,
+					const char *username, const char *obj_path)
+{
+	GalagoAccount *account;
+	GalagoOrigin service_origin, person_origin;
 
+	g_return_val_if_fail(service != NULL,                       NULL);
+	g_return_val_if_fail(person  != NULL,                       NULL);
+	g_return_val_if_fail(GALAGO_IS_SERVICE(service),            NULL);
+	g_return_val_if_fail(GALAGO_IS_PERSON(person),              NULL);
+	g_return_val_if_fail(username != NULL && *username != '\0', NULL);
+
+	service_origin = galago_object_get_origin(GALAGO_OBJECT(service));
+	person_origin  = galago_object_get_origin(GALAGO_OBJECT(person));
+
+	g_return_val_if_fail(service_origin == person_origin, NULL);
+
+	account = galago_service_get_account(service, username, FALSE);
+
+	if (account == NULL)
+	{
+		galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
+		account = g_object_new(GALAGO_TYPE_ACCOUNT,
+							   "service", service,
+							   "person", person,
+							   "username", username,
+							   "origin", service_origin,
+							   NULL);
+
+		/* Set the object path, if specified. */
+		galago_object_set_dbus_path(GALAGO_OBJECT(account), obj_path);
+
+		galago_person_add_account(person, account);
+		galago_service_add_account(service, account);
+		galago_context_pop();
+	}
+
+	return account;
+}
+
+
 /**************************************************************************
  * GalagoAccount API
  **************************************************************************/

Modified: trunk/libgalago/libgalago/galago-private.h
===================================================================
--- trunk/libgalago/libgalago/galago-private.h	2006-01-25 08:30:20 UTC (rev 2498)
+++ trunk/libgalago/libgalago/galago-private.h	2006-01-26 07:06:25 UTC (rev 2499)
@@ -45,6 +45,15 @@
 # define bind_textdomain_codeset(Domain,Codeset) (Codeset)
 #endif /* ENABLE_NLS */
 
+#include <libgalago/galago-account.h>
+#include <libgalago/galago-service.h>
+#include <libgalago/galago-person.h>
+
 #define GALAGO_ME_ID "_galago_me_"
 
+GalagoAccount *_galago_account_new(GalagoService *service,
+								   GalagoPerson *person,
+								   const char *username,
+								   const char *obj_path);
+
 #endif /* _GALAGO_PRIVATE_H_ */

Modified: trunk/libgalago/libgalago/galago-service.c
===================================================================
--- trunk/libgalago/libgalago/galago-service.c	2006-01-25 08:30:20 UTC (rev 2498)
+++ trunk/libgalago/libgalago/galago-service.c	2006-01-26 07:06:25 UTC (rev 2499)
@@ -471,37 +471,13 @@
 galago_service_create_account(GalagoService *service, GalagoPerson *person,
 							  const char *username)
 {
-	GalagoAccount *account;
-	GalagoOrigin service_origin, person_origin;
-
 	g_return_val_if_fail(service != NULL,                       NULL);
 	g_return_val_if_fail(person  != NULL,                       NULL);
 	g_return_val_if_fail(GALAGO_IS_SERVICE(service),            NULL);
 	g_return_val_if_fail(GALAGO_IS_PERSON(person),              NULL);
 	g_return_val_if_fail(username != NULL && *username != '\0', NULL);
 
-	service_origin = galago_object_get_origin(GALAGO_OBJECT(service));
-	person_origin  = galago_object_get_origin(GALAGO_OBJECT(person));
-
-	g_return_val_if_fail(service_origin == person_origin, NULL);
-
-	account = galago_service_get_account(service, username, FALSE);
-
-	if (account == NULL)
-	{
-		galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
-		account = g_object_new(GALAGO_TYPE_ACCOUNT,
-							   "service", service,
-							   "person", person,
-							   "username", username,
-							   "origin", service_origin,
-							   NULL);
-		galago_person_add_account(person, account);
-		galago_service_add_account(service, account);
-		galago_context_pop();
-	}
-
-	return account;
+	return _galago_account_new(service, person, username, NULL);
 }
 
 GalagoAccount *



More information about the galago-commits mailing list