glib signal marshaller

Roy Marples roy at marples.name
Thu Jan 29 02:50:38 PST 2009


Hi List

I've been pretty new to working with dbus and glib, but have written a dbus 
server using C which works well, but am having issues with the dbus/glib 
client for handling signals.

The signature of the signal is this
        <signal name="ScanResults">
              <arg name="interface" direction="out" type="s"/>
              <arg name="results" direction="out" type="a(suuss)"/>
            </signal>

The best I have for glib-genmarshal is
VOID:STRING,BOXED
which I'm pretty sure is wrong.

The glib code trying to register is like this

        otype = dbus_g_type_get_struct("GValueArray",
                                       G_TYPE_STRING,
                                       G_TYPE_UINT,
                                       G_TYPE_UINT,
                                       G_TYPE_STRING,
                                       G_TYPE_STRING,
                                       G_TYPE_INVALID);
        otype = dbus_g_type_get_collection("GPtrArray", otype);
        dbus_g_object_register_marshaller(_dhcpcd_marshal_VOID__STRING_BOXED, 
G_TYPE_NONE,
                                          otype, G_TYPE_INVALID);
        dbus_g_proxy_add_signal(dbus, "ScanResults",
                                G_TYPE_STRING, otype, G_TYPE_INVALID);
        dbus_g_proxy_connect_signal(dbus, "ScanResults",
                                    G_CALLBACK(dhcpcd_scan_results),
                                    bus, NULL);

Can anyone help me, or point me to someone/list who can?

Thanks

Roy


More information about the dbus mailing list