# Class PrependableSocket

java.lang.Object
java.net.Socket
org.apache.zookeeper.server.quorum.PrependableSocket

All Implemented Interfaces:
  `Closeable, AutoCloseable`

public class PrependableSocket extends Socket

## Constructor Summary

Constructors
Constructor
Description
`PrependableSocket(SocketImpl base)`

## Method Summary

Modifier and Type
Method
Description
`InputStream`
`getInputStream()`
`void`
`prependToInputStream(byte[] bytes, int offset, int length)`
Prepend some bytes that have already been read back to the socket's input stream.

### Methods inherited from class Socket

`bind, close, connect, connect, getChannel, getInetAddress, getKeepAlive, getLocalAddress, getLocalPort, getLocalSocketAddress, getOOBInline, getOutputStream, getPort, getReceiveBufferSize, getRemoteSocketAddress, getReuseAddress, getSendBufferSize, getSoLinger, getSoTimeout, getTcpNoDelay, getTrafficClass, isBound, isClosed, isConnected, isInputShutdown, isOutputShutdown, sendUrgentData, setKeepAlive, setOOBInline, setPerformancePreferences, setReceiveBufferSize, setReuseAddress, setSendBufferSize, setSocketImplFactory, setSoLinger, setSoTimeout, setTcpNoDelay, setTrafficClass, shutdownInput, shutdownOutput, toString`

### Methods inherited from class Object

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

## Constructor Details

### PrependableSocket

public PrependableSocket(SocketImpl base) throws IOException

Throws:
  `IOException`

## Method Details

### getInputStream

public InputStream getInputStream() throws IOException

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

### prependToInputStream

public void prependToInputStream(byte[] bytes, int offset, int length) throws IOException
Prepend some bytes that have already been read back to the socket's input stream. Note that this method can be called at most once with a non-0 length per socket instance.

Parameters:
  `bytes` - the bytes to prepend.
  `offset` - offset in the byte array to start at.
  `length` - number of bytes to prepend.
Throws:
  `IOException` - if this method was already called on the socket instance, or if super.getInputStream() throws.