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;
/** The connection handler. */
private ConnectionHandler connectionHandler;
+ /** Whether the connection has already been established. */
+ private boolean established;
+
/**
* Creates a new connection.
*
//
/**
+ * 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.
*
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()));
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);