org.gudy.azureus2.pluginsimpl.local.ipc
Class IPCInterfaceImpl

java.lang.Object
  extended by org.gudy.azureus2.pluginsimpl.local.ipc.IPCInterfaceImpl
All Implemented Interfaces:
IPCInterface

public class IPCInterfaceImpl
extends java.lang.Object
implements IPCInterface

Author:
Damokles

Constructor Summary
IPCInterfaceImpl(java.lang.Object _target)
          Constructor for non-plugin providers
IPCInterfaceImpl(PluginInitializer _plugin_initializer, Plugin _target)
          Constructor for real plugin based providers.
 
Method Summary
 boolean canInvoke(java.lang.String methodName, java.lang.Class<?>[] params)
           
 boolean canInvoke(java.lang.String methodName, java.lang.Object[] params)
          Test for existance of IPC method - params as above
protected  java.lang.reflect.Method getMethod(java.lang.Object target, java.lang.String methodName, java.lang.Class<?>[] paramTypes)
           
protected  java.lang.reflect.Method getMethod(java.lang.Object target, java.lang.String methodName, java.lang.Object[] params)
           
protected  java.lang.Object getTarget()
           
 java.lang.Object invoke(java.lang.String methodName, java.lang.Object[] params)
          This function will call the given method on the plugin.
 void unload()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

IPCInterfaceImpl

public IPCInterfaceImpl(PluginInitializer _plugin_initializer,
                        Plugin _target)
Constructor for real plugin based providers. Supports plugin unloading

Parameters:
_plugin_initializer -
_target -

IPCInterfaceImpl

public IPCInterfaceImpl(java.lang.Object _target)
Constructor for non-plugin providers

Parameters:
_target -
Method Detail

canInvoke

public boolean canInvoke(java.lang.String methodName,
                         java.lang.Object[] params)
Description copied from interface: IPCInterface
Test for existance of IPC method - params as above

Specified by:
canInvoke in interface IPCInterface
Returns:

canInvoke

public boolean canInvoke(java.lang.String methodName,
                         java.lang.Class<?>[] params)

invoke

public java.lang.Object invoke(java.lang.String methodName,
                               java.lang.Object[] params)
                        throws IPCException
Description copied from interface: IPCInterface
This function will call the given method on the plugin. This function allows direct method calls to the plugin using Java Reflection API. Primitives like int, boolean need to be wrapped in their Objects (int -> Integer).

Results will be returned as Object and can be classcasted.

WARNING: only call Methods that use Java or Azureus Classes the use of custom classes may cause problems.

Examples:

1. Plugin has method int add (int x, int y);

 int result = ((Integer)invoke ("add", new Object[] {Integer.valueOf(10),Integer.valueOf(5)}).intValue();
 //result (15)
 
2. Plugin has method String randomize (String x);
 String result = (String)invoke("randomize", new Object[]{"foobar"});
 //result ("bfaoro")
 

Specified by:
invoke in interface IPCInterface
Parameters:
methodName - the name of the Methods to be called
params - Parameters of the Method
Returns:
returns the result of the method
Throws:
IPCException

getMethod

protected java.lang.reflect.Method getMethod(java.lang.Object target,
                                             java.lang.String methodName,
                                             java.lang.Object[] params)
                                      throws java.lang.Throwable
Throws:
java.lang.Throwable

getMethod

protected java.lang.reflect.Method getMethod(java.lang.Object target,
                                             java.lang.String methodName,
                                             java.lang.Class<?>[] paramTypes)
                                      throws java.lang.Throwable
Throws:
java.lang.Throwable

getTarget

protected java.lang.Object getTarget()
                              throws IPCException
Throws:
IPCException

unload

public void unload()