+ private int handleMultiLocalCommand(
+ final MultiLocalCommand command,
+ final File dataPath,
+ final SignalServiceConfiguration serviceConfiguration,
+ final List<String> usernames
+ ) {
+ final List<Manager> managers = usernames.stream()
+ .map(u -> loadManager(u, dataPath, serviceConfiguration))
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList());
+
+ int result = command.handleCommand(ns, managers);
+
+ for (Manager m : managers) {
+ try {
+ m.close();
+ } catch (IOException e) {
+ logger.warn("Cleanup failed", e);
+ }
+ }
+ return result;
+ }
+
+ private Manager loadManager(
+ final String username, final File dataPath, final SignalServiceConfiguration serviceConfiguration
+ ) {
+ Manager manager;
+ try {
+ manager = Manager.init(username, dataPath, serviceConfiguration, BaseConfig.USER_AGENT);
+ } catch (NotRegisteredException e) {
+ logger.error("User " + username + " is not registered.");
+ return null;
+ } catch (Throwable e) {
+ logger.error("Error loading state file for user " + username + ": {}", e.getMessage());
+ return null;
+ }
+
+ try {
+ manager.checkAccountState();
+ } catch (IOException e) {
+ logger.error("Error while checking account " + username + ": {}", e.getMessage());
+ return null;
+ }
+
+ return manager;
+ }
+