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=00e31c6e882368bea95b81e76c459667751ae7ab;hpb=b42f55981daa243857ee396a500bec21bf077ca9;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 00e31c6..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 @@ -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()));