Почему метод GObject по-прежнему вызывается, даже если аргументы обратного вызова не совпадают с аргументами в XML?
Предположим, у меня есть такой метод
<interface name="org.Test.ChildTest">
<!-- set_age(guint32 new_age): sets new age -->
<method name="set_age">
<arg type="u" name="new_age" direction="in"/>
</method>
В моей таблице методов у меня есть:
{ (GCallback) child_test_set_age, dbus_glib_marshal_child_test_BOOLEAN__UINT_POINTER, 0 }
и правильная сигнатура метода GObject:
gboolean
child_test_set_age (ChildTest *childTest, guint ageIn, GError** error)
Почему мой метод,child_test_set_age()
по-прежнему вызывается в DBus, даже если аргументы обратного вызова не совпадают с указанными в моем XML? Например, если я добавлю еще один аргумент послеguint ageIn
, какchar*
или жеguint
или какой-то другой случайный тип?
Я заметил, что это не будет работать, если функция DBus включает членов с направлением OUT. Кажется, что любой ненужный аргумент типа IN отбрасывается, и вызов выполняется как обычно.
Хотя я считаю, что это не имеет никакого значения, я использую инструмент привязки D-BUS 0.94, glib-2.30.0 и dbus-glib 0.94.