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

toad at freenetproject.org toad at freenetproject.org
Sat Sep 8 16:03:36 UTC 2007


Author: toad
Date: 2007-09-08 16:03:36 +0000 (Sat, 08 Sep 2007)
New Revision: 15050

Modified:
   trunk/freenet/src/freenet/pluginmanager/PluginHandler.java
   trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
   trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
Move unregister into PluginInfoWrapper

Modified: trunk/freenet/src/freenet/pluginmanager/PluginHandler.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginHandler.java	2007-09-08 15:58:42 UTC (rev 15049)
+++ trunk/freenet/src/freenet/pluginmanager/PluginHandler.java	2007-09-08 16:03:36 UTC (rev 15050)
@@ -81,7 +81,7 @@
 					System.err.println("Caught Throwable while running plugin: "+t);
 					t.printStackTrace();
 				}
-				pm.unregisterPlugin(pi); // If not already unregistered
+				pi.unregister(pm); // If not already unregistered
 				if(!(plugin instanceof FredPluginThreadless))
 					pm.removePlugin(pi);
 			} else {

Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java	2007-09-08 15:58:42 UTC (rev 15049)
+++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java	2007-09-08 16:03:36 UTC (rev 15050)
@@ -22,6 +22,7 @@
 	private String filename;
 	private HashSet toadletLinks=new HashSet();
 	private boolean stopping = false;
+	private boolean unregistered = false;
 	//public String 
 	
 	public PluginInfoWrapper(FredPlugin plug, String filename) {
@@ -93,7 +94,7 @@
 	 * or else a value in milliseconds.
 	 **/
 	public void stopPlugin(PluginManager manager, int maxWaitTime) {
-		manager.unregisterPlugin(this);
+		unregister(manager);
 		plug.terminate();
 		stopping = true;
 		if(thread != null) {
@@ -118,6 +119,17 @@
 		}
 	}
 	
+	/**
+	 * Unregister the plugin from any user interface or other callbacks it may be
+	 * registered with. Call this before manager.removePlugin(): the plugin becomes
+	 * unvisitable immediately, but it may take time for it to shut down completely.
+	 */
+	void unregister(PluginManager manager) {
+		if(unregistered) return;
+		unregistered = true;
+		manager.unregisterPluginToadlet(this);
+	}
+
 	public boolean isPproxyPlugin() {
 		return isPproxyPlugin;
 	}

Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java	2007-09-08 15:58:42 UTC (rev 15049)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java	2007-09-08 16:03:36 UTC (rev 15050)
@@ -177,12 +177,7 @@
 		core.storeConfig();
 	}
 	
-	/**
-	 * Unregister a plugin from any user interface or other callbacks it may be
-	 * registered with. Call this before removePlugin(): the plugin becomes
-	 * unvisitable immediately, but it may take time for it to shut down completely.
-	 */
-	public void unregisterPlugin(PluginInfoWrapper pi) {
+	public void unregisterPluginToadlet(PluginInfoWrapper pi) {
 		synchronized (toadletList) {
 			try {
 				toadletList.remove(pi.getPluginClassName());
@@ -192,7 +187,6 @@
 				Logger.error(this, "removing Plugin", ex);
 			}
 		}
-		core.storeConfig();
 	}
 
 	public void addToadletSymlinks(PluginInfoWrapper pi) {




More information about the cvs mailing list