From 0170d22612daa69a9dba87238a9aaa9772a7353a Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Tue, 16 Apr 2013 19:55:37 +0200 Subject: [PATCH] Move connection handling to end of loop. --- .../java/net/pterodactylus/irc/Connection.java | 84 +++++++++++----------- 1 file changed, 43 insertions(+), 41 deletions(-) diff --git a/src/main/java/net/pterodactylus/irc/Connection.java b/src/main/java/net/pterodactylus/irc/Connection.java index 88059ba..58e5365 100644 --- a/src/main/java/net/pterodactylus/irc/Connection.java +++ b/src/main/java/net/pterodactylus/irc/Connection.java @@ -360,49 +360,8 @@ public class Connection extends AbstractExecutionThreadService implements Servic eventBus.post(new ChannelMessageReceived(this, recipient, reply.source().get(), message)); } - /* replies 001-004 don’t hold information but they have to be sent on a successful connection. */ - } else if (command.equals("001")) { - connectionStatus |= 0x01; - } else if (command.equals("002")) { - connectionStatus |= 0x02; - } else if (command.equals("003")) { - connectionStatus |= 0x04; - } else if (command.equals("004")) { - connectionStatus |= 0x08; - - /* 005 originally was a bounce message, now used to transmit useful information about the server. */ - } else if (command.equals("005")) { - for (String parameter : parameters) { - if (parameter.startsWith("PREFIX=")) { - int openParen = parameter.indexOf('('); - int closeParen = parameter.indexOf(')'); - if ((openParen != -1) && (closeParen != -1)) { - for (int modeCharacterIndex = 1; modeCharacterIndex < (closeParen - openParen); ++modeCharacterIndex) { - char modeCharacter = parameter.charAt(openParen + modeCharacterIndex); - char modeSymbol = parameter.charAt(closeParen + modeCharacterIndex); - nickPrefixes.put(String.valueOf(modeSymbol), String.valueOf(modeCharacter)); - } - logger.fine(String.format("Parsed Prefixes: %s", nickPrefixes)); - } - } else if (parameter.startsWith("CHANTYPES=")) { - for (int typeIndex = 10; typeIndex < parameter.length(); ++typeIndex) { - channelTypes.add(parameter.charAt(typeIndex)); - } - logger.fine(String.format("Parsed Channel Types: %s", channelTypes)); - } } - /* 375, 372, and 376 handle the server’s MOTD. */ - } else if (command.equals("375")) { - /* MOTD starts. */ - motd.append(parameters.get(1)).append('\n'); - } else if (command.equals("372")) { - motd.append(parameters.get(1)).append('\n'); - } else if (command.equals("376")) { - motd.append(parameters.get(1)).append('\n'); - eventBus.post(new MotdReceived(this, motd.toString())); - motd.setLength(0); - /* 43x replies are for nick change errors. */ } else if (command.equals("431")) { eventBus.post(new NoNicknameGivenReceived(this, reply)); @@ -453,6 +412,49 @@ public class Connection extends AbstractExecutionThreadService implements Servic } else if (command.equalsIgnoreCase("PING")) { connectionHandler.sendCommand("PONG", getOptional(parameters, 0), getOptional(parameters, 1)); + /* replies 001-004 don’t hold information but they have to be sent on a successful connection. */ + } else if (command.equals("001")) { + connectionStatus |= 0x01; + } else if (command.equals("002")) { + connectionStatus |= 0x02; + } else if (command.equals("003")) { + connectionStatus |= 0x04; + } else if (command.equals("004")) { + connectionStatus |= 0x08; + + /* 005 originally was a bounce message, now used to transmit useful information about the server. */ + } else if (command.equals("005")) { + for (String parameter : parameters) { + if (parameter.startsWith("PREFIX=")) { + int openParen = parameter.indexOf('('); + int closeParen = parameter.indexOf(')'); + if ((openParen != -1) && (closeParen != -1)) { + for (int modeCharacterIndex = 1; modeCharacterIndex < (closeParen - openParen); ++modeCharacterIndex) { + char modeCharacter = parameter.charAt(openParen + modeCharacterIndex); + char modeSymbol = parameter.charAt(closeParen + modeCharacterIndex); + nickPrefixes.put(String.valueOf(modeSymbol), String.valueOf(modeCharacter)); + } + logger.fine(String.format("Parsed Prefixes: %s", nickPrefixes)); + } + } else if (parameter.startsWith("CHANTYPES=")) { + for (int typeIndex = 10; typeIndex < parameter.length(); ++typeIndex) { + channelTypes.add(parameter.charAt(typeIndex)); + } + logger.fine(String.format("Parsed Channel Types: %s", channelTypes)); + } + } + + /* 375, 372, and 376 handle the server’s MOTD. */ + } else if (command.equals("375")) { + /* MOTD starts. */ + motd.append(parameters.get(1)).append('\n'); + } else if (command.equals("372")) { + motd.append(parameters.get(1)).append('\n'); + } else if (command.equals("376")) { + motd.append(parameters.get(1)).append('\n'); + eventBus.post(new MotdReceived(this, motd.toString())); + motd.setLength(0); + /* okay, everything else. */ } else { eventBus.post(new UnknownReplyReceived(this, reply)); -- 2.7.4