[Kde-hardware-devel] DBus introspection files and qdbusxml2cpp
Gökçen Eraslan
gokcen at pardus.org.tr
Tue Nov 16 20:38:53 CET 2010
Hello,
When I look org.freedesktop.NetworkManagerUserSettings interface of kded
module using d-feet, I got an exception like:
dbus.exceptions.IntrospectionParserException: Error parsing introspect data:
<class 'xml.parsers.expat.ExpatError'>: unbound prefix: line 5, column 4
After some digging, I understand that the reason of that exception is that NM
introspection files that we use, uses some tags from telepathy namespace (for
example tp:docstring and tp:enum) but qdbusxml2cpp does not respect xml
namespaces.
The original introspection file we use to generate qt bindings is [1] but the
instrospection xml exposed to dbus by our qt bindings is [2]. As you can see
in [2] there is no xmlns definition, so clients that parses introspection
(like d-feet) cannot parse introspection data due to the lack of xmlns.
When I talked to #telepathy guys in IRC, and they said that, you cannot use
qdbusxml2cpp and telepathy together since qdbusxml2cpp does not understand
namespaces. They also said that qdbusxml2cpp generates syncronous dbus calls,
which is dangerous[3].
Here are some possible solutions:
1- Easy: Removing tp:docstring and tp:enum tags from
exportedconnectionsecrets.h and exportedconnection.h
2- Hard: Generate the code using telepathy-qt4 tools[4] and switch the code
using dbus bindings to newly generated async code.
My suggestion is to solve using (1) and adding a TODO item about (2). Any
ideas?
[1]
http://websvn.kde.org/trunk/extragear/base/networkmanagement/backends/NetworkManager/introspection/nm-
exported-connection.xml?view=markup
[2] http://pastebin.com/SLbmtKCC
[3] http://smcv.pseudorandom.co.uk/2008/11/nonblocking/
[4] http://git.collabora.co.uk/?p=telepathy-qt4.git;a=tree;f=tools;hb=HEAD
--
Gökçen Eraslan
More information about the Kde-hardware-devel
mailing list