![]() |
![]() |
![]() |
![]() |
dbus-glib comes with dbus-binding-tool, which can produce somewhat nice client- and server-side wrappers for a D-Bus interface. With GDBus, gdbus-codegen is used and like its counterpart, it also takes D-Bus Introspection XML as input:
Example 2. Example D-Bus Introspection XML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
<node> <!-- org.gtk.GDBus.Example.ObjectManager.Animal: @short_description: Example docs generated by gdbus-codegen @since: 2.30 This D-Bus interface is used to describe a simple animal. --> <interface name="org.gtk.GDBus.Example.ObjectManager.Animal"> <!-- Mood: The mood of the animal. @since: 2.30 Known values for this property include <literal>Happy</literal> and <literal>Sad</literal>. Use the org.gtk.GDBus.Example.ObjectManager.Animal.Poke() method to change this property. This property influences how often the animal jumps up and down, see the #org.gtk.GDBus.Example.ObjectManager.Animal::Jumped signal for more details. --> <property name="Mood" type="s" access="read"/> <!-- Poke: @make_sad: Whether to make the animal sad. @make_happy: Whether to make the animal happy. @since: 2.30 Method used to changing the mood of the animal. See also the #org.gtk.GDBus.Example.ObjectManager.Animal:Mood property. --> <method name="Poke"> <arg direction="in" type="b" name="make_sad"/> <arg direction="in" type="b" name="make_happy"/> </method> <!-- Jumped: @height: Height, in meters, that the animal jumped. @since: 2.30 Emitted when the animal decides to jump. --> <signal name="Jumped"> <arg type="d" name="height"/> </signal> <!-- Foo: Property with no <quote>since</quote> annotation (should inherit the 2.30 from its containing interface). --> <property name="Foo" type="s" access="read"/> <!-- Bar: @since: 2.36 Property with a later <quote>since</quote> annotation. --> <property name="Bar" type="s" access="read"/> </interface> <!-- org.gtk.GDBus.Example.ObjectManager.Cat: @short_description: More example docs generated by gdbus-codegen This D-Bus interface is used to describe a cat. Right now there are no properties, methods or signals associated with this interface so it is essentially a <ulink url="http://en.wikipedia.org/wiki/Marker_interface_pattern">Marker Interface</ulink>. Note that D-Bus objects implementing this interface also implement the #org.gtk.GDBus.Example.ObjectManager.Animal interface. --> <interface name="org.gtk.GDBus.Example.ObjectManager.Cat"> </interface> </node> |
If this XML is processed like this
1 2 3 4 5 6 |
gdbus-codegen --interface-prefix org.gtk.GDBus.Example.ObjectManager. \ --generate-c-code generated-code \ --c-namespace Example \ --c-generate-object-manager \ --generate-docbook generated-docs \ gdbus-example-objectmanager.xml |
then two files generated-code.h
and
generated-code.c
are
generated. Additionally, two XML files
generated-docs-org.gtk.GDBus.Example.ObjectManager.Animal
and
generated-docs-org.gtk.GDBus.Example.ObjectManager.Cat
with Docbook XML are generated.
While the contents of generated-code.h
and
generated-code.c
are best described by the
gdbus-codegen manual
page, brief examples of how this generated code can be used can be found in
???
and ???.