Package org.astrogrid.samp.xmlrpc.internal

# Class InternalClient

java.lang.Object
org.astrogrid.samp.xmlrpc.internal.InternalClient

All Implemented Interfaces:
  `SampXmlRpcClient`

Direct Known Subclasses:
  `RpcLoggingInternalClient`, `XmlLoggingInternalClient`

public class InternalClient extends Object implements SampXmlRpcClient
XML-RPC client implementation suitable for use with SAMP. This implementation is completely freestanding and requires no other libraries.

Since:
  26 Aug 2008
Author:
  Mark Taylor

## Constructor Summary

Constructors
Constructor
Description
`InternalClient(URL endpoint)`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`callAndForget(String method, List params)`
Sends a call, but does not wait around for the response.
`Object`
`callAndWait(String method, List params)`
Makes a synchronous call, waiting for the response and returning the result.
`protected Object`
`deserializeResponse(InputStream in)`
Deserializes an XML-RPC `methodResponse` document to a Java object.
`protected byte[]`
`serializeCall(String method, List paramList)`
Generates the XML `methodCall` document corresponding to an XML-RPC method call.

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

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

## Constructor Details

### InternalClient

public InternalClient(URL endpoint)
Constructor.

Parameters:
  `endpoint` - endpoint

## Method Details

### callAndWait

public Object callAndWait(String method, List params) throws IOException
Description copied from interface: `SampXmlRpcClient`
Makes a synchronous call, waiting for the response and returning the result.

Specified by:
  `callAndWait` in interface `SampXmlRpcClient`
Parameters:
  `method` - XML-RPC method name
  `params` - parameters for XML-RPC call (SAMP-compatible)
Returns:
  XML-RPC call return value (SAMP-compatible)
Throws:
  `IOException`

### callAndForget

public void callAndForget(String method, List params) throws IOException
Description copied from interface: `SampXmlRpcClient`
Sends a call, but does not wait around for the response. If possible, this method should complete quickly.

NOTE: it seems to be difficult to implement this method in a way which is faster than `SampXmlRpcClient.callAndWait(java.lang.String, java.util.List)` but does not cause problems elsewhere (incomplete HTTP responses). It is probably a good idea to avoid using it if possible.

Specified by:
  `callAndForget` in interface `SampXmlRpcClient`
Parameters:
  `method` - XML-RPC method name
  `params` - parameters for XML-RPC call (SAMP-compatible)
Throws:
  `IOException`

### serializeCall

protected byte[] serializeCall(String method, List paramList) throws IOException
Generates the XML `methodCall` document corresponding to an XML-RPC method call.

Parameters:
  `method` - methodName string
  `paramList` - list of XML-RPC parameters
Returns:
  XML document as byte array
Throws:
  `IOException`

### deserializeResponse

protected Object deserializeResponse(InputStream in) throws IOException
Deserializes an XML-RPC `methodResponse` document to a Java object.

Parameters:
  `in` - input stream containing response document
Throws:
  `IOException`