Package org.eclipse.ecf.provider.comm.tcp

# Class Client

java.lang.Object
org.eclipse.ecf.provider.comm.tcp.Client

All Implemented Interfaces:
  `org.eclipse.core.runtime.IAdaptable`, `IAsynchConnection`, `IConnection`, `ISynchAsynchConnection`, `ISynchConnection`

public final class Client extends Object implements ISynchAsynchConnection

## Field Summary

Fields
Modifier and Type
Field
Description
`protected long`
`closeTimeout`
`protected ID`
`containerID`
`static final long`
`DEFAULT_CLOSE_TIMEOUT`
`static final int`
`DEFAULT_MAX_BUFFER_MSG`
`static final int`
`DEFAULT_RCVR_PRIORITY`
`static final int`
`DEFAULT_SNDR_PRIORITY`
`static final int`
`DEFAULT_WAIT_INTERVAL`
`protected ISynchAsynchEventHandler`
`handler`
`protected ObjectInputStream`
`inputStream`
`protected boolean`
`isClosing`
`protected int`
`keepAlive`
`protected Thread`
`keepAliveThread`
`protected ObjectOutputStream`
`outputStream`
`protected final Object`
`outputStreamLock`
`protected PingMessage`
`ping`
`protected Object`
`pingLock`
`protected PingResponseMessage`
`pingResp`
`protected Map`
`properties`
`static final String`
`PROTOCOL`
`protected SimpleFIFOQueue`
`queue`
`protected Thread`
`rcvThread`
`protected Thread`
`sendThread`
`protected Socket`
`socket`
`protected boolean`
`waitForPing`

## Constructor Summary

Constructors
Constructor
Description
`Client(Socket aSocket, ObjectInputStream iStream, ObjectOutputStream oStream, ISynchAsynchEventHandler handler)`
`Client(Socket aSocket, ObjectInputStream iStream, ObjectOutputStream oStream, ISynchAsynchEventHandler handler, int maxmsgs)`
`Client(ISynchAsynchEventHandler handler, int keepAlive)`

## Method Summary

Modifier and Type
Method
Description
`void`
`addListener(IConnectionListener l)`
Add comm layer event listener
`Object`
`connect(ID remote, Object data, int timeout)`
Connect to a remote process
`protected Socket`
`createConnectSocket(URI remote, int timeout)`
`protected void`
`debug(String msg)`
`void`
`disconnect()`
Disconnect
`Object`
`getAdapter(Class clazz)`
`ID`
`getLocalID()`
Get local ID for this connection
`Object`
`getOutputStreamLock()`
`Map`
`getProperties()`
Get properties for this connection
`boolean`
`isConnected()`
`boolean`
`isStarted()`
`protected URI`
`parseRemoteID(ID remote)`
`void`
`queueObject(ID recipient, Serializable obj)`
`void`
`removeListener(IConnectionListener l)`
remove comm layer event listener
`void`
`sendAsynch(ID recipient, byte[] obj)`
Send data asynchronously.
`void`
`sendAsynch(ID recipient, Object obj)`
`Serializable`
`sendObject(ID recipient, Serializable obj)`
`Object`
`sendSynch(ID rec, byte[] obj)`
Send data synchronously, blocking until a result is received
`Object`
`sendSynch(ID rec, Object obj)`
`void`
`setCloseTimeout(long t)`
`void`
`setProperties(Map props)`
`void`
`start()`
Start connection
`void`
`stop()`
Stop connection
`protected void`
`traceStack(String msg, Throwable e)`

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

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

## Field Details

### PROTOCOL

public static final String PROTOCOL

See Also:
  - Constant Field Values

### DEFAULT_SNDR_PRIORITY

public static final int DEFAULT_SNDR_PRIORITY

See Also:
  - Constant Field Values

### DEFAULT_RCVR_PRIORITY

public static final int DEFAULT_RCVR_PRIORITY

See Also:
  - Constant Field Values

### DEFAULT_CLOSE_TIMEOUT

public static final long DEFAULT_CLOSE_TIMEOUT

### DEFAULT_MAX_BUFFER_MSG

public static final int DEFAULT_MAX_BUFFER_MSG

### DEFAULT_WAIT_INTERVAL

public static final int DEFAULT_WAIT_INTERVAL

### socket

protected Socket socket

### outputStream

protected ObjectOutputStream outputStream

### inputStream

protected ObjectInputStream inputStream

### handler

protected ISynchAsynchEventHandler handler

### queue

protected SimpleFIFOQueue queue

### keepAlive

protected int keepAlive

### sendThread

protected Thread sendThread

### rcvThread

protected Thread rcvThread

### keepAliveThread

protected Thread keepAliveThread

### isClosing

protected boolean isClosing

### waitForPing

protected boolean waitForPing

### ping

protected PingMessage ping

### pingResp

protected PingResponseMessage pingResp

### closeTimeout

protected long closeTimeout

### properties

protected Map properties

### containerID

protected ID containerID

### pingLock

protected Object pingLock

### outputStreamLock

protected final Object outputStreamLock

