Author: toad
Date: 2007-09-26 19:57:28 +0000 (Wed, 26 Sep 2007)
New Revision: 15357
Modified:
trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
Add killPlugin-by-plugin
Modified: trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2007-09-26 19:56:59 UTC (rev 15356)
+++ trunk/freenet/src/freenet/pluginmanager/PluginInfoWrapper.java
2007-09-26 19:57:28 UTC (rev 15357)
@@ -14,7 +14,7 @@
private Thread thread;
private long start;
private String threadName;
- private FredPlugin plug;
+ final FredPlugin plug;
private boolean isPproxyPlugin;
private boolean isThreadlessPlugin;
private boolean isIPDetectorPlugin;
@@ -26,9 +26,9 @@
//public String
public PluginInfoWrapper(FredPlugin plug, String filename) {
+ this.plug = plug;
if (fedPluginThread) return;
className = plug.getClass().toString();
- this.plug = plug;
this.filename = filename;
threadName = 'p' + className.replaceAll("^class ", "") + '_' +
hashCode();
start = System.currentTimeMillis();
Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-09-26
19:56:59 UTC (rev 15356)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java 2007-09-26
19:57:28 UTC (rev 15357)
@@ -296,6 +296,21 @@
}
}
+ public void killPlugin(FredPlugin plugin, int maxWaitTime) {
+ PluginInfoWrapper pi = null;
+ boolean found = false;
+ synchronized (pluginWrappers) {
+ for(int i=0;i<pluginWrappers.size() && !found;i++) {
+ pi = (PluginInfoWrapper) pluginWrappers.get(i);
+ if (pi.plug == plugin) {
+ found = true;
+ }
+ }
+ }
+ if (found) {
+ pi.stopPlugin(this, maxWaitTime);
+ }
+ }
/**
* Method to load a plugin from the given path and return is as an
object.