[freenet-cvs] r15045 - trunk/freenet/src/freenet/pluginmanager

toad at freenetproject.org toad at freenetproject.org
Sat Sep 8 15:34:32 UTC 2007


Author: toad
Date: 2007-09-08 15:34:31 +0000 (Sat, 08 Sep 2007)
New Revision: 15045

Modified:
   trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
   trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
More refactoring:
Do the removePlugin() call in the PluginInfoWrapper.
Don't call removePlugin() twice: it gets called either after the thread-based plugin exits, or immediately.

Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java	2007-09-08 15:30:10 UTC (rev 15044)
+++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java	2007-09-08 15:34:31 UTC (rev 15045)
@@ -83,11 +83,19 @@
 	
 	/**
 	 * Tell the plugin to quit. Interrupt it if it's a thread-based plugin which
-	 * might be sleeping. */
-	public void stopPlugin() {
+	 * might be sleeping. Then call removePlugin() on it on the manager - either
+	 * now, if it's threadless, or after it terminates, if it's thread based.
+	 * @param manager The plugin manager object.
+	 **/
+	public void stopPlugin(PluginManager manager) {
 		plug.terminate();
-		if(thread != null)
+		if(thread != null) {
 			thread.interrupt();
+			// Will be removed when the thread exits.
+		} else {
+			// Remove immediately
+			manager.removePlugin(this);
+		}
 	}
 	
 	public boolean isPproxyPlugin() {

Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java	2007-09-08 15:30:10 UTC (rev 15044)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java	2007-09-08 15:34:31 UTC (rev 15045)
@@ -291,7 +291,7 @@
 			}
 		}
 		if (found) {
-			pi.stopPlugin();
+			pi.stopPlugin(this);
 			removePlugin(pi);
 		}
 	}




More information about the cvs mailing list