+ public void handleCommand(
+ final Namespace ns,
+ final MultiAccountManager c,
+ final OutputWriter outputWriter
+ ) throws CommandException {
+ Shutdown.installHandler();
+ logger.info("Starting daemon in multi-account mode");
+ final var noReceiveStdOut = Boolean.TRUE.equals(ns.getBoolean("no-receive-stdout"));
+ final var receiveMode = ns.<ReceiveMode>get("receive-mode");
+ final var receiveConfig = getReceiveConfig(ns);
+ c.getManagers().forEach(m -> {
+ m.setReceiveConfig(receiveConfig);
+ addDefaultReceiveHandler(m, noReceiveStdOut ? null : outputWriter, receiveMode != ReceiveMode.ON_START);
+ });
+ c.addOnManagerAddedHandler(m -> {
+ m.setReceiveConfig(receiveConfig);
+ addDefaultReceiveHandler(m, noReceiveStdOut ? null : outputWriter, receiveMode != ReceiveMode.ON_START);
+ });
+
+ try (final var daemonHandler = new MultiAccountDaemonHandler(c, receiveMode)) {
+ setup(ns, daemonHandler);
+
+ synchronized (this) {
+ try {
+ Shutdown.waitForShutdown();
+ } catch (InterruptedException ignored) {
+ }
+ }
+ }
+ }