Re: When is an interface not an interface?



On Tue, 2009-10-27 at 12:07 +0100, Will Stephenson wrote:
> ...when it can be modified at will by its implementors.  Warning, rant ahead.
> 
> The DBUS interface org.freedesktop.NetworkManager.Connection.Active is 
> declared once in nm-active-connection.xml, including the signal 
> PropertiesChanged.

> In nm-vpn-connection.xml this same interface is redeclared without the signal,
> because the same file also declares 
> org.freedesktop.NetworkManager.VPN.Connection with a signal of the same name. 

https://bugzilla.gnome.org/show_bug.cgi?id=569294

The duplication is due to a limitation of dbus-glib.

> The Vpn property is also omitted.

An oversight, as the object actually does implement the property in
question.

> As a result my interface object to a Connection.Active never receives 
> PropertiesChanged, because VPN.Connection emits this signal and 
> Connection.Active does not.

We can and should attempt to fix this in NetworkManager as it's not
possible yet for this to be fixed in dbus-glib.

> This is sloppy OO.  VPN connection objects should fulfil the interface that 
> they appear to advertise, allowing client authors to treat them as 

The intention has always been to have the VPN objects implement the full
ActiveConnection D-Bus interface.  

> activeconnections.  Not to mention that including the both bindings headers 
> from nm-active-connection.xml and nm-vpn-connection.xml gets me a compiler 
> error due to multiple definitions of the same class, so I have to maintain my 
> own copy of those files with the competing interface removed, increasing the 
> chance that I get out of sync with the NM I am building for.

While NM specifically doesn't install the introspection XML for a reason
(the generated HTML document, not the introspection XML, is the official
API documentation the developers should be using), I understand the
issue it should be fixed.

I've synchronized the introspection XML here:

671f00c86f047dfe57f43726a0eefadaad6f2734 (master)
86eb8b831184a84e76caf7eacbc6aed856091196 (0.7.x)

though that doesn't fix PropertiesChanged signal emission for the other
dbus interface, which will take a bit more work.

Dan




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]