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.


Reply via email to