public class DbusCommandHandler {
public static void initDbusClient(
- final Command command, final String account, final boolean systemBus, final CommandHandler commandHandler
+ final Command command,
+ final String account,
+ final boolean systemBus,
+ final String busname,
+ final CommandHandler commandHandler
) throws CommandException {
try {
final var busType = systemBus ? DBusConnection.DBusBusType.SYSTEM : DBusConnection.DBusBusType.SESSION;
try (var dBusConn = DBusConnectionBuilder.forType(busType).build()) {
- handleCommand(command, account, dBusConn, commandHandler);
+ handleCommand(command, account, dBusConn, busname, commandHandler);
}
} catch (ServiceUnknown e) {
throw new UserErrorException("signal-cli DBus daemon not running on "
final Command command,
final String account,
final DBusConnection dBusConn,
+ final String busname,
final CommandHandler commandHandler
) throws CommandException, DBusException {
try {
throw new UserErrorException("You cannot specify a account (phone number) when linking");
}
- handleProvisioningCommand(c, dBusConn, commandHandler);
+ handleProvisioningCommand(c, dBusConn, busname, commandHandler);
return;
}
if (account == null && command instanceof MultiLocalCommand c) {
- handleMultiLocalCommand(c, dBusConn, commandHandler);
+ handleMultiLocalCommand(c, dBusConn, busname, commandHandler);
return;
}
if (account != null && command instanceof RegistrationCommand c) {
- handleRegistrationCommand(c, account, dBusConn, commandHandler);
+ handleRegistrationCommand(c, account, dBusConn, busname, commandHandler);
return;
}
if (!(command instanceof LocalCommand localCommand)) {
throw new UserErrorException("Command only works in multi-account mode");
}
- var accountObjectPath = account == null ? tryGetSingleAccountObjectPath(dBusConn) : null;
+ var accountObjectPath = account == null ? tryGetSingleAccountObjectPath(dBusConn, busname) : null;
if (accountObjectPath == null) {
accountObjectPath = DbusConfig.getObjectPath(account);
}
- handleLocalCommand(localCommand, accountObjectPath, dBusConn, commandHandler);
+ handleLocalCommand(localCommand, accountObjectPath, dBusConn, busname, commandHandler);
} catch (UnsupportedOperationException e) {
throw new UserErrorException("Command is not yet implemented via dbus", e);
} catch (DBusExecutionException e) {
}
}
- private static String tryGetSingleAccountObjectPath(final DBusConnection dBusConn) throws DBusException, CommandException {
- var control = dBusConn.getRemoteObject(DbusConfig.getBusname(),
- DbusConfig.getObjectPath(),
- SignalControl.class);
+ private static String tryGetSingleAccountObjectPath(
+ final DBusConnection dBusConn, final String busname
+ ) throws DBusException, CommandException {
+ var control = dBusConn.getRemoteObject(busname, DbusConfig.getObjectPath(), SignalControl.class);
try {
final var accounts = control.listAccounts();
if (accounts.isEmpty()) {
}
private static void handleMultiLocalCommand(
- final MultiLocalCommand c, final DBusConnection dBusConn, final CommandHandler commandHandler
+ final MultiLocalCommand c,
+ final DBusConnection dBusConn,
+ final String busname,
+ final CommandHandler commandHandler
) throws CommandException, DBusException {
- final var signalControl = dBusConn.getRemoteObject(DbusConfig.getBusname(),
- DbusConfig.getObjectPath(),
- SignalControl.class);
- try (final var multiAccountManager = new DbusMultiAccountManagerImpl(signalControl, dBusConn)) {
+ final var signalControl = dBusConn.getRemoteObject(busname, DbusConfig.getObjectPath(), SignalControl.class);
+ try (final var multiAccountManager = new DbusMultiAccountManagerImpl(signalControl, dBusConn, busname)) {
commandHandler.handleMultiLocalCommand(c, multiAccountManager);
}
}
final LocalCommand c,
String accountObjectPath,
final DBusConnection dBusConn,
+ final String busname,
final CommandHandler commandHandler
) throws CommandException, DBusException {
- var signal = dBusConn.getRemoteObject(DbusConfig.getBusname(), accountObjectPath, Signal.class);
- try (final var manager = new DbusManagerImpl(signal, dBusConn)) {
+ var signal = dBusConn.getRemoteObject(busname, accountObjectPath, Signal.class);
+ try (final var manager = new DbusManagerImpl(signal, dBusConn, busname)) {
commandHandler.handleLocalCommand(c, manager);
}
}
final RegistrationCommand c,
String account,
final DBusConnection dBusConn,
+ final String busname,
final CommandHandler commandHandler
) throws CommandException, DBusException {
- final var signalControl = dBusConn.getRemoteObject(DbusConfig.getBusname(),
- DbusConfig.getObjectPath(),
- SignalControl.class);
+ final var signalControl = dBusConn.getRemoteObject(busname, DbusConfig.getObjectPath(), SignalControl.class);
try (final var registrationManager = new DbusRegistrationManagerImpl(account, signalControl, dBusConn)) {
commandHandler.handleRegistrationCommand(c, registrationManager);
}
}
private static void handleProvisioningCommand(
- final ProvisioningCommand c, final DBusConnection dBusConn, final CommandHandler commandHandler
+ final ProvisioningCommand c,
+ final DBusConnection dBusConn,
+ final String busname,
+ final CommandHandler commandHandler
) throws CommandException, DBusException {
- final var signalControl = dBusConn.getRemoteObject(DbusConfig.getBusname(),
- DbusConfig.getObjectPath(),
- SignalControl.class);
+ final var signalControl = dBusConn.getRemoteObject(busname, DbusConfig.getObjectPath(), SignalControl.class);
final var provisioningManager = new DbusProvisioningManagerImpl(signalControl, dBusConn);
commandHandler.handleProvisioningCommand(c, provisioningManager);
}