gdbus-monitor - интерфейс `‹none``

Имеет ли интерфейс <none> в выводе gdbus-monitor особое значение?

Какой вызов API требуется для создания такого сообщения с использованием GDbus (g_dbus_connection_register_object не позволяет передать NULL как GDBusInterfaceInfo *, и это, кажется, единственный способ зарегистрировать объект на пути)

связанные: dbus - зарегистрировать объект на удаленном интерфейсе NULL


person drahnr    schedule 21.08.2013    source источник


Ответы (2)


Изучаем dbus-monitor rel="nofollow">исходный код показывает, что это происходит, как только DBUS_EXPORT const char * dbus_message_get_interface ( DBusMessage * message ) возвращает NULL (что действительно!, но не в соответствии со спецификацией, которая требует как минимум один . и два фрагмента имени!! EDIT: Заметным исключением являются вызовы методов, которые не требуют, чтобы поле интерфейса сообщения было установить http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-types).


g_dbus_message_new_method_call (...) позволяет interface_ быть нулевым. Но это решает только половину проблем (отправитель). Метод приемника, по-видимому, не существует для interface_s, равного NULL.


Оказывается, это ошибка, я провел исследование исходного кода и отправил сообщение об ошибке (включая исправление) https://bugzilla.gnome.org/show_bug.cgi?id=706675

person drahnr    schedule 21.08.2013

клиент должен знать имя интерфейса при подписке g_dbus_connection_signal_subscribe на любой сигнал, иначе он будет прослушивать все интерфейсы, что неэффективно. Интерфейс необходим для связывания методов и сигналов в едином объекте, упомянутом в xml-файле самоанализа сервера.

person Rathin Paul    schedule 06.03.2015
comment
а) этому вопросу более 1,5 лет, зачем отвечать сейчас б) ответом, который не решает и не объясняет первопричину. - person drahnr; 07.03.2015