- eventBus.post(new GenericMessage(String.format("Could not join %s on %s.", channel.name(), channel.network().name())));
+ logger.warn(String.format("Could not join %s on %s!", missingChannel.name(), network.name()), ioe1);
+ }
+ }
+ } else if (missingNetworks.isEmpty()) {
+ synchronized (syncObject) {
+ try {
+ syncObject.wait(TimeUnit.MINUTES.toMillis(1));
+ } catch (InterruptedException ie1) {
+ /* ignore. */
+ }
+ }
+ continue;
+ }
+
+ Map<Long, Network> timesForNextConnects = new TreeMap<>(missingNetworks.stream()
+ .collect(Collectors.toMap(connectionBackoff::getBackoff, Function.identity(), (network, ignore) -> network)));
+
+ Entry<Long, Network> firstNetwork = timesForNextConnects.entrySet().stream().findFirst().get();
+ if (firstNetwork.getKey() > 0) {
+ eventBus.post(new GenericMessage(String.format("Waiting %d seconds to connect to %s...", TimeUnit.MILLISECONDS.toMinutes(firstNetwork.getKey()), firstNetwork.getValue().name())));
+ synchronized (syncObject) {
+ try {
+ syncObject.wait(firstNetwork.getKey());
+ } catch (InterruptedException ie1) {
+ /* ignore. */