dbus_g_connection_close() ?

Colin Walters walters at verbum.org
Tue Sep 6 12:25:28 PDT 2005


On Tue, 2005-09-06 at 17:58 +0100, Mark McLoughlin wrote:
> Hey,
> 	Since you currently have to close a connection before unrefing it for
> the last time, it seems like dbus_g_connection_close() would be a
> sensible addition to the glib bindings?
> 
> 	Patch below, okay to commit?

It looks fine to me.  But - the larger issue here is whether developers
are allowed to unref/close connections at all, and if so when.

This came up before.  libdbus wants a module writer to close the
connection before the last unref.  Now, say you are writing a library
which uses libdbus internally (e.g. gnome-vfs); how do you know whether
you have to close the connection before you unref in
gnome_vfs_shutdown() or whatever?  Even if there was a way to get the
refcount of the connection, module writers would end up doing:

if (dbus_connection_get_refcount (connection) == 1) 
  dbus_connection_close (connection)
dbus_connection_unref (connection)

Which is first of all ugly, and second of all obviously racy, so we'd
need to export dbus_connection_lock or something...  

Havoc said if I remember correctly in that discussion that module
writers should just never unref the connection.  I think that's true for
shared connections (which is what most modules use).  

Now, we probably do need to keep the
dbus_connection_ref/dbus_connection_unref for the
dbus_connection_open_private use case. 

So when you commit the patch, could you add a bit of documentation to
dbus_g_connection_close/dbus_g_connection_unref that they should simply
not be used at the moment (since the GLib bindings don't provide a way
to get non-shared connections)?

We should probably also fix libdbus to get rid of the idea of refcounts
for shared connections; e.g. the docs for dbus_connection_open shouldn't
mention the refcount, and dbus_connection_{ref,unref} should have
_dbus_return_val_if_fail (!connection->shared, NULL) or whatever.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.freedesktop.org/archives/dbus/attachments/20050906/a81f07cd/attachment.pgp


More information about the dbus mailing list