Class NioSender

  • All Implemented Interfaces:
    DataSender

    public class NioSender
    extends AbstractSender
    This class is NOT thread safe and should never be used with more than one thread at a time This is a state machine, handled by the process method States are: - NOT_CONNECTED -> connect() -> CONNECTED - CONNECTED -> setMessage() -> READY TO WRITE - READY_TO_WRITE -> write() -> READY TO WRITE | READY TO READ - READY_TO_READ -> read() -> READY_TO_READ | TRANSFER_COMPLETE - TRANSFER_COMPLETE -> CONNECTED
    Version:
    1.0
    • Field Detail

      • current

        protected volatile byte[] current
      • remaining

        protected int remaining
      • complete

        protected boolean complete
      • connecting

        protected boolean connecting
    • Constructor Detail

      • NioSender

        public NioSender()
    • Method Detail

      • process

        public boolean process​(SelectionKey key,
                               boolean waitForAck)
                        throws IOException
        State machine to send data.
        Parameters:
        key - The key to use
        waitForAck - Wait for an ack
        Returns:
        true if the processing was successful
        Throws:
        IOException - An IO error occurred
      • disconnect

        public void disconnect()
        disconnect TODO Implement this org.apache.catalina.tribes.transport.IDataSender method
        Specified by:
        disconnect in interface DataSender
        Specified by:
        disconnect in class AbstractSender
      • reset

        public void reset()
      • setMessage

        public void setMessage​(byte[] data)
                        throws IOException
        sendMessage
        Parameters:
        data - ChannelMessage
        Throws:
        IOException - TODO Implement this org.apache.catalina.tribes.transport.IDataSender method
      • setMessage

        public void setMessage​(byte[] data,
                               int offset,
                               int length)
                        throws IOException
        Throws:
        IOException
      • getMessage

        public byte[] getMessage()
      • isComplete

        public boolean isComplete()
      • getSelector

        public Selector getSelector()
      • setSelector

        public void setSelector​(Selector selector)
      • setComplete

        public void setComplete​(boolean complete)