org.eclipse.ecf.provider.comm.tcp

## Class SSLClient

- java.lang.Object
- - org.eclipse.ecf.provider.comm.tcp.SSLClient

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

    public final class SSLClient
    extends Object
    implements ISynchAsynchConnection

Since:
  4.3

### Field Summary

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

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `addListener(IConnectionListener l)` Add comm layer event listener
`Object` `connect(ID remote, Object data, int timeout)` Connect to a remote process
`protected void` `debug(String msg)`
`void` `disconnect()` Disconnect
`Object` `getAdapter(Class clazz)`
`ID` `getLocalID()` Get local ID for this connection
`Map` `getProperties()` Get properties for this connection
`boolean` `isConnected()`
`boolean` `isStarted()`
`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 Detail

#### 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

See Also:
  Constant Field Values

#### DEFAULT_MAX_BUFFER_MSG

    public static final int DEFAULT_MAX_BUFFER_MSG

See Also:
  Constant Field Values

#### DEFAULT_WAIT_INTERVAL

    public static final int DEFAULT_WAIT_INTERVAL

See Also:
  Constant Field Values

#### 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 Detail

#### SSLClient

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

Throws:
  `IOException`

#### SSLClient

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

Throws:
  `IOException`

#### SSLClient

    public SSLClient(ISynchAsynchEventHandler handler,
                     int keepAlive)

### Method Detail

#### 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

#### 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)