From: David ‘Bombe’ Roden Date: Mon, 8 Apr 2013 20:15:56 +0000 (+0200) Subject: Send event when a bot is added. X-Git-Url: https://git.pterodactylus.net/?p=xudocci.git;a=commitdiff_plain;h=103a6342cdf0c852da2a9aef1d2129e51782d9ad Send event when a bot is added. --- diff --git a/src/main/java/net/pterodactylus/xdcc/core/Core.java b/src/main/java/net/pterodactylus/xdcc/core/Core.java index 58afb8e..c59c9d5 100644 --- a/src/main/java/net/pterodactylus/xdcc/core/Core.java +++ b/src/main/java/net/pterodactylus/xdcc/core/Core.java @@ -32,6 +32,7 @@ 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; @@ -179,20 +180,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())); diff --git a/src/main/java/net/pterodactylus/xdcc/core/event/BotAdded.java b/src/main/java/net/pterodactylus/xdcc/core/event/BotAdded.java new file mode 100644 index 0000000..7cf1ac3 --- /dev/null +++ b/src/main/java/net/pterodactylus/xdcc/core/event/BotAdded.java @@ -0,0 +1,55 @@ +/* + * XdccDownloader - BotAdded.java - Copyright © 2013 David Roden + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.pterodactylus.xdcc.core.event; + +import net.pterodactylus.xdcc.data.Bot; + +/** + * Notifies listeners that a {@link Bot} was added. + * + * @author David ‘Bombe’ Roden + */ +public class BotAdded { + + /** The bot that was added. */ + private final Bot bot; + + /** + * Creates a new bot added event. + * + * @param bot + * The bot that was added + */ + public BotAdded(Bot bot) { + this.bot = bot; + } + + // + // ACCESSORS + // + + /** + * Returns the bot that was added. + * + * @return The bot that was added. + */ + public Bot bot() { + return bot; + } + +}