X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fxdcc%2Fcore%2FCore.java;h=2691526f45c3d0badb0fd125a691cb0ec02e4d06;hb=f3cc380e2d4bdb0e6cd3d975531d18eee69dad01;hp=d5a45b1c3128419180709d64e824585f77248447;hpb=20a25d2aa813e41f922bdea013ac09fcb75784e8;p=xudocci.git diff --git a/src/main/java/net/pterodactylus/xdcc/core/Core.java b/src/main/java/net/pterodactylus/xdcc/core/Core.java index d5a45b1..2691526 100644 --- a/src/main/java/net/pterodactylus/xdcc/core/Core.java +++ b/src/main/java/net/pterodactylus/xdcc/core/Core.java @@ -32,6 +32,8 @@ import net.pterodactylus.irc.event.ChannelMessageReceived; import net.pterodactylus.irc.event.ConnectionEstablished; import net.pterodactylus.irc.util.MessageCleaner; import net.pterodactylus.irc.util.RandomNickname; +import net.pterodactylus.xdcc.core.event.BotAdded; +import net.pterodactylus.xdcc.core.event.CoreStarted; import net.pterodactylus.xdcc.data.Bot; import net.pterodactylus.xdcc.data.Channel; import net.pterodactylus.xdcc.data.Network; @@ -83,6 +85,19 @@ public class Core extends AbstractIdleService { } // + // ACCESSORS + // + + /** + * Returns all currently known bots. + * + * @return All currently known bots + */ + public Collection bots() { + return networkBots.values(); + } + + // // ACTIONS // @@ -114,6 +129,9 @@ public class Core extends AbstractIdleService { connection.start(); } } + + /* notify listeners. */ + eventBus.post(new CoreStarted(this)); } @Override @@ -144,7 +162,7 @@ public class Core extends AbstractIdleService { /* join all channels on this network. */ for (Channel channel : channels) { - if (channel.network().equals(network)) { + if (channel.network().equals(network.get())) { try { connectionEstablished.connection().joinChannel(channel.name()); } catch (IOException ioe1) { @@ -175,20 +193,23 @@ public class Core extends AbstractIdleService { return; } - Bot bot; - synchronized (networkBots) { - if (!networkBots.contains(network.get(), channelMessageReceived.source().nick().get())) { - networkBots.put(network.get(), channelMessageReceived.source().nick().get(), new Bot(network.get()).name(channelMessageReceived.source().nick().get())); - } - bot = networkBots.get(network.get(), channelMessageReceived.source().nick().get()); - } - /* parse pack information. */ Optional pack = parsePack(message); if (!pack.isPresent()) { return; } + Bot bot; + synchronized (networkBots) { + if (!networkBots.contains(network.get(), channelMessageReceived.source().nick().get())) { + bot = new Bot(network.get()).name(channelMessageReceived.source().nick().get()); + networkBots.put(network.get(), channelMessageReceived.source().nick().get(), bot); + eventBus.post(new BotAdded(bot)); + } else { + bot = networkBots.get(network.get(), channelMessageReceived.source().nick().get()); + } + } + /* add pack. */ bot.addPack(pack.get()); logger.fine(String.format("Bot %s now has %d packs.", bot, bot.packs().size()));