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
Constructor
Description
`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

Modifier and Type
Method
Description
`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.net.Socket

`setSocketImplFactory`

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

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

## Constructor Details

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

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