[Vala] complication error: Unbable to serialize a callback(by delegate) for Dbus(using GDBus)




I'm trying to write a client for MPRIS 2.0 specs, and one of my TODO list is to get all Media players which 
activated.
This is done by passing all DBus addresses and check if it's in the format of "org.mpris.MediaPlayer2.*".
For doing this, I need to add callback to method "list_names" in interface "/org/freedesktop/DBus"(which I 
called MasterDBus) in "org.freedesktop.DBus".
This is a relevant part of my code:

[DBus (name = "org.freedesktop.DBus")]
public interface MasterDBus {
    public abstract void list_names (MDBusCallBack cb);
}

public delegate void MDBusCallBack (string[] addresses);

class ... {
    private bool on_ready () {

        try {
            bus.list_names (list_names_reply_cb);
        } catch (GLib.Error e) {
            message ("Can't list: %s", e.message);
        }

        return false;
    }

    private void create () {
        change_background.connect (on_change_background);

        try {
            bus = Bus.get_proxy_sync (BusType.SESSION, "org.freedesktop.DBus",
              "/org/freedesktop/DBus");
        }
        catch(IOError e) {
            print("%s", e.message);
        }
}

For me it looks fine. Even for valac, but it still fails(assertion):

** [Some warnings, not related.]

** (valac:2252): CRITICAL **: vala_gvariant_module_get_basic_type_info: assertion `signature != NULL' failed
src/main.vala:6.35-6.47: error: GVariant serialization of type `MDBusCallBack' is not supported
    public abstract void list_names (MDBusCallBack cb);
                                     ^^^^^^^^^^^^^

** (valac:2252): CRITICAL **: vala_ccode_identifier_construct: assertion `_name != NULL' failed

** (valac:2252): CRITICAL **: vala_gvariant_module_get_basic_type_info: assertion `signature != NULL' failed
src/main.vala:6.35-6.47: error: GVariant deserialization of type `MDBusCallBack' is not supported
    public abstract void list_names (MDBusCallBack cb);
                                     ^^^^^^^^^^^^^

** (valac:2252): CRITICAL **: vala_ccode_identifier_construct: assertion `_name != NULL' failed
src/main.vala:16.2-16.11: error: missing class prerequisite for interface `MasterDBus', add GLib.Object to 
interface declaration if unsure
    MasterDBus bus;
    ^^^^^^^^^^
src/main.vala:16.2-16.11: error: missing class prerequisite for interface `MasterDBus', add GLib.Object to 
interface declaration if unsure
    MasterDBus bus;
    ^^^^^^^^^^
Compilation failed: 4 error(s), 3 warning(s)


Why this is happening? How shell I fix it?
                                          


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]