Class BioSender

  • All Implemented Interfaces:
    DataSender

    public class BioSender
    extends AbstractSender
    Send cluster messages with only one socket. Ack and keep Alive Handling is supported
    Since:
    5.5.16
    Author:
    Peter Rossbach
    • Field Detail

      • sm

        protected static final StringManager sm
        The string manager for this package.
    • Constructor Detail

      • BioSender

        public BioSender()
    • Method Detail

      • connect

        public void connect()
                     throws java.io.IOException
        Connect other cluster member receiver
        Specified by:
        connect in interface DataSender
        Specified by:
        connect in class AbstractSender
        Throws:
        java.io.IOException - TODO Implement this org.apache.catalina.tribes.transport.DataSender method
        See Also:
        DataSender.connect()
      • sendMessage

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

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • openSocket

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

        protected void closeSocket()
        Close socket.
        See Also:
        disconnect()
      • pushMessage

        protected void pushMessage​(byte[] data,
                                   boolean reconnect,
                                   boolean waitForAck)
                            throws java.io.IOException
        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:
        java.io.IOException - IO error writing data
        Since:
        5.5.10
        See Also:
        closeSocket(), openSocket(), sendMessage(byte[], boolean)
      • waitForAck

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