Author: bdonlan
Date: 2005-01-07 00:37:01 -0500 (Fri, 07 Jan 2005)
New Revision: 534
Modified:
/
trunk/misc/javer/src/javer/HaverClient.java
trunk/misc/javer/src/javer/JaverUIPanel.java
Log:
[EMAIL PROTECTED]: bdonlan | 2005-01-07T05:16:07.379895Z
Adjust access rules
[EMAIL PROTECTED]: bdonlan | 2005-01-07T05:36:34.165510Z
Added some S: FAIL handling.
Property changes on:
___________________________________________________________________
Name: svk:merge
- 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local:11211
+ 1f59643a-e6e5-0310-bc24-f7d4c744f460:/haver/local:11214
Modified: trunk/misc/javer/src/javer/HaverClient.java
===================================================================
--- trunk/misc/javer/src/javer/HaverClient.java 2005-01-07 05:12:44 UTC (rev
533)
+++ trunk/misc/javer/src/javer/HaverClient.java 2005-01-07 05:37:01 UTC (rev
534)
@@ -14,16 +14,17 @@
*/
public class HaverClient extends Thread {
- private java.lang.String versionString = "Javer/0.1";
- private java.net.Socket sock = null;
- private java.io.PrintWriter writer = null;
- private java.io.BufferedReader reader = null;
- private java.util.Map wants = null;
- private java.util.Map serverevents = null;
- private String uid = null;
- private Integer lock = new Integer(0);
+ protected java.lang.String versionString = "Javer/0.1";
+ protected java.net.Socket sock = null;
+ protected java.io.PrintWriter writer = null;
+ protected java.io.BufferedReader reader = null;
+ protected java.util.Map wants = new java.util.HashMap();
+ protected java.util.Map serverevents = new java.util.HashMap();
+ protected java.util.Map fails = new java.util.HashMap();
+ protected String uid = null;
+ protected Integer lock = new Integer(0);
- private void send(String s) throws java.io.IOException {
+ protected void send(String s) throws java.io.IOException {
synchronized (lock) {
if (sock == null) {
throw new IllegalStateException("Not connected to server");
@@ -36,6 +37,7 @@
/** Creates a new instance of HaverClient */
public HaverClient() {
+ initFails();
initWants();
initServerEvents();
}
@@ -88,18 +90,42 @@
}
}
- private abstract class ServerHandler {
+ protected abstract class FailHandler {
+ public FailHandler() {}
+ public abstract void failure(String why, String[] args)
+ throws java.io.IOException;
+ }
+
+ protected abstract class ServerHandler {
public ServerHandler() {}
public abstract void trigger(String[] line) throws java.io.IOException;
}
- private abstract class WantHandler {
+ protected abstract class WantHandler {
public WantHandler() {}
public abstract void trigger(String[] args) throws java.io.IOException;
}
- private void initWants() {
- wants = new java.util.HashMap();
+ protected void initFails() {
+ fails.put("IDENT", new FailHandler() {
+ public void failure(String why, String[] args) throws
java.io.IOException {
+ disconnect();
+ eventIdentFailed(why, args);
+ }
+ });
+ fails.put("PMSG", new FailHandler() {
+ public void failure(String why, String[] args) throws
java.io.IOException {
+ eventPrivateFailed(why, args);
+ }
+ });
+ fails.put("MSG", new FailHandler() {
+ public void failure(String why, String[] args) throws
java.io.IOException {
+ eventPublicFailed(why, args);
+ }
+ });
+ }
+
+ protected void initWants() {
wants.put("IDENT", new WantHandler() {
public void trigger(String[] args) throws java.io.IOException {
eventIdenting();
@@ -108,8 +134,7 @@
});
}
- private void initServerEvents() {
- serverevents = new java.util.HashMap();
+ protected void initServerEvents() {
serverevents.put("WANT", new ServerHandler() {
public void trigger(String[] args) throws java.io.IOException {
WantHandler h = (WantHandler) wants.get(args[1]);
@@ -173,9 +198,17 @@
eventChannelList(args[1], s);
}
});
+ serverevents.put("FAIL", new ServerHandler() {
+ public void trigger(String[] args) throws java.io.IOException {
+ String cmd = args[1];
+ String why = args[2];
+ args = subStringArray(args, 3, args.length - 1);
+ eventCmdFailure(cmd, why, args);
+ }
+ });
}
- private void dispatchCommand(String s) throws java.io.IOException {
+ protected void dispatchCommand(String s) throws java.io.IOException {
String[] parts = s.split("\t");
ServerHandler h = (ServerHandler) serverevents.get(parts[0]);
if (h != null) {
@@ -199,6 +232,10 @@
/* STUB */
}
+ protected void eventDisconnected() throws java.io.IOException {
+ /* STUB */
+ }
+
protected void eventChannelJoin(String where) throws java.io.IOException {
/* STUB */
}
@@ -252,7 +289,28 @@
protected void eventChannelList(String where, Set names) throws
java.io.IOException {
/* STUB */
}
-
+
+ protected boolean eventCmdFailure(String cmd, String why, String[] args)
throws java.io.IOException {
+ if (fails.containsKey(cmd)) {
+ FailHandler h = (FailHandler) fails.get(cmd);
+ h.failure(why, args);
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ protected void eventIdentFailed(String why, String[] args) throws
java.io.IOException {
+ /* STUB */
+ }
+
+ protected void eventPrivateFailed(String why, String[] args) throws
java.io.IOException {
+ /* STUB */
+ }
+
+ protected void eventPublicFailed(String why, String[] args) throws
java.io.IOException {
+ /* STUB */
+ }
public static final String[] subStringArray(String[] array, int start, int
end) {
if (start > end) {
return new String[0];
@@ -313,6 +371,8 @@
}
public void disconnect() {
+ if (sock == null)
+ return;
synchronized (lock) {
try {
sock.close();
@@ -321,6 +381,9 @@
reader = null;
writer = null;
uid = null;
+ try {
+ eventDisconnected();
+ } catch(IOException e) {}
}
}
Modified: trunk/misc/javer/src/javer/JaverUIPanel.java
===================================================================
--- trunk/misc/javer/src/javer/JaverUIPanel.java 2005-01-07 05:12:44 UTC
(rev 533)
+++ trunk/misc/javer/src/javer/JaverUIPanel.java 2005-01-07 05:37:01 UTC
(rev 534)
@@ -35,7 +35,7 @@
serverTabPair.tab = serverTab;
serverTabPair.title = "Server";
addTab(serverTabPair);
- disconnect();
+ do_disconnect();
}
protected abstract class CommandHandler {
@@ -235,9 +235,57 @@
putServer("I/O exception: " + e.getLocalizedMessage());
return false;
}
+
+ protected void eventPublicFailed(String why, String[] args) throws
IOException {
+ TextTab tab;
+ if (channelTabs.containsKey(args[0])) {
+ TabPair p = (TabPair) channelTabs.get(args[0]);
+ tab = (TextTab) p.tab;
+ } else {
+ tab = serverTab;
+ }
+ tab.putText("Public message failed: " + why + ", args: " + args);
+ super.eventPublicFailed(why, args);
+ }
+
+ protected void eventPrivateFailed(String why, String[] args) throws
IOException {
+ TextTab tab;
+ if (userTabs.containsKey(args[0])) {
+ tab = getQuery(args[0]);
+ } else {
+ tab = serverTab;
+ }
+ tab.putText("Private message failed: " + why + ", args: " + args);
+ super.eventPrivateFailed(why, args);
+ }
+
+ protected void eventIdentFailed(String why, String[] args) throws
IOException {
+ putServer("Login failed: " + why + ", args: " + args);
+ super.eventIdentFailed(why, args);
+ disconnect();
+ }
+
+ protected boolean eventCmdFailure(String cmd, String why, String[]
args) throws IOException {
+
+ boolean retValue;
+
+ retValue = super.eventCmdFailure(cmd, why, args);
+ if (retValue)
+ return retValue;
+
+ putServer("Unknown failure event. Command: " + cmd +
+ ", reason: " + why + ", args: " + args);
+
+ return false;
+ }
+
+ protected void eventDisconnected() throws IOException {
+ do_disconnect();
+ super.eventDisconnected();
+ }
}
- public void disconnect() {
+ public void do_disconnect() {
Set pairs = new java.util.HashSet(tabs.values());
Iterator it = pairs.iterator();
while (it.hasNext()) {
@@ -452,7 +500,7 @@
}
} catch (IOException e) {
cli.eventIOException(e);
- disconnect();
+ do_disconnect();
}
return false;
}