Request for the 1.0 release

Havoc Pennington hp at redhat.com
Sat Feb 25 19:58:12 PST 2006


On Sun, 2006-02-26 at 02:48 +0100, Thiago Macieira wrote:
> It works if the bindings play nice with each other. Currently, we don't. 
> We don't register the objects because the tree is dynamic and can change 
> without calling "registerObject".

I'm not sure I understand all the issues - do you think this is
something fixable?

Is the problem you can't reliably tell if another binding registers the
same object?

> And now getting to what I wanted to know: if you call 
> dbus_g_proxy_get_interface() on the "destroyed" signal, what interface do 
> you get?

get_interface() is something you call on the proxy itself, not on the
signal; so you'd always get whatever interface you created the proxy
with (the dbus interface name of the remote object). If a remote object
has two interfaces, with DBusGProxy you have to create two proxies, or I
think you can just pass in NULL for the interface (which will then omit
it in the DBusMessage as well).

The destroy signal is just a member of the DBusGProxy local class; it's
not conceptually a signal on the remote object or a member of any dbus
interface, in fact it's only emitted in response to bus events - it
would not be emitted if the remote object were finalized. The signal
should really be called "disconnected" or "name_owner_changed" or
something probably.

DBusGProxy does not map remote signals to regular GObject signals,
instead there's a special dbus_g_proxy_connect_signal() that you use
instead of g_signal_connect() for remote signals. To map remote signals
to regular GObject signals, a new proxy *class* would have to be
generated for each remote object, while right now the proxy instances
all have the class DBusGProxy.

> I should have said so before: if I'm going to mimic the behaviour, I 
> should could just as well use the same interface names.

The glib bindings aren't very heavily tested or evolved, they could kind
of use some love even...

I sort of started on the glib bindings, then Colin sort of
mostly-finished them, now they are kind of not maintained enough.

> >com_example_StateMachine_get_info (DBusGProxy *proxy, char ** OUT_name,
> >char ** OUT_state, GError **error)
> >{
> >  return dbus_g_proxy_call (proxy, "GetInfo", error, G_TYPE_INVALID,
> >G_TYPE_STRING, OUT_name, G_TYPE_STRING, OUT_state, G_TYPE_INVALID);
> >}
> 
> /me notes the naming-style conversion

This is one of the strange things about the glib bindings really,
probably the full "glib style" conversion would be 
"com_example_state_machine_get_info()" and the "keep it all dbus" would
be com_example_StateMachine_GetInfo()

I'm not sure what's up with the hybrid approach, it looks pretty weird.

> The idea of doing that to reduce relocation counts isn't ours. See 
> http://people.redhat.com/drepper/dsohowto.pdf section 2.4.3.

Uli strikes again ;-)

Havoc




More information about the dbus mailing list