[Galago-commits] r2576 - in trunk/galago-daemon: . src tools
galago-commits at freedesktop.org
galago-commits at freedesktop.org
Sun Feb 12 03:26:28 PST 2006
Author: chipx86
Date: 2006-02-12 03:25:58 -0800 (Sun, 12 Feb 2006)
New Revision: 2576
Modified:
trunk/galago-daemon/ChangeLog
trunk/galago-daemon/src/core.c
trunk/galago-daemon/src/meta-account.c
trunk/galago-daemon/src/meta-person.c
trunk/galago-daemon/src/person-list.c
trunk/galago-daemon/src/person.c
trunk/galago-daemon/tools/list-people.c
Log:
Updated to work with the new way of handling persistent (more or less) person IDs and per-session handles. After these changes, the IDs published by, say, eds-feed end up showing up on the client end. Apps now have a far better chance of a person's ID being tied to the correct thing in a later session.
Modified: trunk/galago-daemon/ChangeLog
===================================================================
--- trunk/galago-daemon/ChangeLog 2006-02-12 11:23:31 UTC (rev 2575)
+++ trunk/galago-daemon/ChangeLog 2006-02-12 11:25:58 UTC (rev 2576)
@@ -1,3 +1,17 @@
+Sun Feb 12 03:23:40 PST 2006 Christian Hammond <chipx86 at chipx86.com>
+
+ * src/core.c:
+ * src/meta-account.c:
+ * src/meta-person.c:
+ * src/person.c:
+ * src/person-list.c:
+ * tools/list-people.c:
+ - Updated to work with the new way of handling persistent (more or
+ less) person IDs and per-session handles. After these changes, the
+ IDs published by, say, eds-feed end up showing up on the client end.
+ Apps now have a far better chance of a person's ID being tied to the
+ correct thing in a later session.
+
Thu Feb 09 00:34:52 PST 2006 Christian Hammond <chipx86 at chipx86.com>
* configure.ac:
Modified: trunk/galago-daemon/src/core.c
===================================================================
--- trunk/galago-daemon/src/core.c 2006-02-12 11:23:31 UTC (rev 2575)
+++ trunk/galago-daemon/src/core.c 2006-02-12 11:25:58 UTC (rev 2576)
@@ -24,6 +24,9 @@
#include "person-list.h"
#include "utils.h"
+/* Provided by libgalago */
+void _galago_person_set_session_id(GalagoPerson *person, const char *id);
+
static DBusHandlerResult
coco_add_service(DBusConnection *dbus_conn, DBusMessage *message,
GalagodCoCo *coco)
@@ -85,29 +88,32 @@
{
DBusMessage *reply;
DBusMessageIter iter;
+ GalagodMetaPerson *meta_person;
GalagoPerson *person;
+ const char *uid;
char *obj_path;
dbus_message_iter_init(message, &iter);
person = galago_dbus_message_iter_get_object(&iter, GALAGO_TYPE_PERSON);
-
g_object_set_data(G_OBJECT(person), "coco", coco);
+ obj_path = galagod_person_generate_path(person);
+ galago_object_set_dbus_path(GALAGO_OBJECT(person), obj_path);
+ galagod_people_add(person);
+
+ meta_person = GALAGOD_META_PERSON(person);
+ uid = galago_person_get_id(galagod_meta_person_get_person(meta_person));
+
/* Send the reply containing the object path. */
reply = dbus_message_new_method_return(message);
dbus_message_iter_init_append(reply, &iter);
-
- obj_path = galagod_person_generate_path(person);
- galago_object_set_dbus_path(GALAGO_OBJECT(person), obj_path);
dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &obj_path);
-
+ galago_dbus_message_iter_append_string_or_nil(&iter, uid);
dbus_connection_send(dbus_conn, reply, NULL);
dbus_message_unref(reply);
g_free(obj_path);
- galagod_people_add(person);
-
return DBUS_HANDLER_RESULT_HANDLED;
}
Modified: trunk/galago-daemon/src/meta-account.c
===================================================================
--- trunk/galago-daemon/src/meta-account.c 2006-02-12 11:23:31 UTC (rev 2575)
+++ trunk/galago-daemon/src/meta-account.c 2006-02-12 11:25:58 UTC (rev 2576)
@@ -53,6 +53,7 @@
GalagodMetaAccount *meta_account;
char *obj_path;
+ g_assert(meta_person != NULL);
g_return_val_if_fail(meta_service != NULL, NULL);
g_return_val_if_fail(meta_person != NULL, NULL);
g_return_val_if_fail(username != NULL, NULL);
Modified: trunk/galago-daemon/src/meta-person.c
===================================================================
--- trunk/galago-daemon/src/meta-person.c 2006-02-12 11:23:31 UTC (rev 2575)
+++ trunk/galago-daemon/src/meta-person.c 2006-02-12 11:25:58 UTC (rev 2576)
@@ -25,27 +25,17 @@
#include <string.h>
#include <time.h>
-#include <unistd.h>
/* Provided by libgalago */
-void _galago_account_set_person(GalagoAccount *account,
- GalagoPerson *person);
+void _galago_account_set_person(GalagoAccount *account, GalagoPerson *person);
+void _galago_person_set_id(GalagoPerson *person, const char *id);
+void _galago_person_set_session_id(GalagoPerson *person,
+ const char *session_id);
-static const char *
-galagod_get_uid(void)
-{
- static char id[64];
- static int serial = 0;
- g_snprintf(id, sizeof(id), "%08lx-%04lx-%04lx-%04x",
- (unsigned long)time(NULL),
- (unsigned long)getpid(),
- (unsigned long)g_random_int_range(0, 65535),
- serial++);
+/* person-list.c */
+extern GHashTable *meta_people_table;
- return id;
-}
-
GalagodMetaPerson *
galagod_meta_person_new(void)
{
@@ -55,7 +45,9 @@
meta_person = g_new0(GalagodMetaPerson, 1);
galago_context_push(galagod_get_context());
- meta_person->person = galago_create_person(galagod_get_uid());
+ meta_person->person = galago_create_person(NULL);
+ g_object_set_data(G_OBJECT(meta_person->person), "valid_uid_set",
+ GINT_TO_POINTER(FALSE));
obj_path = galagod_person_generate_path(meta_person->person);
galago_object_set_dbus_path(GALAGO_OBJECT(meta_person->person), obj_path);
@@ -157,13 +149,26 @@
galagod_meta_person_add_person(GalagodMetaPerson *meta_person,
GalagoPerson *person)
{
+ const char *person_id;
+
g_return_if_fail(meta_person != NULL);
g_return_if_fail(person != NULL);
meta_person->people = g_list_append(meta_person->people, person);
-
g_object_set_data(G_OBJECT(person), "meta-person", meta_person);
+ person_id = galago_person_get_id(person);
+
+ if (galago_person_get_id(meta_person->person) == NULL &&
+ person_id != NULL)
+ {
+ _galago_person_set_id(meta_person->person, person_id);
+ g_object_set_data(G_OBJECT(meta_person->person), "valid_uid_set",
+ GINT_TO_POINTER(TRUE));
+ g_hash_table_insert(meta_people_table, g_strdup(person_id),
+ meta_person);
+ }
+
galagod_person_add_filter(person);
}
Modified: trunk/galago-daemon/src/person-list.c
===================================================================
--- trunk/galago-daemon/src/person-list.c 2006-02-12 11:23:31 UTC (rev 2575)
+++ trunk/galago-daemon/src/person-list.c 2006-02-12 11:25:58 UTC (rev 2576)
@@ -21,7 +21,7 @@
#include "person-list.h"
#include "meta-account.h"
-static GHashTable *meta_people_table = NULL;
+GHashTable *meta_people_table = NULL;
static GList *meta_people = NULL;
static GalagodMetaPerson *meta_me = NULL;
static size_t meta_person_count = 0;
@@ -159,14 +159,8 @@
void
galagod_people_add_meta_person(GalagodMetaPerson *meta_person)
{
- const char *id;
-
g_return_if_fail(meta_person != NULL);
- id = galago_person_get_id(galagod_meta_person_get_person(meta_person));
-
- g_hash_table_insert(meta_people_table, g_strdup(id), meta_person);
-
meta_people = g_list_append(meta_people, meta_person);
meta_person_count++;
}
@@ -179,8 +173,10 @@
g_return_if_fail(meta_person != NULL);
id = galago_person_get_id(galagod_meta_person_get_person(meta_person));
- g_hash_table_remove(meta_people_table, id);
+ if (id != NULL)
+ g_hash_table_remove(meta_people_table, id);
+
meta_people = g_list_remove(meta_people, meta_person);
meta_person_count--;
Modified: trunk/galago-daemon/src/person.c
===================================================================
--- trunk/galago-daemon/src/person.c 2006-02-12 11:23:31 UTC (rev 2575)
+++ trunk/galago-daemon/src/person.c 2006-02-12 11:25:58 UTC (rev 2576)
@@ -21,7 +21,23 @@
#include "filter.h"
#include "meta-person.h"
#include "utils.h"
+#include <unistd.h>
+static const char *
+galagod_get_uid(void)
+{
+ static char id[64];
+ static int serial = 0;
+
+ g_snprintf(id, sizeof(id), "%08lx-%04lx-%04lx-%04x",
+ (unsigned long)time(NULL),
+ (unsigned long)getpid(),
+ (unsigned long)g_random_int_range(0, 65535),
+ serial++);
+
+ return id;
+}
+
static void
_galagod_dbus_person_emit(GalagoPerson *person, const char *signal_name)
{
@@ -118,9 +134,20 @@
if (account == NULL)
{
- reply = galagod_object_not_found_error_new(message,
- "The account '%s' on person '%s' could not be found.",
- username, galago_person_get_id(main_person));
+ const char *person_id = galago_person_get_id(main_person);
+
+ if (person_id != NULL)
+ {
+ reply = galagod_object_not_found_error_new(message,
+ "The account '%s' on person '%s' could not be found.",
+ username, person_id);
+ }
+ else
+ {
+ reply = galagod_object_not_found_error_new(message,
+ "The account '%s' on person could not be found.",
+ username );
+ }
}
else
{
@@ -252,9 +279,19 @@
if (photo == NULL)
{
- reply = galagod_object_not_found_error_new(message,
- "The photo for person '%s' could not be found.",
- galago_person_get_id(main_person));
+ const char *person_id = galago_person_get_id(main_person);
+
+ if (person_id != NULL)
+ {
+ reply = galagod_object_not_found_error_new(message,
+ "The photo for person '%s' could not be found.",
+ galago_person_get_id(main_person));
+ }
+ else
+ {
+ reply = galagod_object_not_found_error_new(message,
+ "The photo for person could not be found.");
+ }
}
else
{
@@ -292,7 +329,7 @@
(coco == NULL
? galago_context_get_obj_path_prefix()
: galago_object_get_dbus_path(GALAGO_OBJECT(coco))),
- galago_dbus_normalize_name(galago_person_get_id(person)));
+ galago_dbus_normalize_name(galagod_get_uid()));
}
void
Modified: trunk/galago-daemon/tools/list-people.c
===================================================================
--- trunk/galago-daemon/tools/list-people.c 2006-02-12 11:23:31 UTC (rev 2575)
+++ trunk/galago-daemon/tools/list-people.c 2006-02-12 11:25:58 UTC (rev 2576)
@@ -28,6 +28,7 @@
{
GList *l;
const char *display_name, *uid, *me_text = "";
+ const char *displayed_uid;
uid = galago_person_get_id(person);
display_name = galago_person_get_display_name(person);
@@ -35,10 +36,15 @@
if (galago_person_is_me(person))
me_text = " (me) ";
+ if (uid == NULL)
+ displayed_uid = "no uid";
+ else
+ displayed_uid = uid;
+
if (display_name == NULL)
- printf("%s<%s>:\n", me_text, uid);
+ printf("%s<%s>:\n", me_text, displayed_uid);
else
- printf("%s %s<%s>\n", display_name, me_text, uid);
+ printf("%s %s<%s>\n", display_name, me_text, displayed_uid);
for (l = galago_person_get_accounts(person, TRUE); l != NULL; l = l->next)
{
More information about the galago-commits
mailing list