# Class BioSender

java.lang.Object
org.apache.catalina.tribes.transport.AbstractSender
org.apache.catalina.tribes.transport.bio.BioSender

All Implemented Interfaces:
  `DataSender`

@Deprecated public class BioSender extends AbstractSender
Deprecated.
This will be removed in Tomcat 10
Send cluster messages with only one socket. Ack and keep Alive Handling is supported

Since:
  5.5.16

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final XByteBuffer`
  `ackbuf`
  Deprecated.
  `protected static final StringManager`
  `sm`
  Deprecated.
  The string manager for this package.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BioSender()`
  Deprecated.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `closeSocket()`
  Deprecated.
  Close socket.
  `void`
  `connect()`
  Deprecated.
  Connect other cluster member receiver
  `void`
  `disconnect()`
  Deprecated.
  disconnect and close socket
  `protected void`
  `openSocket()`
  Deprecated.
  Open real socket and set time out when waitForAck is enabled is socket open return directly.
  `protected void`
  `pushMessage(byte[] data, boolean reconnect, boolean waitForAck)`
  Deprecated.
  Push messages with only one socket at a time Wait for ack is needed and make auto retry when write message is failed.
  `void`
  `sendMessage(byte[] data, boolean waitForAck)`
  Deprecated.
  Send message.
  `String`
  `toString()`
  Deprecated.
  `protected void`
  `waitForAck()`
  Deprecated.
  Wait for Acknowledgement from other server.

  ### Methods inherited from class AbstractSender

  `getAddress, getAttempt, getConnectTime, getDestination, getDirectBuffer, getKeepAliveCount, getKeepAliveTime, getMaxRetryAttempts, getOoBInline, getPort, getRequestCount, getRxBufSize, getSoKeepAlive, getSoLingerOn, getSoLingerTime, getSoReuseAddress, getSoTrafficClass, getTcpNoDelay, getThrowOnFailedAck, getTimeout, getTxBufSize, getUdpPort, getUdpRxBufSize, getUdpTxBufSize, isConnected, isUdpBased, keepalive, setAddress, setAttempt, setConnected, setConnectTime, setDestination, setDirectBuffer, setKeepAliveCount, setKeepAliveTime, setMaxRetryAttempts, setOoBInline, setPort, setRequestCount, setRxBufSize, setSoKeepAlive, setSoLingerOn, setSoLingerTime, setSoReuseAddress, setSoTrafficClass, setTcpNoDelay, setThrowOnFailedAck, setTimeout, setTxBufSize, setUdpBased, setUdpPort, setUdpRxBufSize, setUdpTxBufSize, transferProperties`

  ### Methods inherited from class Object

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

- ## Field Details

  - ### sm

    protected static final StringManager sm
    Deprecated.
    The string manager for this package.

  - ### ackbuf

    protected final XByteBuffer ackbuf
    Deprecated.

- ## Constructor Details

  - ### BioSender

    public BioSender()
    Deprecated.

- ## Method Details

  - ### connect

    public void connect() throws IOException
    Deprecated.
    Connect other cluster member receiver
    Throws:
      `IOException` - when an error occurs
    See Also:
      - `DataSender.connect()`

  - ### disconnect

    public void disconnect()
    Deprecated.
    disconnect and close socket
    See Also:
      - `DataSender.disconnect()`

  - ### sendMessage

    public void sendMessage(byte[] data, boolean waitForAck) throws IOException
    Deprecated.
    Send message.
    Parameters:
      `data` - The data to send
      `waitForAck` - Wait for an ack
    Throws:
      `IOException` - An IO error occurred sending the message

  - ### toString

    public String toString()
    Deprecated.
    Overrides:
      `toString` in class `Object`

  - ### openSocket

    protected void openSocket() throws IOException
    Deprecated.
    Open real socket and set time out when waitForAck is enabled is socket open return directly.
    Throws:
      `IOException` - Error opening socket

  - ### closeSocket

    protected void closeSocket()
    Deprecated.
    Close socket.
    See Also:
      - `disconnect()`

  - ### pushMessage

    protected void pushMessage(byte[] data, boolean reconnect, boolean waitForAck) throws IOException
    Deprecated.
    Push messages with only one socket at a time Wait for ack is needed and make auto retry when write message is failed. After sending error close and reopen socket again. After successful sending update stats WARNING: Subclasses must be very careful that only one thread call this pushMessage at once!!!
    Parameters:
      `data` - Data to send
      `reconnect` - Do a reconnect (close socket then reopen)
      `waitForAck` - Wait for an acknowledgement
    Throws:
      `IOException` - IO error writing data
    Since:
      5.5.10
    See Also:
      - `closeSocket()`
      - `openSocket()`
      - `sendMessage(byte[], boolean)`

  - ### waitForAck

    protected void waitForAck() throws IOException
    Deprecated.
    Wait for Acknowledgement from other server. FIXME Please, not wait only for three characters, better control that the wait ack message is correct.
    Throws:
      `IOException` - An IO error occurred