X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Firc%2FConnection.java;h=88059ba2ab8b7ce8a56eca0a688cab278ddacc3e;hb=ff99325d519095f49576105b7cd4b330b3bc8902;hp=9a2bcd5217827af7881a3d0e46ae90eb18e2a0ec;hpb=947541297c6c02af6047877e0eacd56f03dd3604;p=xudocci.git diff --git a/src/main/java/net/pterodactylus/irc/Connection.java b/src/main/java/net/pterodactylus/irc/Connection.java index 9a2bcd5..88059ba 100644 --- a/src/main/java/net/pterodactylus/irc/Connection.java +++ b/src/main/java/net/pterodactylus/irc/Connection.java @@ -46,11 +46,13 @@ import net.pterodactylus.irc.event.ChannelNotJoined; import net.pterodactylus.irc.event.ChannelNotJoined.Reason; import net.pterodactylus.irc.event.ChannelTopic; import net.pterodactylus.irc.event.ClientQuit; +import net.pterodactylus.irc.event.ConnectionClosed; import net.pterodactylus.irc.event.ConnectionEstablished; import net.pterodactylus.irc.event.ConnectionFailed; import net.pterodactylus.irc.event.DccAcceptReceived; import net.pterodactylus.irc.event.DccSendReceived; import net.pterodactylus.irc.event.MotdReceived; +import net.pterodactylus.irc.event.NicknameChanged; import net.pterodactylus.irc.event.NicknameInUseReceived; import net.pterodactylus.irc.event.NoNicknameGivenReceived; import net.pterodactylus.irc.event.PrivateMessageReceived; @@ -113,6 +115,9 @@ public class Connection extends AbstractExecutionThreadService implements Servic /** The connection handler. */ private ConnectionHandler connectionHandler; + /** Whether the connection has already been established. */ + private boolean established; + /** * Creates a new connection. * @@ -137,6 +142,16 @@ public class Connection extends AbstractExecutionThreadService implements Servic // /** + * Returns whether this connection has already been established. + * + * @return {@code true} as long as this connection is established, {@code + * false} otherwise + */ + public boolean established() { + return established; + } + + /** * Returns the nickname that is currently in use by this connection. The * nickname is only available once the connection has been {@link #start()}ed. * @@ -399,6 +414,10 @@ public class Connection extends AbstractExecutionThreadService implements Servic eventBus.post(new NicknameInUseReceived(this, reply)); } + /* client stuff. */ + } else if (command.equalsIgnoreCase("NICK")) { + eventBus.post(new NicknameChanged(this, reply.source().get(), parameters.get(0))); + /* channel stuff. */ } else if (command.equalsIgnoreCase("JOIN")) { eventBus.post(new ChannelJoined(this, parameters.get(0), reply.source().get())); @@ -441,13 +460,17 @@ public class Connection extends AbstractExecutionThreadService implements Servic if ((connectionStatus == 0x0f) && (connectionStatus != oldConnectionStatus)) { /* connection succeeded! */ + established = true; eventBus.post(new ConnectionEstablished(this)); } oldConnectionStatus = connectionStatus; } + eventBus.post(new ConnectionClosed(this)); } catch (IOException ioe1) { logger.log(Level.WARNING, "I/O error", ioe1); + eventBus.post(new ConnectionClosed(this, ioe1)); } finally { + established = false; logger.info("Closing Connection."); try { Closeables.close(connectionHandler, true);