Browse Source

Make the Simple*Handlers actually do stuff.

pull/95/head
Chris Smith 9 years ago
parent
commit
b1426239fe

+ 28
- 9
irc/src/com/dmdirc/parser/irc/SimpleNickInUseHandler.java View File

@@ -23,41 +23,47 @@
23 23
 package com.dmdirc.parser.irc;
24 24
 
25 25
 import com.dmdirc.parser.events.DebugInfoEvent;
26
+import com.dmdirc.parser.events.NickInUseEvent;
26 27
 import com.dmdirc.parser.interfaces.Parser;
27 28
 
28 29
 import java.util.Date;
29 30
 
31
+import net.engio.mbassy.listener.Handler;
32
+import net.engio.mbassy.listener.Listener;
33
+import net.engio.mbassy.listener.References;
34
+
30 35
 /**
31 36
  * Simple nick in use handler that tries the alternative nickname, then prepends a character until
32 37
  * it gets a nickname.
33 38
  */
39
+@Listener(references = References.Strong)
34 40
 public class SimpleNickInUseHandler {
35 41
 
36 42
     private final String altNickname;
37 43
     private final char prependChar;
38 44
     private boolean triedAlt;
39 45
 
40
-    public SimpleNickInUseHandler(final String altNickname, final char prependChar) {
46
+    SimpleNickInUseHandler(final String altNickname, final char prependChar) {
41 47
         this.altNickname = altNickname;
42 48
         this.prependChar = prependChar;
43 49
     }
44 50
 
45
-    // TODO: Subscribe
46
-    public void onNickInUse(final Parser parser, final Date date, final String nickname) {
47
-        final IRCParser ircParser = (IRCParser) parser;
51
+    @Handler
52
+    public void onNickInUse(final NickInUseEvent event) {
53
+        final IRCParser parser = (IRCParser) event.getParser();
48 54
         callDebugInfo(parser, IRCParser.DEBUG_INFO, "No Nick in use Handler.");
49
-        if (!ircParser.got001) {
55
+        if (!parser.got001) {
50 56
             callDebugInfo(parser, IRCParser.DEBUG_INFO, "Using inbuilt handler");
51 57
             // If this is before 001 we will try and get a nickname, else we will leave the
52 58
             // nick as-is
53 59
             if (triedAlt) {
54
-                final String magicAltNick = prependChar + ircParser.getMyInfo().getNickname();
55
-                if (parser.getStringConverter().equalsIgnoreCase(ircParser.thinkNickname,
60
+                final String magicAltNick = prependChar + parser.getMyInfo().getNickname();
61
+                if (parser.getStringConverter().equalsIgnoreCase(parser.thinkNickname,
56 62
                         altNickname)
57 63
                         && !altNickname.equalsIgnoreCase(magicAltNick)) {
58
-                    ircParser.thinkNickname = ircParser.getMyInfo().getNickname();
64
+                    parser.thinkNickname = parser.getMyInfo().getNickname();
59 65
                 }
60
-                parser.getLocalClient().setNickname(prependChar + ircParser.thinkNickname);
66
+                parser.getLocalClient().setNickname(prependChar + parser.thinkNickname);
61 67
             } else {
62 68
                 parser.getLocalClient().setNickname(altNickname);
63 69
                 triedAlt = true;
@@ -69,4 +75,17 @@ public class SimpleNickInUseHandler {
69 75
         parser.getCallbackManager().publish(
70 76
                 new DebugInfoEvent(parser, new Date(), level, data));
71 77
     }
78
+
79
+    /**
80
+     * Installs a new {@link SimpleNickInUseHandler} on the given parser.
81
+     *
82
+     * @param parser The parser to install the handler on.
83
+     * @param altNickname The alternate nickname to try using.
84
+     * @param prependChar The character to prepend if the alt nickname is in use.
85
+     */
86
+    public static void install(
87
+            final Parser parser, final String altNickname, final char prependChar) {
88
+        parser.getCallbackManager().subscribe(new SimpleNickInUseHandler(altNickname, prependChar));
89
+    }
90
+
72 91
 }

+ 20
- 4
irc/src/com/dmdirc/parser/irc/SimplePingFailureHandler.java View File

@@ -22,21 +22,37 @@
22 22
 
23 23
 package com.dmdirc.parser.irc;
24 24
 
25
+import com.dmdirc.parser.events.PingFailureEvent;
25 26
 import com.dmdirc.parser.interfaces.Parser;
26 27
 
27
-import java.util.Date;
28
+import net.engio.mbassy.listener.Handler;
29
+import net.engio.mbassy.listener.Listener;
30
+import net.engio.mbassy.listener.References;
28 31
 
29 32
 /**
30 33
  * Simple ping failure listener that disconnects on missed pings.
31 34
  */
35
+@Listener(references = References.Strong)
32 36
 public class SimplePingFailureHandler {
33 37
 
34
-    // TODO: Subscribe
35
-    public void onPingFailed(final Parser parser, final Date date) {
36
-        final IRCParser ircParser = (IRCParser) parser;
38
+    SimplePingFailureHandler() {}
39
+
40
+    @Handler
41
+    public void onPingFailed(final PingFailureEvent event) {
42
+        final IRCParser ircParser = (IRCParser) event.getParser();
37 43
         if (ircParser.getPingNeeded()) {
38 44
             ircParser.stopPingTimer();
39 45
             ircParser.disconnect("Server not responding");
40 46
         }
41 47
     }
48
+
49
+    /**
50
+     * Installs a new {@link SimplePingFailureHandler} on the given parser.
51
+     *
52
+     * @param parser The parser to install the handler on.
53
+     */
54
+    public static void install(final Parser parser) {
55
+        parser.getCallbackManager().subscribe(new SimplePingFailureHandler());
56
+    }
57
+
42 58
 }

Loading…
Cancel
Save