## Constructor Details

### Client

public Client(Socket aSocket, ObjectInputStream iStream, ObjectOutputStream oStream, ISynchAsynchEventHandler handler) throws IOException

Throws:
  `IOException`

### Client

public Client(Socket aSocket, ObjectInputStream iStream, ObjectOutputStream oStream, ISynchAsynchEventHandler handler, int maxmsgs) throws IOException

Throws:
  `IOException`

### Client

public Client(ISynchAsynchEventHandler handler, int keepAlive)

## Method Details

### getLocalID

public ID getLocalID()
Description copied from interface: `IConnection`
Get local ID for this connection

Specified by:
  `getLocalID` in interface `IConnection`
Returns:
  ID associated with local instance

### removeListener

public void removeListener(IConnectionListener l)
Description copied from interface: `IConnection`
remove comm layer event listener

Specified by:
  `removeListener` in interface `IConnection`
Parameters:
  `l` - the listener to remove

### addListener

public void addListener(IConnectionListener l)
Description copied from interface: `IConnection`
Add comm layer event listener

Specified by:
  `addListener` in interface `IConnection`
Parameters:
  `l` - the listener to add

### isConnected

public boolean isConnected()

Specified by:
  `isConnected` in interface `IConnection`
Returns:
  true if the implementing class has been previously connected, false if not connected

### isStarted

public boolean isStarted()

Specified by:
  `isStarted` in interface `IConnection`
Returns:
  true if connection is started, false otherwise

### createConnectSocket

protected Socket createConnectSocket(URI remote, int timeout) throws ECFException

Parameters:
  `remote` - remote URI
  `timeout` - timeout
Returns:
  Socket the created socket
Throws:
  `ECFException` - if socket cannot be created for input parameters
Since:
  4.4

### parseRemoteID

protected URI parseRemoteID(ID remote) throws ECFException

Parameters:
  `remote` - the remtoe ID
Returns:
  URI the parsed remote ID
Throws:
  `ECFException` - if remote ID cannot be parsed
Since:
  4.4

### connect

public Object connect(ID remote, Object data, int timeout) throws ECFException
Description copied from interface: `IConnection`
Connect to a remote process

Specified by:
  `connect` in interface `IConnection`
Parameters:
  `remote` - the identity of the remote to connect to. Must not be `null`.
  `data` - any data to send with the connection request (e.g. password or other authentication data)
  `timeout` - the timeout (in ms) for the connection to occur
Returns:
  a result object that is of type specific to provider implementation
Throws:
  `ECFException` - thrown if some problem with connect

### setCloseTimeout

public void setCloseTimeout(long t)

### start

public void start()
Description copied from interface: `IConnection`
Start connection

Specified by:
  `start` in interface `IConnection`

### stop

public void stop()
Description copied from interface: `IConnection`
Stop connection

Specified by:
  `stop` in interface `IConnection`

### disconnect

public void disconnect()
Description copied from interface: `IConnection`
Disconnect

Specified by:
  `disconnect` in interface `IConnection`

### sendAsynch

public void sendAsynch(ID recipient, byte[] obj) throws IOException
Description copied from interface: `IAsynchConnection`
Send data asynchronously. Implementing classes should not block on sending the given data and return immediately.

Specified by:
  `sendAsynch` in interface `IAsynchConnection`
Parameters:
  `recipient` - the ID of the intended receiver
  `obj` - the data to send
Throws:
  `IOException` - thrown if data cannot be sent (e.g. disconnected)

### sendAsynch

public void sendAsynch(ID recipient, Object obj) throws IOException

Throws:
  `IOException`

### queueObject

public void queueObject(ID recipient, Serializable obj) throws IOException

Throws:
  `IOException`

### sendObject

public Serializable sendObject(ID recipient, Serializable obj) throws IOException

Throws:
  `IOException`

### sendSynch

public Object sendSynch(ID rec, Object obj) throws IOException

Throws:
  `IOException`

### sendSynch

public Object sendSynch(ID rec, byte[] obj) throws IOException
Description copied from interface: `ISynchConnection`
Send data synchronously, blocking until a result is received

Specified by:
  `sendSynch` in interface `ISynchConnection`
Parameters:
  `rec` - the receiver to receive the synchronous request
  `obj` - the data to send
Returns:
  the data received. The return type will be specific to the provider implementation.
Throws:
  `IOException` - thrown if sending cannot occur (e.g. not connected)

### getProperties

public Map getProperties()
Description copied from interface: `IConnection`
Get properties for this connection

Specified by:
  `getProperties` in interface `IConnection`
Returns:
  Map the properties associated with this connection. May be null.

### getAdapter

public Object getAdapter(Class clazz)

Specified by:
  `getAdapter` in interface `org.eclipse.core.runtime.IAdaptable`

### debug

protected void debug(String msg)

### traceStack

protected void traceStack(String msg, Throwable e)

### setProperties

public void setProperties(Map props)

### getOutputStreamLock

public Object getOutputStreamLock()

Returns:
  Object the output stream lock
Since:
  4.6