[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