import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.time.Duration;
+import java.time.Instant;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
/** The logger. */
private static final Logger logger = Logger.getLogger(Core.class.getName());
+ private final Instant startup = Instant.now();
private final Object syncObject = new Object();
/** The event bus. */
private final EventBus eventBus;
Network network = entry.getKey();
Collection<Bot> bots = networkBots.row(network).values();
int packCount = bots.stream().mapToInt((bot) -> bot.packs().size()).reduce((a, b) -> a + b).orElse(0);
- return new ConnectedNetwork(network, entry.getValue().hostname(),
- entry.getValue().port(), entry.getValue().nickname(),
+ Connection connection = entry.getValue();
+ return new ConnectedNetwork(network, connection.hostname(),
+ connection.port(),
+ connection.getUptime().orElse(Duration.ofSeconds(0)),
+ connection.nickname(),
channels.stream()
.filter((channel) -> channel.network()
.equals(network))
return downloads.values();
}
+ public Duration getUptime() {
+ return Duration.between(startup, Instant.now());
+ }
+
//
// ACTIONS
//
return;
}
- /* get connection. */
- Connection connection = networkConnections.get(bot.network());
- if (connection == null) {
- /* request for unknown network? */
- return;
- }
-
/* stop the DCC receiver. */
if (download.get().dccReceiver() != null) {
download.get().dccReceiver().stop();
downloads.remove(pack.name(), download.get());
}
+ /* get connection. */
+ Connection connection = networkConnections.get(bot.network());
+ if (connection == null) {
+ /* request for unknown network? */
+ return;
+ }
+
/* remove the request from the bot, too. */
try {
connection.sendMessage(bot.name(), String.format("XDCC %s", (download.get().dccReceiver() != null) ? "CANCEL" : "REMOVE"));
* The connection to remove
*/
private void removeConnection(Connection connection) {
+ logger.debug(String.format("Removing Connection %s...", connection));
Optional<Network> network = getNetwork(connection);
if (!network.isPresent()) {
+ logger.debug(String.format("Connection %s did not belong to any network.", connection));
return;
}
+ logger.debug(String.format("Connection %s belongs to network %s.", connection, network.get()));
networkConnections.remove(network.get());
/* find all channels that need to be removed. */
if (!joinedChannel.network().equals(network.get())) {
continue;
}
-
+ logger.debug(String.format("Channel %s will be removed.", joinedChannel));
channelIterator.remove();
}
}
"Kicked from %s by %s: %s",
kickedFromChannel.channel(),
kickedFromChannel.kicker(),
- kickedFromChannel.reason().or("<unknown>")
+ kickedFromChannel.reason().orElse("<unknown>")
)));
}
}