Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove PSG from SimGrid git
[simgrid.git] / contrib / psg / src / peersim / dynamics / MethodInvoker.java
diff --git a/contrib/psg/src/peersim/dynamics/MethodInvoker.java b/contrib/psg/src/peersim/dynamics/MethodInvoker.java
deleted file mode 100644 (file)
index 5e9e5fc..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (c) 2003-2005 The BISON Project
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- */
-
-package peersim.dynamics;
-
-import java.lang.reflect.*;
-import peersim.config.*;
-import peersim.core.*;
-import java.util.ArrayList;
-
-/**
- * This {@link Control} invokes a specified method on a protocol.
- * The method is defined by config parameter {@value #PAR_METHOD} and
- * the protocol is by {@value #PAR_PROT}. The method must not have any
- * parameters and must return void. If no protocol is specified, then the
- * method will be invoked on all protocol in the protocol stack that define
- * it.
- * <p>
- * Although the method cannot have any parameters, it can of course read
- * {@link CommonState}. It is guaranteed that the state is up-to-date,
- * inlcuding eg method {@link CommonState#getNode}.
- */
-public class MethodInvoker implements Control, NodeInitializer {
-
-
-// --------------------------------------------------------------------------
-// Parameter names
-// --------------------------------------------------------------------------
-
-/**
- * The protocol to operate on.
- * If not defined, the given method will be invoked on all protocols that
- * define it. In all cases, at least one protocol has to define it.
- * @config
- */
-private static final String PAR_PROT = "protocol";
-
-/**
- * The method to be invoked. It must return void and should not have any
- * parameters specified.
- * @config
- */
-private static final String PAR_METHOD = "method";
-
-
-// --------------------------------------------------------------------------
-// Fields
-// --------------------------------------------------------------------------
-
-/** Identifiers of the protocols to be initialized */
-private final int pid[];
-
-/** Method name */
-private final String methodName;
-
-/** Methods corresponding to the protocols in {@link #pid}. */
-private final Method method[];
-
-
-// --------------------------------------------------------------------------
-// Initialization
-// --------------------------------------------------------------------------
-
-/**
- * Standard constructor that reads the configuration parameters.
- * Invoked by the simulation engine.
- * @param prefix the configuration prefix for this class
- */
-public MethodInvoker(String prefix) {
-
-       methodName = Configuration.getString(prefix+"."+PAR_METHOD);
-       if(!Configuration.contains(prefix+"."+PAR_PROT))
-       {
-               // find protocols that implement method
-               ArrayList<Integer> pids = new ArrayList<Integer>();
-               ArrayList<Method> methods = new ArrayList<Method>();
-               for(int i=0; i<Network.prototype.protocolSize(); ++i)
-               {
-                       Method m = null;
-                       try
-                       {
-                               m = MethodInvoker.getMethod(
-                                 Network.prototype.getProtocol(i).getClass(),
-                                 methodName );
-                       }
-                       catch(NoSuchMethodException e) {}
-                       
-                       if(m!=null)
-                       {
-                               pids.add(i);
-                               methods.add(m);
-                       }
-               }
-
-               if( pids.isEmpty() )
-               {
-                       throw new IllegalParameterException(prefix + "." +
-                       PAR_METHOD,
-                       "No protocols found that implement 'void "+
-                       methodName+"()'");
-               }
-
-               pid=new int[pids.size()];
-               int j=0;
-               for(int i: pids) pid[j++]=i;
-               method=methods.toArray(new Method[methods.size()]);
-       }
-       else
-       {
-               pid = new int[1];
-               pid[0] = Configuration.getPid(prefix+"."+PAR_PROT);
-               try
-               {
-                       method = new Method[1];
-                       method[0]=MethodInvoker.getMethod(
-                         Network.prototype.getProtocol(pid[0]).getClass(),
-                         methodName );
-               }
-               catch (NoSuchMethodException e)
-               {
-                       throw new IllegalParameterException(prefix + "." +
-                       PAR_METHOD, e+"");
-               }
-       }
-}
-
-// --------------------------------------------------------------------------
-// Methods
-// --------------------------------------------------------------------------
-
-private static Method getMethod(Class cl, String methodName)
-throws NoSuchMethodException {
-
-       Method[] methods = cl.getMethods();
-       ArrayList<Method> list = new ArrayList<Method>();
-       for(Method m: methods)
-       {
-               if(m.getName().equals(methodName))
-               {
-                       Class[] pars = m.getParameterTypes();
-                       Class ret = m.getReturnType();
-                       if( pars.length == 0 && ret==void.class )
-                               list.add(m);
-               }
-       }
-       
-       if(list.size() == 0)
-       {
-               throw new NoSuchMethodException("Method "
-               + methodName + " in class " + cl.getName());
-       }
-       
-       return list.get(0);
-}
-
-//--------------------------------------------------------------------------
-
-/** Invokes method on all the nodes. */
-public boolean execute() {
-
-       for(int i=0; i<Network.size(); ++i)
-       {
-               initialize(Network.get(i));
-       }
-
-       return false;
-}
-
-//--------------------------------------------------------------------------
-
-/** Invokes method on given node. */
-public void initialize(Node n) {
-       
-       try
-       {
-               for(int i=0; i<pid.length; ++i)
-               {
-                       CommonState.setNode(n);
-                       CommonState.setPid(pid[i]);
-                       method[i].invoke(n.getProtocol(pid[i]));
-               }
-       }
-       catch(Exception e)
-       {
-               e.printStackTrace();
-               System.exit(1);
-       }
-}
-}