# Class RemoteOperationExecutor

java.lang.Object
org.apfloat.samples.RemoteOperationExecutor

All Implemented Interfaces:
  `OperationExecutor`

Direct Known Subclasses:
  `PiDistributed.Node`

public class RemoteOperationExecutor extends Object implements OperationExecutor
Class to call an `OperationServer` to execute `Operation`s remotely.

Version:
  1.9.0
Author:
  Mikko Tommila

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RemoteOperationExecutor(String host, int port)`
  Create a new client that will connect to the server running at the specified host and port.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<T> T`
  `execute(Operation<T> operation)`
  Execute an operation remotely.
  `<T> BackgroundOperation<T>`
  `executeBackground(Operation<T> operation)`
  Execute an operation remotely.
  `String`
  `getHost()`
  Returns the host name.
  `int`
  `getPort()`
  Returns the host port.
  `int`
  `getWeight()`
  Returns the relative weight of this executor.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### RemoteOperationExecutor

    public RemoteOperationExecutor(String host, int port)
    Create a new client that will connect to the server running at the specified host and port.
    Parameters:
      `host` - Hostname of the remote server.
      `port` - Port of the remote server.

- ## Method Details

  - ### execute

    public <T> T execute(Operation<T> operation)
    Execute an operation remotely. This method will block until the return value has been received.
    Specified by:
      `execute` in interface `OperationExecutor`
    Type Parameters:
      `T` - Return value type of the operation.
    Parameters:
      `operation` - The operation to execute remotely.
    Returns:
      The result of the operation.
    Throws:
      `RuntimeException` - In case of network error or if the return value class is unknown.

  - ### executeBackground

    public <T> BackgroundOperation<T> executeBackground(Operation<T> operation)
    Execute an operation remotely. This method starts a new thread running the remote call and returns immediately.
    Specified by:
      `executeBackground` in interface `OperationExecutor`
    Type Parameters:
      `T` - Return value type of the operation.
    Parameters:
      `operation` - The operation to execute remotely.
    Returns:
      A `BackgroundOperation` for retrieving the result of the operation later.

  - ### getWeight

    public int getWeight()
    Description copied from interface: `OperationExecutor`
    Returns the relative weight of this executor. The weights of different operation executors can be used to distribute work more equally.
    Specified by:
      `getWeight` in interface `OperationExecutor`
    Returns:
      The relative weight of this operation executor.

  - ### getHost

    public String getHost()
    Returns the host name.
    Returns:
      The host name.

  - ### getPort

    public int getPort()
    Returns the host port.
    Returns:
      The host port.