Bläddra i källkod

Nightly build script now removes the build and dist dirs prior to building to force non-stale builds

Callbacks now use volatile hashtables for specificData and callbackInfo
callSocketClosed() will not fire if the currentSocketState is already thought to be closed
Added some error logging to Logging plugin to counter an error that was reported


git-svn-id: http://svn.dmdirc.com/trunk@1922 00569f92-eb28-0410-84fd-f71c24880f
tags/0.5
Shane Mc Cormack 17 år sedan
förälder
incheckning
479e140078

+ 3
- 0
BuildAll.sh Visa fil

33
 awk '{gsub(/int RELEASE_DATE = 0/,"int RELEASE_DATE = '`date +%Y%m%d`'");print}' ${MYDIR}/src/com/dmdirc/Main.java > ${MYDIR}/src/com/dmdirc/Main.java.tmp
33
 awk '{gsub(/int RELEASE_DATE = 0/,"int RELEASE_DATE = '`date +%Y%m%d`'");print}' ${MYDIR}/src/com/dmdirc/Main.java > ${MYDIR}/src/com/dmdirc/Main.java.tmp
34
 mv ${MYDIR}/src/com/dmdirc/Main.java.tmp ${MYDIR}/src/com/dmdirc/Main.java
34
 mv ${MYDIR}/src/com/dmdirc/Main.java.tmp ${MYDIR}/src/com/dmdirc/Main.java
35
 
35
 
36
+# This makes sure we have a clean build with no stale class files, it just takes longer
37
+rm -Rf $MYDIR/build $MYDIR/dist
38
+
36
 $ANT -buildfile $MYDIR/build.xml -k
39
 $ANT -buildfile $MYDIR/build.xml -k
37
 if [ -f $MYDIR/dist/DMDirc.jar ]; then
40
 if [ -f $MYDIR/dist/DMDirc.jar ]; then
38
 	FILENAME=DMDirc`date +_%Y%m%d`_${SVNREV}.jar
41
 	FILENAME=DMDirc`date +_%Y%m%d`_${SVNREV}.jar

+ 12
- 0
src/com/dmdirc/addons/logging/LoggingPlugin.java Visa fil

301
 				case QUERY_CLOSED:
301
 				case QUERY_CLOSED:
302
 					// ActionManager.processEvent(CoreActionType.QUERY_CLOSED, this);
302
 					// ActionManager.processEvent(CoreActionType.QUERY_CLOSED, this);
303
 					query = (Query)arguments[0];
303
 					query = (Query)arguments[0];
