[Galago-commits] r2808 - in trunk/libgalago: . libgalago
galago-commits at freedesktop.org
galago-commits at freedesktop.org
Mon May 22 01:26:49 PDT 2006
Author: chipx86
Date: 2006-05-22 01:26:47 -0700 (Mon, 22 May 2006)
New Revision: 2808
Modified:
trunk/libgalago/ChangeLog
trunk/libgalago/libgalago/galago-service.c
trunk/libgalago/libgalago/galago-service.h
Log:
Add some basic implementations of galago_service_register_status() and galago_service_get_registered_statuses().
Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog 2006-05-22 08:26:21 UTC (rev 2807)
+++ trunk/libgalago/ChangeLog 2006-05-22 08:26:47 UTC (rev 2808)
@@ -1,3 +1,10 @@
+Mon May 22 01:26:17 PDT 2006 Christian Hammond <chipx86 at chipx86.com>
+
+ * libgalago/galago-service.c:
+ * libgalago/galago-service.h:
+ - Add some basic implementations of galago_service_register_status()
+ and galago_service_get_registered_statuses().
+
==================== 0.5.1 ====================
Sun May 21 14:42:53 PDT 2006 Christian Hammond <chipx86 at chipx86.com>
Modified: trunk/libgalago/libgalago/galago-service.c
===================================================================
--- trunk/libgalago/libgalago/galago-service.c 2006-05-22 08:26:21 UTC (rev 2807)
+++ trunk/libgalago/libgalago/galago-service.c 2006-05-22 08:26:47 UTC (rev 2808)
@@ -38,6 +38,7 @@
GHashTable *accounts_table;
GList *accounts;
+ GList *registered_statuses;
};
enum
@@ -505,6 +506,73 @@
}
/**
+ * galago_service_register_status:
+ * @service: The service.
+ * @status: The status type to register.
+ *
+ * Registers a type of status that the accounts belonging to this service can
+ * have set. The service will take ownership of @status.
+ *
+ * This can only be called by feeds. It will return with a warning if called
+ * by a non-feed.
+ */
+void
+galago_service_register_status(GalagoService *service, GalagoStatus *status)
+{
+ g_return_if_fail(service != NULL);
+ g_return_if_fail(GALAGO_IS_SERVICE(service));
+ g_return_if_fail(status != NULL);
+ g_return_if_fail(GALAGO_IS_STATUS(status));
+ g_return_if_fail(GALAGO_OBJECT_IS_LOCAL(service));
+ g_return_if_fail(galago_is_feed());
+
+#if 0
+ /* TODO: Check that this isn't already in the list. */
+ service->priv->registered_statuses =
+ g_list_append(service->priv->registered_statuses, status);
+#endif
+
+ if (galago_is_connected() && !galago_is_daemon())
+ {
+ /*
+ * TODO: We'll need to make sure we re-register upon reconnect.
+ * That should just involve storing these statuses and
+ * re-adding.
+ */
+ galago_dbus_send_message(GALAGO_OBJECT(service), "RegisterStatus",
+ galago_value_new_object(GALAGO_TYPE_STATUS, G_OBJECT(status)),
+ NULL);
+ g_object_unref(G_OBJECT(status));
+ }
+}
+
+/**
+ * galago_service_get_registered_statuses:
+ * @service: The service.
+ *
+ * Returns a list of statuses that accounts belonging to this service can
+ * have set.
+ */
+GList *
+galago_service_get_registered_statuses(const GalagoService *service)
+{
+ g_return_val_if_fail(service != NULL, NULL);
+ g_return_val_if_fail(GALAGO_IS_SERVICE(service), NULL);
+
+ if (!galago_is_daemon() && galago_is_connected())
+ {
+ /* TODO: Should store these and free them later. */
+ return galago_dbus_send_message_with_reply(
+ GALAGO_OBJECT(service), "GetRegisteredStatuses",
+ galago_value_new_list(GALAGO_VALUE_TYPE_OBJECT, NULL,
+ (gpointer)GALAGO_TYPE_STATUS),
+ NULL);
+ }
+
+ return NULL; // service->priv->registered_statuses
+}
+
+/**
* galago_service_get_flags
* @service: The service.
*
Modified: trunk/libgalago/libgalago/galago-service.h
===================================================================
--- trunk/libgalago/libgalago/galago-service.h 2006-05-22 08:26:21 UTC (rev 2807)
+++ trunk/libgalago/libgalago/galago-service.h 2006-05-22 08:26:47 UTC (rev 2808)
@@ -39,6 +39,7 @@
#include <libgalago/galago-account.h>
#include <libgalago/galago-object.h>
+#include <libgalago/galago-status.h>
struct _GalagoService
{
@@ -116,6 +117,10 @@
const char *galago_service_get_name(const GalagoService *service);
GalagoServiceFlags galago_service_get_flags(const GalagoService *service);
+void galago_service_register_status(GalagoService *service,
+ GalagoStatus *status);
+GList *galago_service_get_registered_statuses(const GalagoService *service);
+
GalagoAccount *galago_service_create_account(GalagoService *service,
GalagoPerson *person,
const char *username);
More information about the galago-commits
mailing list