Class BHttpConnectionBase

    • Constructor Detail

      • BHttpConnectionBase

        protected BHttpConnectionBase​(int bufferSize,
                                      int fragmentSizeHint,
                                      java.nio.charset.CharsetDecoder charDecoder,
                                      java.nio.charset.CharsetEncoder charEncoder,
                                      MessageConstraints messageConstraints,
                                      ContentLengthStrategy incomingContentStrategy,
                                      ContentLengthStrategy outgoingContentStrategy)
        Creates new instance of BHttpConnectionBase.
        Parameters:
        bufferSize - buffer size. Must be a positive number.
        fragmentSizeHint - fragment size hint.
        charDecoder - decoder to be used for decoding HTTP protocol elements. If null simple type cast will be used for byte to char conversion.
        charEncoder - encoder to be used for encoding HTTP protocol elements. If null simple type cast will be used for char to byte conversion.
        messageConstraints - Message constraints. If null MessageConstraints.DEFAULT will be used.
        incomingContentStrategy - incoming content length strategy. If null LaxContentLengthStrategy.INSTANCE will be used.
        outgoingContentStrategy - outgoing content length strategy. If null StrictContentLengthStrategy.INSTANCE will be used.
    • Method Detail

      • ensureOpen

        protected void ensureOpen()
                           throws java.io.IOException
        Throws:
        java.io.IOException
      • getSocketInputStream

        protected java.io.InputStream getSocketInputStream​(java.net.Socket socket)
                                                    throws java.io.IOException
        Throws:
        java.io.IOException
      • getSocketOutputStream

        protected java.io.OutputStream getSocketOutputStream​(java.net.Socket socket)
                                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • bind

        protected void bind​(java.net.Socket socket)
                     throws java.io.IOException
        Binds this connection to the given Socket. This socket will be used by the connection to send and receive data.

        After this method's execution the connection status will be reported as open and the isOpen() will return true.

        Parameters:
        socket - the socket.
        Throws:
        java.io.IOException - in case of an I/O error.
      • doFlush

        protected void doFlush()
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • isOpen

        public boolean isOpen()
        Description copied from interface: HttpConnection
        Checks if this connection is open.
        Specified by:
        isOpen in interface HttpConnection
        Returns:
        true if it is open, false if it is closed.
      • getSocket

        protected java.net.Socket getSocket()
      • createOutputStream

        protected java.io.OutputStream createOutputStream​(long len,
                                                          SessionOutputBuffer outbuffer)
      • createInputStream

        protected java.io.InputStream createInputStream​(long len,
                                                        SessionInputBuffer inBuffer)
      • setSocketTimeout

        public void setSocketTimeout​(int timeout)
        Description copied from interface: HttpConnection
        Sets the socket timeout value.
        Specified by:
        setSocketTimeout in interface HttpConnection
        Parameters:
        timeout - timeout value in milliseconds
      • getSocketTimeout

        public int getSocketTimeout()
        Description copied from interface: HttpConnection
        Returns the socket timeout value.
        Specified by:
        getSocketTimeout in interface HttpConnection
        Returns:
        positive value in milliseconds if a timeout is set, 0 if timeout is disabled or -1 if timeout is undefined.
      • shutdown

        public void shutdown()
                      throws java.io.IOException
        Description copied from interface: HttpConnection
        Force-closes this connection. This is the only method of a connection which may be called from a different thread to terminate the connection. This method will not attempt to flush the transmitter's internal buffer prior to closing the underlying socket.
        Specified by:
        shutdown in interface HttpConnection
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Description copied from interface: HttpConnection
        Closes this connection gracefully. This method will attempt to flush the internal output buffer prior to closing the underlying socket. This method MUST NOT be called from a different thread to force shutdown of the connection. Use shutdown instead.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface HttpConnection
        Throws:
        java.io.IOException
      • fillInputBuffer

        private int fillInputBuffer​(int timeout)
                             throws java.io.IOException
        Throws:
        java.io.IOException
      • awaitInput

        protected boolean awaitInput​(int timeout)
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • isStale

        public boolean isStale()
        Description copied from interface: HttpConnection
        Checks whether this connection has gone down. Network connections may get closed during some time of inactivity for several reasons. The next time a read is attempted on such a connection it will throw an IOException. This method tries to alleviate this inconvenience by trying to find out if a connection is still usable. Implementations may do that by attempting a read with a very small timeout. Thus this method may block for a small amount of time before returning a result. It is therefore an expensive operation.
        Specified by:
        isStale in interface HttpConnection
        Returns:
        true if attempts to use this connection are likely to succeed, or false if they are likely to fail and this connection should be closed
      • incrementRequestCount

        protected void incrementRequestCount()
      • incrementResponseCount

        protected void incrementResponseCount()
      • toString

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