Package com.sun.mail.util

## Class WriteTimeoutSocket

- java.lang.Object
- - java.net.Socket
  - - com.sun.mail.util.WriteTimeoutSocket

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

    public class WriteTimeoutSocket
    extends Socket

A special Socket that uses a ScheduledExecutorService to implement timeouts for writes. The write timeout is specified (in milliseconds) when the WriteTimeoutSocket is created.

Author:
  Bill Shannon

### Constructor Summary

Constructors
`WriteTimeoutSocket​(int timeout)`
`WriteTimeoutSocket​(String host, int port, int timeout)`
`WriteTimeoutSocket​(String host, int port, InetAddress localAddress, int localPort, int timeout)`
`WriteTimeoutSocket​(InetAddress address, int port, int timeout)`
`WriteTimeoutSocket​(InetAddress address, int port, InetAddress localAddress, int localPort, int timeout)`
`WriteTimeoutSocket​(Socket socket, int timeout)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `bind​(SocketAddress local)`
`void` `close​()`
`void` `connect​(SocketAddress remote)`
`void` `connect​(SocketAddress remote, int timeout)`
`SocketChannel` `getChannel​()`
`FileDescriptor` `getFileDescriptor$​()` KLUDGE for Android, which has this illegal non-Java Compatible method.
`InetAddress` `getInetAddress​()`
`InputStream` `getInputStream​()`
`boolean` `getKeepAlive​()`
`InetAddress` `getLocalAddress​()`
`int` `getLocalPort​()`
`SocketAddress` `getLocalSocketAddress​()`
`boolean` `getOOBInline​()`
`<T> T` `getOption​(SocketOption<T> so)`
`OutputStream` `getOutputStream​()`
`int` `getPort​()`
`int` `getReceiveBufferSize​()`
`SocketAddress` `getRemoteSocketAddress​()`
`boolean` `getReuseAddress​()`
`int` `getSendBufferSize​()`
`int` `getSoLinger​()`
`int` `getSoTimeout​()`
`boolean` `getTcpNoDelay​()`
`int` `getTrafficClass​()`
`boolean` `isBound​()`
`boolean` `isClosed​()`
`boolean` `isConnected​()`
`boolean` `isInputShutdown​()`
`boolean` `isOutputShutdown​()`
`void` `sendUrgentData​(int data)`
`void` `setKeepAlive​(boolean on)`
`void` `setOOBInline​(boolean on)`
`<T> Socket` `setOption​(SocketOption<T> so, T val)`
`void` `setPerformancePreferences​(int connectionTime, int latency, int bandwidth)`
`void` `setReceiveBufferSize​(int size)`
`void` `setReuseAddress​(boolean on)`
`void` `setSendBufferSize​(int size)`
`void` `setSoLinger​(boolean on, int linger)`
`void` `setSoTimeout​(int timeout)`
`void` `setTcpNoDelay​(boolean on)`
`void` `setTrafficClass​(int tc)`
`void` `shutdownInput​()`
`void` `shutdownOutput​()`
`Set<SocketOption<?>>` `supportedOptions​()`
`String` `toString​()`

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

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

### Methods inherited from class java.net.Socket

`setSocketImplFactory`

### Constructor Detail

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(Socket socket,
                              int timeout)
                       throws IOException

Throws:
  `IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(int timeout)
                       throws IOException

Throws:
  `IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(InetAddress address,
                              int port,
                              int timeout)
                       throws IOException

Throws:
  `IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(InetAddress address,
                              int port,
                              InetAddress localAddress,
                              int localPort,
                              int timeout)
                       throws IOException

Throws:
  `IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(String host,
                              int port,
                              int timeout)
                       throws IOException

Throws:
  `IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(String host,
                              int port,
                              InetAddress localAddress,
                              int localPort,
                              int timeout)
                       throws IOException

Throws:
  `IOException`

### Method Detail

#### connect

    public void connect​(SocketAddress remote)
                 throws IOException

Overrides:
  `connect` in class `Socket`
Throws:
  `IOException`

#### connect

    public void connect​(SocketAddress remote,
                        int timeout)
                 throws IOException

Overrides:
  `connect` in class `Socket`
Throws:
  `IOException`

#### bind

    public void bind​(SocketAddress local)
              throws IOException

Overrides:
  `bind` in class `Socket`
Throws:
  `IOException`

#### getRemoteSocketAddress

    public SocketAddress getRemoteSocketAddress​()

Overrides:
  `getRemoteSocketAddress` in class `Socket`

#### getLocalSocketAddress

    public SocketAddress getLocalSocketAddress​()

Overrides:
  `getLocalSocketAddress` in class `Socket`

#### setPerformancePreferences

    public void setPerformancePreferences​(int connectionTime,
                                          int latency,
                                          int bandwidth)

Overrides:
  `setPerformancePreferences` in class `Socket`

#### getChannel

    public SocketChannel getChannel​()

Overrides:
  `getChannel` in class `Socket`

#### getInetAddress

    public InetAddress getInetAddress​()

Overrides:
  `getInetAddress` in class `Socket`

#### getLocalAddress

    public InetAddress getLocalAddress​()

Overrides:
  `getLocalAddress` in class `Socket`

#### getPort

    public int getPort​()

Overrides:
  `getPort` in class `Socket`

#### getLocalPort

    public int getLocalPort​()

Overrides:
  `getLocalPort` in class `Socket`

#### getInputStream

    public InputStream getInputStream​()
                               throws IOException

