2005-02-12 Havoc Pennington <hp@redhat.com>

* bus/driver.c (bus_driver_handle_introspect): add introspection
	for bus driver
This commit is contained in:
Havoc Pennington 2005-02-12 20:13:08 +00:00
parent 5b26893cdd
commit 85fb9ff93c
3 changed files with 92 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2005-02-12 Havoc Pennington <hp@redhat.com>
* bus/driver.c (bus_driver_handle_introspect): add introspection
for bus driver
2005-02-12 Havoc Pennington <hp@redhat.com>
* bus/driver.c: put the signature of each bus driver method in the

View file

@ -1094,6 +1094,7 @@ bus_driver_handle_introspect (DBusConnection *connection,
DBusString xml;
DBusMessage *reply;
const char *v_STRING;
int i;
_dbus_verbose ("Introspect() on bus driver\n");
@ -1128,6 +1129,87 @@ bus_driver_handle_introspect (DBusConnection *connection,
goto oom;
if (!_dbus_string_append (&xml, " </interface>\n"))
goto oom;
if (!_dbus_string_append_printf (&xml, " <interface name=\"%s\">\n",
DBUS_INTERFACE_ORG_FREEDESKTOP_DBUS))
goto oom;
i = 0;
while (i < _DBUS_N_ELEMENTS (message_handlers))
{
if (!_dbus_string_append_printf (&xml, " <method name=\"%s\">\n",
message_handlers[i].name))
goto oom;
/* This hacky mess can probably get mopped up eventually when the
* introspection format is related to the signature format
*/
if (strcmp (message_handlers[i].in_args, "") == 0)
;
else if (strcmp (message_handlers[i].in_args,
DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_UINT32_AS_STRING) == 0)
{
if (!_dbus_string_append (&xml, " <arg direction=\"in\" type=\"string\"/>\n"))
goto oom;
if (!_dbus_string_append (&xml, " <arg direction=\"in\" type=\"uint32\"/>\n"))
goto oom;
}
else if (strcmp (message_handlers[i].in_args,
DBUS_TYPE_STRING_AS_STRING) == 0)
{
if (!_dbus_string_append (&xml, " <arg direction=\"in\" type=\"string\"/>\n"))
goto oom;
}
else
{
_dbus_warn ("Lack introspection code for in sig '%s'\n",
message_handlers[i].in_args);
_dbus_assert_not_reached ("FIXME introspection missing");
}
if (strcmp (message_handlers[i].out_args, "") == 0)
;
else if (strcmp (message_handlers[i].out_args,
DBUS_TYPE_STRING_AS_STRING) == 0)
{
if (!_dbus_string_append (&xml, " <arg direction=\"out\" type=\"string\"/>\n"))
goto oom;
}
else if (strcmp (message_handlers[i].out_args,
DBUS_TYPE_BOOLEAN_AS_STRING) == 0)
{
if (!_dbus_string_append (&xml, " <arg direction=\"out\" type=\"boolean\"/>\n"))
goto oom;
}
else if (strcmp (message_handlers[i].out_args,
DBUS_TYPE_UINT32_AS_STRING) == 0)
{
if (!_dbus_string_append (&xml, " <arg direction=\"out\" type=\"uint32\"/>\n"))
goto oom;
}
else if (strcmp (message_handlers[i].out_args,
DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_STRING_AS_STRING) == 0)
{
/* FIXME introspection format doesn't handle arrays yet */
if (!_dbus_string_append (&xml, " <arg direction=\"out\" type=\"string\"/>\n"))
goto oom;
}
else
{
_dbus_warn ("Lack introspection code for out sig '%s'\n",
message_handlers[i].out_args);
_dbus_assert_not_reached ("FIXME introspection missing");
}
if (!_dbus_string_append (&xml, " </method>\n"))
goto oom;
++i;
}
if (!_dbus_string_append (&xml, " </interface>\n"))
goto oom;
if (!_dbus_string_append (&xml, "</node>\n"))
goto oom;

View file

@ -2374,6 +2374,11 @@
the deprecation status of the interface.
</para>
</listitem>
<listitem>
<para>
The "name" attribute on arguments is optional.
</para>
</listitem>
</itemizedlist>
</para>