Package com.sun.mail.util

## Class WriteTimeoutSocket

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

All Implemented Interfaces:
  `java.io.Closeable`, `java.lang.AutoCloseable`

    public class WriteTimeoutSocket
    extends java.net.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​(java.lang.String host, int port, int timeout)`
`WriteTimeoutSocket​(java.lang.String host, int port, java.net.InetAddress localAddress, int localPort, int timeout)`
`WriteTimeoutSocket​(java.net.InetAddress address, int port, int timeout)`
`WriteTimeoutSocket​(java.net.InetAddress address, int port, java.net.InetAddress localAddress, int localPort, int timeout)`
`WriteTimeoutSocket​(java.net.Socket socket, int timeout)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `bind​(java.net.SocketAddress local)`
`void` `close()`
`void` `connect​(java.net.SocketAddress remote)`
`void` `connect​(java.net.SocketAddress remote, int timeout)`
`java.nio.channels.SocketChannel` `getChannel()`
`java.io.FileDescriptor` `getFileDescriptor$()` KLUDGE for Android, which has this illegal non-Java Compatible method.
`java.net.InetAddress` `getInetAddress()`
`java.io.InputStream` `getInputStream()`
`boolean` `getKeepAlive()`
`java.net.InetAddress` `getLocalAddress()`
`int` `getLocalPort()`
`java.net.SocketAddress` `getLocalSocketAddress()`
`boolean` `getOOBInline()`
`<T> T` `getOption​(java.net.SocketOption<T> so)`
`java.io.OutputStream` `getOutputStream()`
`int` `getPort()`
`int` `getReceiveBufferSize()`
`java.net.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> java.net.Socket` `setOption​(java.net.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()`
`java.util.Set<java.net.SocketOption<?>>` `supportedOptions()`
`java.lang.String` `toString()`

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

`setSocketImplFactory`

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

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

### Constructor Detail

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(java.net.Socket socket,
                              int timeout)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(int timeout)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(java.net.InetAddress address,
                              int port,
                              int timeout)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(java.net.InetAddress address,
                              int port,
                              java.net.InetAddress localAddress,
                              int localPort,
                              int timeout)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(java.lang.String host,
                              int port,
                              int timeout)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

#### WriteTimeoutSocket

    public WriteTimeoutSocket​(java.lang.String host,
                              int port,
                              java.net.InetAddress localAddress,
                              int localPort,
                              int timeout)
                       throws java.io.IOException

Throws:
  `java.io.IOException`

### Method Detail

#### connect

    public void connect​(java.net.SocketAddress remote)
                 throws java.io.IOException

Overrides:
  `connect` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### connect

    public void connect​(java.net.SocketAddress remote,
                        int timeout)
                 throws java.io.IOException

Overrides:
  `connect` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### bind

    public void bind​(java.net.SocketAddress local)
              throws java.io.IOException

Overrides:
  `bind` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### getRemoteSocketAddress

    public java.net.SocketAddress getRemoteSocketAddress()

Overrides:
  `getRemoteSocketAddress` in class `java.net.Socket`

#### getLocalSocketAddress

    public java.net.SocketAddress getLocalSocketAddress()

Overrides:
  `getLocalSocketAddress` in class `java.net.Socket`

#### setPerformancePreferences

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

Overrides:
  `setPerformancePreferences` in class `java.net.Socket`

#### getChannel

    public java.nio.channels.SocketChannel getChannel()

Overrides:
  `getChannel` in class `java.net.Socket`

#### getInetAddress

    public java.net.InetAddress getInetAddress()

Overrides:
  `getInetAddress` in class `java.net.Socket`

#### getLocalAddress

    public java.net.InetAddress getLocalAddress()

Overrides:
  `getLocalAddress` in class `java.net.Socket`

#### getPort

    public int getPort()

Overrides:
  `getPort` in class `java.net.Socket`

#### getLocalPort

    public int getLocalPort()

Overrides:
  `getLocalPort` in class `java.net.Socket`

#### getInputStream

    public java.io.InputStream getInputStream()
                                       throws java.io.IOException

Overrides:
  `getInputStream` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### getOutputStream

    public java.io.OutputStream getOutputStream()
                                         throws java.io.IOException

Overrides:
  `getOutputStream` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### setTcpNoDelay

    public void setTcpNoDelay​(boolean on)
                       throws java.net.SocketException