Overrides:
  `getInputStream` in class `Socket`
Throws:
  `IOException`

#### getOutputStream

    public OutputStream getOutputStream​()
                                 throws IOException

Overrides:
  `getOutputStream` in class `Socket`
Throws:
  `IOException`

#### setTcpNoDelay

    public void setTcpNoDelay​(boolean on)
                       throws SocketException

Overrides:
  `setTcpNoDelay` in class `Socket`
Throws:
  `SocketException`

#### getTcpNoDelay

    public boolean getTcpNoDelay​()
                          throws SocketException

Overrides:
  `getTcpNoDelay` in class `Socket`
Throws:
  `SocketException`

#### setSoLinger

    public void setSoLinger​(boolean on,
                            int linger)
                     throws SocketException

Overrides:
  `setSoLinger` in class `Socket`
Throws:
  `SocketException`

#### getSoLinger

    public int getSoLinger​()
                    throws SocketException

Overrides:
  `getSoLinger` in class `Socket`
Throws:
  `SocketException`

#### sendUrgentData

    public void sendUrgentData​(int data)
                        throws IOException

Overrides:
  `sendUrgentData` in class `Socket`
Throws:
  `IOException`

#### setOOBInline

    public void setOOBInline​(boolean on)
                      throws SocketException

Overrides:
  `setOOBInline` in class `Socket`
Throws:
  `SocketException`

#### getOOBInline

    public boolean getOOBInline​()
                         throws SocketException

Overrides:
  `getOOBInline` in class `Socket`
Throws:
  `SocketException`

#### setSoTimeout

    public void setSoTimeout​(int timeout)
                      throws SocketException

Overrides:
  `setSoTimeout` in class `Socket`
Throws:
  `SocketException`

#### getSoTimeout

    public int getSoTimeout​()
                     throws SocketException

Overrides:
  `getSoTimeout` in class `Socket`
Throws:
  `SocketException`

#### setSendBufferSize

    public void setSendBufferSize​(int size)
                           throws SocketException

Overrides:
  `setSendBufferSize` in class `Socket`
Throws:
  `SocketException`

#### getSendBufferSize

    public int getSendBufferSize​()
                          throws SocketException

Overrides:
  `getSendBufferSize` in class `Socket`
Throws:
  `SocketException`

#### setReceiveBufferSize

    public void setReceiveBufferSize​(int size)
                              throws SocketException

Overrides:
  `setReceiveBufferSize` in class `Socket`
Throws:
  `SocketException`

#### getReceiveBufferSize

    public int getReceiveBufferSize​()
                             throws SocketException

Overrides:
  `getReceiveBufferSize` in class `Socket`
Throws:
  `SocketException`

#### setKeepAlive

    public void setKeepAlive​(boolean on)
                      throws SocketException

Overrides:
  `setKeepAlive` in class `Socket`
Throws:
  `SocketException`

#### getKeepAlive

    public boolean getKeepAlive​()
                         throws SocketException

Overrides:
  `getKeepAlive` in class `Socket`
Throws:
  `SocketException`

#### setTrafficClass

    public void setTrafficClass​(int tc)
                         throws SocketException

Overrides:
  `setTrafficClass` in class `Socket`
Throws:
  `SocketException`

#### getTrafficClass

    public int getTrafficClass​()
                        throws SocketException

Overrides:
  `getTrafficClass` in class `Socket`
Throws:
  `SocketException`

#### setReuseAddress

    public void setReuseAddress​(boolean on)
                         throws SocketException

Overrides:
  `setReuseAddress` in class `Socket`
Throws:
  `SocketException`

#### getReuseAddress

    public boolean getReuseAddress​()
                            throws SocketException

Overrides:
  `getReuseAddress` in class `Socket`
Throws:
  `SocketException`

#### close

    public void close​()
               throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `Socket`
Throws:
  `IOException`

#### shutdownInput

    public void shutdownInput​()
                       throws IOException

Overrides:
  `shutdownInput` in class `Socket`
Throws:
  `IOException`

#### shutdownOutput

    public void shutdownOutput​()
                        throws IOException

Overrides:
  `shutdownOutput` in class `Socket`
Throws:
  `IOException`

#### toString

    public String toString​()

Overrides:
  `toString` in class `Socket`

#### isConnected

    public boolean isConnected​()

Overrides:
  `isConnected` in class `Socket`

#### isBound

    public boolean isBound​()

Overrides:
  `isBound` in class `Socket`

#### isClosed

    public boolean isClosed​()

Overrides:
  `isClosed` in class `Socket`

#### isInputShutdown

    public boolean isInputShutdown​()

Overrides:
  `isInputShutdown` in class `Socket`

#### isOutputShutdown

    public boolean isOutputShutdown​()

Overrides:
  `isOutputShutdown` in class `Socket`

#### setOption

    public <T> Socket setOption​(SocketOption<T> so,
                                T val)
                         throws IOException

Overrides:
  `setOption` in class `Socket`
Throws:
  `IOException`

#### getOption

    public <T> T getOption​(SocketOption<T> so)
                    throws IOException

Overrides:
  `getOption` in class `Socket`
Throws:
  `IOException`

#### supportedOptions

    public Set<SocketOption<?>> supportedOptions​()

Overrides:
  `supportedOptions` in class `Socket`

#### getFileDescriptor$

    public FileDescriptor getFileDescriptor$​()

KLUDGE for Android, which has this illegal non-Java Compatible method.

Returns:
  the FileDescriptor object