October 04, 2022

Hi,

I am currently trying to connect to a signal on UDisks2 to be notified whenever the user plugs a USB drive on the system, but my method never gets called.

Here is my code :

import ddbus;
import ddbus.c_lib;

import std.stdio;

final class UsbDevice
{
    void onInterfacesAdded(ObjectPath path, Variant!DBusAny[string][string] params)
    {
        writeln("Interfaces added");
    }
}


void main()
{
    auto conn = connectToBus(DBusBusType.DBUS_BUS_SYSTEM);
    auto router = new MessageRouter();
    auto dev = new UsbDevice();

    MessagePattern ifaceAdded = MessagePattern(
        ObjectPath("/org/freedesktop/UDisks2"),                                                   interfaceName("org.freedesktop.DBus.ObjectManager"),
                                               "InterfacesAdded",
                                               true);
    router.setHandler(ifaceAdded, &dev.onInterfacesAdded);
    registerRouter(conn, router);

    simpleMainLoop(conn);
}

What am I doing wrong ?

Thanks in advance,

Ol