304
+					if (query.getServer() != null) {
305
+						Logger.appError(ErrorLevel.MEDIUM, "Query object has no server ("+thisType.toString()+")", new Exception("Query object has no server ("+thisType.toString()+")""));
306
+						break;
307
+					}
304
 					parser = query.getServer().getParser();
308
 					parser = query.getServer().getParser();
305
 					client = parser.getClientInfo(query.getHost());
309
 					client = parser.getClientInfo(query.getHost());
306
 					if (client == null) {
310
 					if (client == null) {
337
 				case QUERY_OPENED:
341
 				case QUERY_OPENED:
338
 					// ActionManager.processEvent(CoreActionType.QUERY_OPENED, this);
342
 					// ActionManager.processEvent(CoreActionType.QUERY_OPENED, this);
339
 					query = (Query)arguments[0];
343
 					query = (Query)arguments[0];
344
+					if (query.getServer() != null) {
345
+						Logger.appError(ErrorLevel.MEDIUM, "Query object has no server ("+thisType.toString()+")", new Exception("Query object has no server ("+thisType.toString()+")""));
346
+						break;
347
+					}
340
 					parser = query.getServer().getParser();
348
 					parser = query.getServer().getParser();
341
 					client = parser.getClientInfo(query.getHost());
349
 					client = parser.getClientInfo(query.getHost());
342
 					if (client == null) {
350
 					if (client == null) {
370
 				case QUERY_SELF_ACTION:
378
 				case QUERY_SELF_ACTION:
371
 					// ActionManager.processEvent(CoreActionType.QUERY_MESSAGE, this, message);
379
 					// ActionManager.processEvent(CoreActionType.QUERY_MESSAGE, this, message);
372
 					query = (Query)arguments[0];
380
 					query = (Query)arguments[0];
381
+					if (query.getServer() != null) {
382
+						Logger.appError(ErrorLevel.MEDIUM, "Query object has no server ("+thisType.toString()+")", new Exception("Query object has no server ("+thisType.toString()+")""));
383
+						break;
384
+					}
373
 					parser = query.getServer().getParser();
385
 					parser = query.getServer().getParser();
374
 					String overrideNick = "";
386
 					String overrideNick = "";
375
 					if (thisType == CoreActionType.QUERY_SELF_MESSAGE || thisType == CoreActionType.QUERY_SELF_ACTION) {
387
 					if (thisType == CoreActionType.QUERY_SELF_MESSAGE || thisType == CoreActionType.QUERY_SELF_ACTION) {

+ 12
- 6
src/com/dmdirc/parser/IRCParser.java Visa fil

661
 			try {
661
 			try {
662
 				lastLine = in.readLine(); // Blocking :/
662
 				lastLine = in.readLine(); // Blocking :/
663
 				if (lastLine == null) {
663
 				if (lastLine == null) {
664
-					currentSocketState = STATE_CLOSED;
665
-					callSocketClosed();
664
+					if (currentSocketState != STATE_CLOSED) { 
665
+						currentSocketState = STATE_CLOSED;
666
+						callSocketClosed();
667
+					}
666
 					reset();
668
 					reset();
667
 					break;
669
 					break;
668
 				} else {
670
 				} else {
669
 					processLine(lastLine);
671
 					processLine(lastLine);
670
 				}
672
 				}
671
 			} catch (IOException e) {
673
 			} catch (IOException e) {
672
-				currentSocketState = STATE_CLOSED;
673
-				callSocketClosed();
674
+				if (currentSocketState != STATE_CLOSED) { 
675
+					currentSocketState = STATE_CLOSED;
676
+					callSocketClosed();
677
+				}
674
 				reset();
678
 				reset();
675
 				break;
679
 				break;
676
 			}
680
 			}
1431
 		} catch (Exception e) {
1435
 		} catch (Exception e) {
1432
 			/* Do Nothing */
1436
 			/* Do Nothing */
1433
 		} finally {
1437
 		} finally {
1434
-			currentSocketState = STATE_CLOSED;
1435
-			callSocketClosed();
1438
+			if (currentSocketState != STATE_CLOSED) { 
1439
+				currentSocketState = STATE_CLOSED;
1440
+				callSocketClosed();
1441
+			}
1436
 			reset();
1442
 			reset();
1437
 		}
1443
 		}
1438
 	}
1444
 	}

+ 1
- 1
src/com/dmdirc/parser/callbacks/CallbackObject.java Visa fil

39
  */
39
  */
40
 public abstract class CallbackObject {
40
 public abstract class CallbackObject {
41
 	/** Arraylist for storing callback information related to the callback. */
41
 	/** Arraylist for storing callback information related to the callback. */
42
-	protected ArrayList<ICallbackInterface> callbackInfo = new ArrayList<ICallbackInterface>();
42
+	protected volatile ArrayList<ICallbackInterface> callbackInfo = new ArrayList<ICallbackInterface>();
43
 	
43
 	
44
 	/** Reference to the IRCParser that owns this callback. */
44
 	/** Reference to the IRCParser that owns this callback. */
45
 	protected IRCParser myParser;
45
 	protected IRCParser myParser;

+ 1
- 1
src/com/dmdirc/parser/callbacks/CallbackObjectSpecific.java Visa fil

41
 public abstract class CallbackObjectSpecific extends CallbackObject {
41
 public abstract class CallbackObjectSpecific extends CallbackObject {
42
 	
42
 	
43
 	/** Hashtable for storing specific information for callback. */	
43
 	/** Hashtable for storing specific information for callback. */	
44
-	protected Hashtable<ICallbackInterface, String> specificData = new Hashtable<ICallbackInterface, String>();
44
+	protected volatile Hashtable<ICallbackInterface, String> specificData = new Hashtable<ICallbackInterface, String>();
45
 	
45
 	
46
 	/**
46
 	/**
47
 	 * Create a new instance of the Callback Object.
47
 	 * Create a new instance of the Callback Object.

Laddar…
Avbryt
Spara