Overrides:
  `setTcpNoDelay` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getTcpNoDelay

    public boolean getTcpNoDelay()
                          throws java.net.SocketException

Overrides:
  `getTcpNoDelay` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### setSoLinger

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

Overrides:
  `setSoLinger` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getSoLinger

    public int getSoLinger()
                    throws java.net.SocketException

Overrides:
  `getSoLinger` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### sendUrgentData

    public void sendUrgentData​(int data)
                        throws java.io.IOException

Overrides:
  `sendUrgentData` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### setOOBInline

    public void setOOBInline​(boolean on)
                      throws java.net.SocketException

Overrides:
  `setOOBInline` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getOOBInline

    public boolean getOOBInline()
                         throws java.net.SocketException

Overrides:
  `getOOBInline` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### setSoTimeout

    public void setSoTimeout​(int timeout)
                      throws java.net.SocketException

Overrides:
  `setSoTimeout` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getSoTimeout

    public int getSoTimeout()
                     throws java.net.SocketException

Overrides:
  `getSoTimeout` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### setSendBufferSize

    public void setSendBufferSize​(int size)
                           throws java.net.SocketException

Overrides:
  `setSendBufferSize` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getSendBufferSize

    public int getSendBufferSize()
                          throws java.net.SocketException

Overrides:
  `getSendBufferSize` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### setReceiveBufferSize

    public void setReceiveBufferSize​(int size)
                              throws java.net.SocketException

Overrides:
  `setReceiveBufferSize` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getReceiveBufferSize

    public int getReceiveBufferSize()
                             throws java.net.SocketException

Overrides:
  `getReceiveBufferSize` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### setKeepAlive

    public void setKeepAlive​(boolean on)
                      throws java.net.SocketException

Overrides:
  `setKeepAlive` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getKeepAlive

    public boolean getKeepAlive()
                         throws java.net.SocketException

Overrides:
  `getKeepAlive` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### setTrafficClass

    public void setTrafficClass​(int tc)
                         throws java.net.SocketException

Overrides:
  `setTrafficClass` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getTrafficClass

    public int getTrafficClass()
                        throws java.net.SocketException

Overrides:
  `getTrafficClass` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### setReuseAddress

    public void setReuseAddress​(boolean on)
                         throws java.net.SocketException

Overrides:
  `setReuseAddress` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### getReuseAddress

    public boolean getReuseAddress()
                            throws java.net.SocketException

Overrides:
  `getReuseAddress` in class `java.net.Socket`
Throws:
  `java.net.SocketException`

#### close

    public void close()
               throws java.io.IOException

Specified by:
  `close` in interface `java.lang.AutoCloseable`
Specified by:
  `close` in interface `java.io.Closeable`
Overrides:
  `close` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### shutdownInput

    public void shutdownInput()
                       throws java.io.IOException

Overrides:
  `shutdownInput` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### shutdownOutput

    public void shutdownOutput()
                        throws java.io.IOException

Overrides:
  `shutdownOutput` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.net.Socket`

#### isConnected

    public boolean isConnected()

Overrides:
  `isConnected` in class `java.net.Socket`

#### isBound

    public boolean isBound()

Overrides:
  `isBound` in class `java.net.Socket`

#### isClosed

    public boolean isClosed()

Overrides:
  `isClosed` in class `java.net.Socket`

#### isInputShutdown

    public boolean isInputShutdown()

Overrides:
  `isInputShutdown` in class `java.net.Socket`

#### isOutputShutdown

    public boolean isOutputShutdown()

Overrides:
  `isOutputShutdown` in class `java.net.Socket`

#### setOption

    public <T> java.net.Socket setOption​(java.net.SocketOption<T> so,
                                         T val)
                                  throws java.io.IOException

Overrides:
  `setOption` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### getOption

    public <T> T getOption​(java.net.SocketOption<T> so)
                    throws java.io.IOException

Overrides:
  `getOption` in class `java.net.Socket`
Throws:
  `java.io.IOException`

#### supportedOptions

    public java.util.Set<java.net.SocketOption<?>> supportedOptions()

Overrides:
  `supportedOptions` in class `java.net.Socket`

#### getFileDescriptor$

    public java.io.FileDescriptor getFileDescriptor$()

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

Returns:
  the FileDescriptor object