Package org.eclipse.ecf.provider.remoteservice.generic

# Class RemoteServiceImpl

java.lang.Object
org.eclipse.ecf.remoteservice.asyncproxy.AbstractAsyncProxyRemoteService
org.eclipse.ecf.remoteservice.AbstractRemoteService
org.eclipse.ecf.provider.remoteservice.generic.RemoteServiceImpl

All Implemented Interfaces:
  `InvocationHandler`, `IRemoteService`

public class RemoteServiceImpl extends AbstractRemoteService

## Nested Class Summary

## Nested classes/interfaces inherited from class org.eclipse.ecf.remoteservice.AbstractRemoteService

`AbstractRemoteService.AsyncArgs, AbstractRemoteService.ProxyClassLoader`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected static final long`
`DEFAULT_TIMEOUT`
`protected RemoteServiceRegistrationImpl`
`registration`
`protected RegistrySharedObject`
`sharedObject`

### Fields inherited from class org.eclipse.ecf.remoteservice.AbstractRemoteService

`EMPTY_ARGS, futureExecutorService, futureExecutorServiceMaxThreads, iFutureExecutor`

## Constructor Summary

Constructors
Constructor
Description
`RemoteServiceImpl(RegistrySharedObject sharedObject, RemoteServiceRegistrationImpl registration)`

## Method Summary

Modifier and Type
Method
Description
`void`
`callAsync(IRemoteCall call, IRemoteCallListener listener)`
Call remote method specified by call parameter asynchronously, and notify specified listener when call starts and completes.
`Object`
`callSync(IRemoteCall call)`
Call remote method specified by call parameter synchronously.
`protected Object`
`createProxy(ClassLoader cl, Class[] classes)`
`void`
`fireAsync(IRemoteCall call)`
Fire remote method specified by call parameter.
`protected String[]`
`getInterfaceClassNames()`
`protected IRemoteServiceID`
`getRemoteServiceID()`
`protected IRemoteServiceReference`
`getRemoteServiceReference()`

### Methods inherited from class org.eclipse.ecf.remoteservice.AbstractRemoteService

`addAsyncProxyClasses, addRemoteServiceProxyToProxy, callAsync, callAsync, callAsync, callAsyncWithResult, callAsyncWithTimeout, callAsyncWithTimeout, callCompletableAsync, callFutureAsync, callFutureAsync, callSync, convertInterfaceNameToAsyncInterfaceName, createProxy, createRCCE, createRCCEFailure, createRCCESuccess, createRemoteCall, dispose, findAsyncRemoteServiceProxyClass, findAsyncRemoteServiceProxyClass, getAsyncArgs, getAsyncInvokeMethodName, getAsyncRemoteCall, getCallMethodNameForProxyInvoke, getCallParametersForProxyInvoke, getCallTimeoutForProxyInvoke, getDefaultTimeout, getFutureExecutorService, getIFutureExecutor, getProxy, getProxy, getRemoteService, getRemoteServiceProxyCreator, handleInvokeSyncException, handleProxyException, invoke, invokeAsync, invokeObject, invokeReturnAsync, invokeSync, isAsync, isInterfaceAsync, isMethodAsync, isOSGIAsync, loadInterfaceClass, loadInterfaceClass, logWarning, setFutureExecutorService, setIFutureExecutor`

### Methods inherited from class org.eclipse.ecf.remoteservice.asyncproxy.AbstractAsyncProxyRemoteService

`callFuture, isReturnAsync`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### DEFAULT_TIMEOUT

protected static final long DEFAULT_TIMEOUT

### registration

protected RemoteServiceRegistrationImpl registration

### sharedObject

protected RegistrySharedObject sharedObject

## Constructor Details

### RemoteServiceImpl

public RemoteServiceImpl(RegistrySharedObject sharedObject, RemoteServiceRegistrationImpl registration)

## Method Details

### getRemoteServiceID

protected IRemoteServiceID getRemoteServiceID()

Specified by:
  `getRemoteServiceID` in class `AbstractRemoteService`

### getRemoteServiceReference

protected IRemoteServiceReference getRemoteServiceReference()

Specified by:
  `getRemoteServiceReference` in class `AbstractRemoteService`

### getInterfaceClassNames

protected String[] getInterfaceClassNames()

Specified by:
  `getInterfaceClassNames` in class `AbstractRemoteService`

### callAsync

public void callAsync(IRemoteCall call, IRemoteCallListener listener)
Description copied from interface: `IRemoteService`
Call remote method specified by call parameter asynchronously, and notify specified listener when call starts and completes.

Parameters:
  `call` - the remote call to make. Must not be `null` .
  `listener` - the listener to notify when call starts and is completed. The listener will be notified via the two event types IRemoteCallStartEvent and IRemoteCallCompleteEvent. Must not be `null` .
Since:
  3.0
See Also:
  - `IRemoteService.callAsync(org.eclipse.ecf.remoteservice.IRemoteCall, org.eclipse.ecf.remoteservice.IRemoteCallListener)`

### callSync

public Object callSync(IRemoteCall call) throws ECFException
Description copied from interface: `IRemoteService`
Call remote method specified by call parameter synchronously.

Parameters:
  `call` - the remote call to make
Returns:
  Object the result of the call. Will be `null` if remote provides `null` as result.
Throws:
  `ECFException` - thrown if disconnect occurs, caller not currently connected, or remote throws Exception
Since:
  3.0
See Also:
  - `IRemoteService.callSync(org.eclipse.ecf.remoteservice.IRemoteCall)`

### fireAsync

public void fireAsync(IRemoteCall call) throws ECFException
Description copied from interface: `IRemoteService`
Fire remote method specified by call parameter. The remote method will be invoked as a result of asynchronous message send, but no failure/exception information will be returned, and no result will be returned

Parameters:
  `call` - the remote call to make. Must not be `null` .
Throws:
  `ECFException` - if caller not currently connected
Since:
  3.0
See Also:
  - `IRemoteService.fireAsync(org.eclipse.ecf.remoteservice.IRemoteCall)`

### createProxy

protected Object createProxy(ClassLoader cl, Class[] classes)

Overrides:
  `createProxy` in class `AbstractRemoteService`
Parameters:
  `cl` - ClassLoader for proxy creation
  `classes` - the Class[] for proxy classes
Returns:
  Object the proxy implementing the given Class[]