Browse Source

Merge pull request #95 from csmith/master

Make the Simple*Handlers actually do stuff.
pull/96/head
Shane Mc Cormack 9 years ago
parent
commit
8a39053ebf

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

23
 package com.dmdirc.parser.irc;
23
 package com.dmdirc.parser.irc;
24
 
24
 
25
 import com.dmdirc.parser.events.DebugInfoEvent;
25
 import com.dmdirc.parser.events.DebugInfoEvent;
26
+import com.dmdirc.parser.events.NickInUseEvent;
26
 import com.dmdirc.parser.interfaces.Parser;
27
 import com.dmdirc.parser.interfaces.Parser;
27
 
28
 
28
 import java.util.Date;
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
  * Simple nick in use handler that tries the alternative nickname, then prepends a character until
36
  * Simple nick in use handler that tries the alternative nickname, then prepends a character until
32
  * it gets a nickname.
37
  * it gets a nickname.
33
  */
38
  */
39
+@Listener(references = References.Strong)
34
 public class SimpleNickInUseHandler {
40
 public class SimpleNickInUseHandler {
35
 
41
 
36
     private final String altNickname;
42
     private final String altNickname;
37
     private final char prependChar;
43
     private final char prependChar;
38
     private boolean triedAlt;
44
     private boolean triedAlt;
39
 
45
 
40
-    public SimpleNickInUseHandler(final String altNickname, final char prependChar) {
46
+    SimpleNickInUseHandler(final String altNickname, final char prependChar) {
41
         this.altNickname = altNickname;
47
         this.altNickname = altNickname;
42
         this.prependChar = prependChar;
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
         callDebugInfo(parser, IRCParser.DEBUG_INFO, "No Nick in use Handler.");
54
         callDebugInfo(parser, IRCParser.DEBUG_INFO, "No Nick in use Handler.");
49
-        if (!ircParser.got001) {
55
+        if (!parser.got001) {
50
             callDebugInfo(parser, IRCParser.DEBUG_INFO, "Using inbuilt handler");
56
             callDebugInfo(parser, IRCParser.DEBUG_INFO, "Using inbuilt handler");
51
             // If this is before 001 we will try and get a nickname, else we will leave the
57
             // If this is before 001 we will try and get a nickname, else we will leave the
52
             // nick as-is
58
             // nick as-is
53
             if (triedAlt) {
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
                         altNickname)
62
                         altNickname)
57
                         && !altNickname.equalsIgnoreCase(magicAltNick)) {
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
             } else {
67
             } else {
62
                 parser.getLocalClient().setNickname(altNickname);
68
                 parser.getLocalClient().setNickname(altNickname);
63
                 triedAlt = true;
69
                 triedAlt = true;
69
         parser.getCallbackManager().publish(
75
         parser.getCallbackManager().publish(
70
                 new DebugInfoEvent(parser, new Date(), level, data));
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
 
22
 
23
 package com.dmdirc.parser.irc;
23
 package com.dmdirc.parser.irc;
24
 
24
 
25
+import com.dmdirc.parser.events.PingFailureEvent;
25
 import com.dmdirc.parser.interfaces.Parser;
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
  * Simple ping failure listener that disconnects on missed pings.
33
  * Simple ping failure listener that disconnects on missed pings.
31
  */
34
  */
35
+@Listener(references = References.Strong)
32
 public class SimplePingFailureHandler {
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
         if (ircParser.getPingNeeded()) {
43
         if (ircParser.getPingNeeded()) {
38
             ircParser.stopPingTimer();
44
             ircParser.stopPingTimer();
39
             ircParser.disconnect("Server not responding");
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