Description
I think something is now up with withAutoConnect(false)
in the latest code.
This on it's own ...
var bldr = DBusConnectionBuilder.forAddress(baddr);
bldr.transportConfig().withAutoConnect(false);
var conx = bldr.build();
conx.connect();
.. does not work, resulting in an exception when build()
is called.
org.freedesktop.dbus.exceptions.DBusException: Not Connected
at org.freedesktop.dbus@5.0.0-SNAPSHOT/org.freedesktop.dbus.connections.impl.DBusConnection.connect(DBusConnection.java:98)
at org.freedesktop.dbus@5.0.0-SNAPSHOT/org.freedesktop.dbus.connections.impl.DBusConnectionBuilder.build(DBusConnectionBuilder.java:202)
at com.sshtools.djfeet.ui/com.sshtools.djfeet.ui.NewBusPage.run(NewBusPage.java:203)
You have to do this ...
var bldr = DBusConnectionBuilder.forAddress(baddr);
bldr.withRegisterSelf(false);
bldr.transportConfig().withAutoConnect(false);
var conx = bldr.build();
conx.connect();
This connects fine, but it means the Hello()
was never sent and any subsequent messages are just going to fail. As far as I can tell, its not possible to send the hello myself either, as an internal list is updated at that point.
Incidentally, the reason I tried without auto-connect in the first place was to get some control over exceptions. I have an external transport (you may remember i mentioned an SSH transport before). If that SSH connection fails for a reason I know a retry will not help, I have to now throw a some unchecked exception (e.g. IllegalStateException
) instead of IOException
which seems to make it try again. I can defeat this behaviour by setting TransportConfig.setTimeout()
to exactly 500.