Как использовать типы, сгенерированные gdbus-codegen?

Я реализую сервер dbus, и для упрощения я решил использовать gdbus-codegen,

Этот пример hello world и его репозиторий будут генерировать заголовочные и исходные файлы. Затем это делается для подключения сигнала к функции:

g_signal_connect (interface, 
                  "handle-hello-world", 
                  G_CALLBACK (on_handle_hello_world), NULL);

Мои вопросы следующие:

  • какова функция GType min_min_bus_gdbus_get_type (void) должен делать? Он объявлен, но не определен в сгенерированных файлах.
  • вместо подключения сигнала к функции обратного вызова (как описано выше), могу ли я как-то использовать struct MinMinBusGDBUSIfaceобъявлено в сгенерированном заголовке?

Любой пример, который я нашел в сети, имеют эти две вещи (*_get_type (void) объявление функции и struct *Iface объявлено в сгенерированном заголовке. Как их использовать?

1 ответ

Поиграв с примером, я наконец-то разобрался с ответами, и как получить доступ к структуре интерфейса, и как ее настроить. Это нигде не найти, и нигде не задокументировано.


Посмотрев в сгенерированный исходный файл, функция GType min_min_bus_gdbus_get_type (void) может быть определено в огромном макросе, но я не уверен в его функциональности и в том, как его использовать.


Есть способ получить доступ к struct MinMinBusGDBUSIface с помощью MIN_MIN_BUS_GDBUS_GET_IFACE макрос (снова в сгенерированном заголовке).

Чтобы установить обратный вызов функции, эта строка в примере:

g_signal_connect (interface, 
                  "handle-hello-world", 
                  G_CALLBACK (on_handle_hello_world), NULL);

можно заменить на:

MinMinBusGDBUSIface* iface = MIN_MIN_BUS_GDBUS_GET_IFACE(interface);
iface->handle_hello_world = &on_handle_hello_world;

и обратный вызов должен быть изменен, чтобы иметь ту же сигнатуру, что и обратный вызов функции:

static gboolean
on_handle_hello_world (MinMinBusGDBUS *interface, 
                       GDBusMethodInvocation *invocation,
                       const gchar *greeting)
Другие вопросы по тегам