import net.pterodactylus.irc.event.ChannelJoined;
import net.pterodactylus.irc.event.ChannelMessageReceived;
import net.pterodactylus.irc.event.ConnectionEstablished;
+import net.pterodactylus.irc.event.DccDownloadFailed;
import net.pterodactylus.irc.event.DccDownloadFinished;
import net.pterodactylus.irc.event.DccSendReceived;
+import net.pterodactylus.irc.event.PrivateMessageReceived;
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.core.event.DownloadFailed;
import net.pterodactylus.xdcc.core.event.DownloadFinished;
import net.pterodactylus.xdcc.core.event.DownloadStarted;
+import net.pterodactylus.xdcc.core.event.MessageReceived;
import net.pterodactylus.xdcc.data.Bot;
import net.pterodactylus.xdcc.data.Channel;
import net.pterodactylus.xdcc.data.Download;
import com.google.common.collect.Table;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
+import com.google.common.io.Closeables;
import com.google.common.util.concurrent.AbstractIdleService;
import com.google.inject.Inject;
}
/**
+ * Forward all private messages to every console.
+ *
+ * @param privateMessageReceived
+ * The private message recevied event
+ */
+ @Subscribe
+ public void privateMessageReceived(PrivateMessageReceived privateMessageReceived) {
+ eventBus.post(new MessageReceived(privateMessageReceived.source(), privateMessageReceived.message()));
+ }
+
+ /**
* Starts a DCC download.
*
* @param dccSendReceived
try {
download.outputStream().close();
File file = new File(download.filename());
- file.renameTo(new File(finalDirectory, download.filename()));
+ file.renameTo(new File(finalDirectory, download.pack().name()));
eventBus.post(new DownloadFinished(download));
} catch (IOException ioe1) {
/* TODO - handle all the errors. */
}
}
+ /**
+ * Closes the output stream and notifies all listeners of the failure.
+ *
+ * @param dccDownloadFailed
+ * The DCC download failed event
+ */
+ @Subscribe
+ public void dccDownloadFailed(DccDownloadFailed dccDownloadFailed) {
+ Download download = downloads.get(dccDownloadFailed.dccReceiver().filename());
+ if (download == null) {
+ /* probably shouldn’t happen. */
+ return;
+ }
+
+ try {
+ Closeables.close(download.outputStream(), true);
+ eventBus.post(new DownloadFailed(download));
+ } catch (IOException ioe1) {
+ /* swallow silently. */
+ }
+ }
+
//
// PRIVATE METHODS
//