[Galago-commits] r2675 - in trunk/libgalago: . libgalago
galago-commits at freedesktop.org
galago-commits at freedesktop.org
Wed Apr 5 02:11:31 PDT 2006
Author: chipx86
Date: 2006-04-05 02:11:28 -0700 (Wed, 05 Apr 2006)
New Revision: 2675
Modified:
trunk/libgalago/ChangeLog
trunk/libgalago/libgalago/galago-core.c
trunk/libgalago/libgalago/galago-core.h
Log:
Expose the GalagoCore object. Though Python and C users don't really need this, the Galago# bindings generator wants to see it.
Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog 2006-04-05 08:27:08 UTC (rev 2674)
+++ trunk/libgalago/ChangeLog 2006-04-05 09:11:28 UTC (rev 2675)
@@ -1,3 +1,10 @@
+Wed Apr 05 02:10:42 PDT 2006 Christian Hammond <chipx86 at chipx86.com>
+
+ * libgalago/galago-core.c:
+ * libgalago/galago-core.h:
+ - Expose the GalagoCore object. Though Python and C users don't really
+ need this, the Galago# bindings generator wants to see it.
+
Tue Apr 04 23:04:52 PDT 2006 Christian Hammond <chipx86 at chipx86.com>
* libgalago/galago-core.c:
Modified: trunk/libgalago/libgalago/galago-core.c
===================================================================
--- trunk/libgalago/libgalago/galago-core.c 2006-04-05 08:27:08 UTC (rev 2674)
+++ trunk/libgalago/libgalago/galago-core.c 2006-04-05 09:11:28 UTC (rev 2675)
@@ -34,10 +34,8 @@
# include <signal.h>
#endif
-typedef struct _GalagoCore
+struct _GalagoCorePrivate
{
- GalagoObject parent_object;
-
/*
* We don't want to risk a caller reffing the core, so we keep a
* separate init ref count here.
@@ -64,25 +62,8 @@
gboolean registering_connection;
guint block_signals;
+};
-} GalagoCore;
-
-typedef struct
-{
- GalagoObjectClass parent_class;
-
- /* Signals */
- void (*registered)(GalagoCore *core);
- void (*unregistered)(GalagoCore *core);
- void (*service_added)(GalagoCore *core, GalagoService *service);
- void (*service_removed)(GalagoCore *core, GalagoService *service);
- void (*person_added)(GalagoCore *core, GalagoPerson *person);
- void (*person_removed)(GalagoCore *core, GalagoPerson *person);
- GalagoAccount *(*calc_priority_account)(GalagoCore *core,
- GalagoPerson *person);
-
-} GalagoCoreClass;
-
enum
{
REGISTERED,
@@ -240,39 +221,36 @@
static void
galago_core_init(GalagoCore *core)
{
- core->init_ref_count = 0;
- core->app_name = NULL;
- core->conn_obj_path = NULL;
- core->uid = NULL;
- core->dbus_conn = NULL;
- core->flags = GALAGO_INIT_CLIENT;
- core->daemon = FALSE;
- core->registered = FALSE;
- core->daemon_active = FALSE;
- core->exit_with_daemon = FALSE;
- core->registering_connection = FALSE;
- core->block_signals = 0;
+ core->priv = g_new0(GalagoCorePrivate, 1);
}
static void
galago_core_destroy(GalagoObject *object)
{
- GalagoContext *context;
+ GalagoCore *core = (GalagoCore *)object;
- _galago_core_disconnect();
+ if (core->priv != NULL)
+ {
+ GalagoContext *context;
- /*
- * Prevent this object from being removed from the soon-to-be
- * destroyed context after this function ends.
- */
- galago_object_set_dbus_path(GALAGO_OBJECT(object), NULL);
+ _galago_core_disconnect();
- context = galago_context_get();
- galago_context_pop();
- g_object_unref(context);
+ /*
+ * Prevent this object from being removed from the soon-to-be
+ * destroyed context after this function ends.
+ */
+ galago_object_set_dbus_path(GALAGO_OBJECT(object), NULL);
- g_free(_core->app_name);
+ context = galago_context_get();
+ galago_context_pop();
+ g_object_unref(context);
+ g_free(core->priv->app_name);
+
+ g_free(core->priv);
+ core->priv = NULL;
+ }
+
G_LOCK(_core_lock);
_core = NULL;
G_UNLOCK(_core_lock);
@@ -331,13 +309,13 @@
_galago_dbus_unregister_connection_finish();
}
- if (!(_core->flags & GALAGO_INIT_NO_ACTIVATION))
+ if (!(_core->priv->flags & GALAGO_INIT_NO_ACTIVATION))
{
DBusError error;
dbus_error_init(&error);
- if (!dbus_bus_start_service_by_name(_core->dbus_conn,
+ if (!dbus_bus_start_service_by_name(_core->priv->dbus_conn,
GALAGO_DBUS_SERVICE,
0, NULL, &error))
{
@@ -710,9 +688,9 @@
dbus_error_init(&error);
- _core->dbus_conn = dbus_bus_get(DBUS_BUS_SESSION, &error);
+ _core->priv->dbus_conn = dbus_bus_get(DBUS_BUS_SESSION, &error);
- if (_core->dbus_conn == NULL)
+ if (_core->priv->dbus_conn == NULL)
{
g_error("Unable to connect to session bus: %s", error.message);
dbus_error_free(&error);
@@ -720,19 +698,19 @@
return FALSE;
}
- dbus_connection_setup_with_g_main(_core->dbus_conn, NULL);
- dbus_connection_set_exit_on_disconnect(_core->dbus_conn, FALSE);
+ dbus_connection_setup_with_g_main(_core->priv->dbus_conn, NULL);
+ dbus_connection_set_exit_on_disconnect(_core->priv->dbus_conn, FALSE);
- if (_core->daemon)
+ if (_core->priv->daemon)
{
dbus_error_free(&error);
return TRUE;
}
- if (!(_core->flags & GALAGO_INIT_NO_ACTIVATION))
+ if (!(_core->priv->flags & GALAGO_INIT_NO_ACTIVATION))
{
- if (!dbus_bus_start_service_by_name(_core->dbus_conn,
+ if (!dbus_bus_start_service_by_name(_core->priv->dbus_conn,
GALAGO_DBUS_SERVICE,
0, NULL, &error))
{
@@ -742,7 +720,7 @@
}
}
- if (!dbus_connection_add_filter(_core->dbus_conn,
+ if (!dbus_connection_add_filter(_core->priv->dbus_conn,
filter_func, NULL, NULL))
{
g_error("Unable to create core D-BUS handler");
@@ -751,7 +729,7 @@
return FALSE;
}
- dbus_bus_add_match(_core->dbus_conn,
+ dbus_bus_add_match(_core->priv->dbus_conn,
"type='signal',"
"interface='" DBUS_INTERFACE_DBUS "',"
"sender='" DBUS_SERVICE_DBUS "'",
@@ -768,7 +746,7 @@
dbus_error_free(&error);
- _core->filters_added = TRUE;
+ _core->priv->filters_added = TRUE;
_galago_dbus_register_connection();
@@ -780,24 +758,24 @@
{
gboolean unregistered_emitted = FALSE;
- if (_core->dbus_conn != NULL)
+ if (_core->priv->dbus_conn != NULL)
{
- if (!_core->daemon && galago_is_registered())
+ if (!_core->priv->daemon && galago_is_registered())
{
_galago_dbus_unregister_connection();
unregistered_emitted = TRUE;
}
- if (_core->dbus_conn != NULL)
+ if (_core->priv->dbus_conn != NULL)
{
- if (_core->filters_added)
+ if (_core->priv->filters_added)
{
- dbus_connection_remove_filter(_core->dbus_conn,
+ dbus_connection_remove_filter(_core->priv->dbus_conn,
filter_func, NULL);
}
- dbus_connection_dispatch(_core->dbus_conn);
+ dbus_connection_dispatch(_core->priv->dbus_conn);
/*
* NOTE: There seems to be a big problem when uninitting and
@@ -810,15 +788,15 @@
* See bug #36.
*/
#if 0
- dbus_connection_close(_core->dbus_conn);
- dbus_connection_unref(_core->dbus_conn);
+ dbus_connection_close(_core->priv->dbus_conn);
+ dbus_connection_unref(_core->priv->dbus_conn);
#endif
- _core->dbus_conn = NULL;
+ _core->priv->dbus_conn = NULL;
}
}
- _core->filters_added = FALSE;
- _core->registered = FALSE;
+ _core->priv->filters_added = FALSE;
+ _core->priv->registered = FALSE;
if (!unregistered_emitted)
g_signal_emit(_core, signals[UNREGISTERED], 0);
@@ -878,7 +856,7 @@
if (_core != NULL)
{
- _core->init_ref_count++;
+ _core->priv->init_ref_count++;
return TRUE;
}
@@ -892,15 +870,15 @@
G_LOCK(_core_lock);
_core = g_object_new(GALAGO_TYPE_CORE, NULL);
- _core->init_ref_count = 1;
+ _core->priv->init_ref_count = 1;
G_UNLOCK(_core_lock);
galago_object_set_dbus_path(GALAGO_OBJECT(_core), GALAGO_DBUS_CORE_OBJECT);
- _core->app_name = g_strdup(name);
- _core->flags = flags;
+ _core->priv->app_name = g_strdup(name);
+ _core->priv->flags = flags;
if (!strcmp(name, GALAGO_DAEMON_ID))
- _core->daemon = TRUE;
+ _core->priv->daemon = TRUE;
if (!_galago_core_connect())
_galago_core_disconnect();
@@ -916,9 +894,9 @@
if (!galago_is_initted())
return;
- _core->init_ref_count--;
+ _core->priv->init_ref_count--;
- if (_core->init_ref_count == 0)
+ if (_core->priv->init_ref_count == 0)
galago_object_destroy(GALAGO_OBJECT(_core));
}
@@ -931,28 +909,28 @@
gboolean
galago_is_connected(void)
{
- return (galago_is_initted() && _core->dbus_conn != NULL &&
- (_core->registering_connection || _core->uid != NULL ||
+ return (galago_is_initted() && _core->priv->dbus_conn != NULL &&
+ (_core->priv->registering_connection || _core->priv->uid != NULL ||
galago_is_daemon()) &&
- dbus_connection_get_is_connected(_core->dbus_conn));
+ dbus_connection_get_is_connected(_core->priv->dbus_conn));
}
gboolean
galago_is_registered(void)
{
- return _core->registered;
+ return _core->priv->registered;
}
gboolean
galago_is_daemon_active(void)
{
- return (galago_is_daemon() || _core->daemon_active);
+ return (galago_is_daemon() || _core->priv->daemon_active);
}
gboolean
galago_is_daemon(void)
{
- return (_core->daemon);
+ return (_core->priv->daemon);
}
DBusConnection *
@@ -960,7 +938,7 @@
{
g_return_val_if_fail(galago_is_initted(), NULL);
- return _core->dbus_conn;
+ return _core->priv->dbus_conn;
}
const char *
@@ -969,7 +947,7 @@
g_return_val_if_fail(galago_is_initted(), NULL);
g_return_val_if_fail(galago_is_connected(), NULL);
- return _core->uid;
+ return _core->priv->uid;
}
const char *
@@ -978,7 +956,7 @@
g_return_val_if_fail(galago_is_initted(), NULL);
g_return_val_if_fail(galago_is_connected(), NULL);
- return _core->conn_obj_path;
+ return _core->priv->conn_obj_path;
}
gboolean
@@ -987,7 +965,7 @@
g_return_val_if_fail(galago_is_initted(), FALSE);
g_return_val_if_fail(galago_is_connected(), FALSE);
- return (_core->flags & GALAGO_INIT_FEED);
+ return (_core->priv->flags & GALAGO_INIT_FEED);
}
#define ADD_SIGNAL_MATCH(iface) \
@@ -1023,7 +1001,7 @@
g_return_if_fail(galago_is_initted());
- if (_core->watch_all == watch_all)
+ if (_core->priv->watch_all == watch_all)
return;
if (!galago_is_connected())
@@ -1031,7 +1009,7 @@
dbus_conn = galago_get_dbus_conn();
- _core->watch_all = watch_all;
+ _core->priv->watch_all = watch_all;
dbus_error_init(&error);
@@ -1065,7 +1043,7 @@
g_return_val_if_fail(galago_is_initted(), FALSE);
g_return_val_if_fail(galago_is_connected(), FALSE);
- return _core->watch_all;
+ return _core->priv->watch_all;
}
void
@@ -1073,7 +1051,7 @@
{
g_return_if_fail(galago_is_initted());
- _core->exit_with_daemon = exit_with_daemon;
+ _core->priv->exit_with_daemon = exit_with_daemon;
}
gboolean
@@ -1081,7 +1059,7 @@
{
g_return_val_if_fail(galago_is_initted(), FALSE);
- return _core->exit_with_daemon;
+ return _core->priv->exit_with_daemon;
}
GalagoService *
@@ -1254,17 +1232,17 @@
return_list = g_list_append(return_list,
galago_value_new(GALAGO_VALUE_TYPE_STRING, NULL, NULL));
- _core->registering_connection = TRUE;
+ _core->priv->registering_connection = TRUE;
is_feed = galago_is_feed();
list = galago_dbus_send_message_with_reply_list(
GALAGO_OBJECT(_core), "Register", return_list,
- galago_value_new(GALAGO_VALUE_TYPE_STRING, &_core->app_name, NULL),
+ galago_value_new(GALAGO_VALUE_TYPE_STRING, &_core->priv->app_name, NULL),
galago_value_new(GALAGO_VALUE_TYPE_BOOLEAN, &is_feed, NULL),
NULL);
- _core->registering_connection = FALSE;
+ _core->priv->registering_connection = FALSE;
if (list == NULL)
{
@@ -1274,15 +1252,15 @@
}
/* TODO: Do safety checks. */
- _core->uid = g_strdup((char *)list->data);
- _core->conn_obj_path = g_strdup((char *)list->next->data);
- galago_context_set_obj_path_prefix(_core->conn_obj_path);
+ _core->priv->uid = g_strdup((char *)list->data);
+ _core->priv->conn_obj_path = g_strdup((char *)list->next->data);
+ galago_context_set_obj_path_prefix(_core->priv->conn_obj_path);
g_list_free(list);
- _core->daemon_active = TRUE;
+ _core->priv->daemon_active = TRUE;
galago_set_watch_all(TRUE);
- _core->registered = TRUE;
+ _core->priv->registered = TRUE;
g_signal_emit(_core, signals[REGISTERED], 0);
@@ -1301,7 +1279,7 @@
galago_value_new(GALAGO_VALUE_TYPE_STRING, &obj_path, NULL),
NULL);
- dbus_connection_flush(_core->dbus_conn); /* Keep this here! */
+ dbus_connection_flush(_core->priv->dbus_conn); /* Keep this here! */
_galago_dbus_unregister_connection_finish();
}
@@ -1312,13 +1290,13 @@
galago_context_clear_objects(GALAGO_REMOTE);
galago_set_watch_all(FALSE);
- g_free(_core->uid);
- g_free(_core->conn_obj_path);
+ g_free(_core->priv->uid);
+ g_free(_core->priv->conn_obj_path);
- _core->uid = NULL;
- _core->conn_obj_path = NULL;
- _core->daemon_active = FALSE;
- _core->registered = FALSE;
+ _core->priv->uid = NULL;
+ _core->priv->conn_obj_path = NULL;
+ _core->priv->daemon_active = FALSE;
+ _core->priv->registered = FALSE;
g_signal_emit(_core, signals[UNREGISTERED], 0);
}
Modified: trunk/libgalago/libgalago/galago-core.h
===================================================================
--- trunk/libgalago/libgalago/galago-core.h 2006-04-05 08:27:08 UTC (rev 2674)
+++ trunk/libgalago/libgalago/galago-core.h 2006-04-05 09:11:28 UTC (rev 2675)
@@ -39,6 +39,33 @@
/** @name Core API */
/**************************************************************************/
+#define GALAGO_TYPE_CORE (galago_core_get_type())
+
+/** Cast @c obj to a GalagoCore. */
+#define GALAGO_CORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GALAGO_TYPE_CORE, \
+ GalagoCore))
+
+/** Cast @c klass to a GalagoCore. */
+#define GALAGO_CORE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GALAGO_TYPE_CORE, \
+ GalagoCoreClass))
+
+/** Check if @c obj is a GalagoCore. */
+#define GALAGO_IS_CORE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GALAGO_TYPE_CORE))
+
+/** Check if @c klass is a GalagoCoreClass. */
+#define GALAGO_IS_CORE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GALAGO_TYPE_CORE))
+
+/** Get the class for the GalagoCore @c obj. */
+#define GALAGO_CORE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), GALAGO_TYPE_CORE, \
+ GalagoCoreClass))
+
+typedef struct _GalagoCorePrivate GalagoCorePrivate;
+
/**
* Initialization flags
*/
@@ -58,7 +85,38 @@
} GalagoInitFlags;
+typedef struct _GalagoCore
+{
+ GalagoObject parent_object;
+
+ GalagoCorePrivate *priv;
+
+} GalagoCore;
+
+typedef struct
+{
+ GalagoObjectClass parent_class;
+
+ /* Signals */
+ void (*registered)(GalagoCore *core);
+ void (*unregistered)(GalagoCore *core);
+ void (*service_added)(GalagoCore *core, GalagoService *service);
+ void (*service_removed)(GalagoCore *core, GalagoService *service);
+ void (*person_added)(GalagoCore *core, GalagoPerson *person);
+ void (*person_removed)(GalagoCore *core, GalagoPerson *person);
+ GalagoAccount *(*calc_priority_account)(GalagoCore *core,
+ GalagoPerson *person);
+
+} GalagoCoreClass;
+
/**
+ * Returns GalagoCore's GType.
+ *
+ * @return The GType.
+ */
+GType galago_core_get_type(void);
+
+/**
* Initializes Galago.
*
* @param name The ID name used for this connection. It's often the
More information about the galago-commits
mailing list