Class IOSessionImpl

    • Constructor Detail

      • IOSessionImpl

        public IOSessionImpl​(SelectionKey key,
                             org.apache.http.impl.nio.reactor.InterestOpsCallback interestOpsCallback,
                             SessionClosedCallback sessionClosedCallback)
        Creates new instance of IOSessionImpl.
        Parameters:
        key - the selection key.
        interestOpsCallback - interestOps callback.
        sessionClosedCallback - session closed callback.
        Since:
        4.1
      • IOSessionImpl

        public IOSessionImpl​(SelectionKey key,
                             SessionClosedCallback sessionClosedCallback)
        Creates new instance of IOSessionImpl.
        Parameters:
        key - the selection key.
        sessionClosedCallback - session closed callback.
    • Method Detail

      • channel

        public ByteChannel channel()
        Description copied from interface: IOSession
        Returns the underlying I/O channel associated with this session.
        Specified by:
        channel in interface IOSession
        Returns:
        the I/O channel.
      • getEventMask

        public int getEventMask()
        Description copied from interface: IOSession
        Returns mask of I/O evens this session declared interest in.
        Specified by:
        getEventMask in interface IOSession
        Returns:
        I/O event mask.
      • setEventMask

        public void setEventMask​(int ops)
        Description copied from interface: IOSession
        Declares interest in I/O event notifications by setting the event mask associated with the session
        Specified by:
        setEventMask in interface IOSession
        Parameters:
        ops - new I/O event mask.
      • setEvent

        public void setEvent​(int op)
        Description copied from interface: IOSession
        Declares interest in a particular I/O event type by updating the event mask associated with the session.
        Specified by:
        setEvent in interface IOSession
        Parameters:
        op - I/O event type.
      • clearEvent

        public void clearEvent​(int op)
        Description copied from interface: IOSession
        Clears interest in a particular I/O event type by updating the event mask associated with the session.
        Specified by:
        clearEvent in interface IOSession
        Parameters:
        op - I/O event type.
      • getSocketTimeout

        public int getSocketTimeout()
        Description copied from interface: IOSession
        Returns value of the socket timeout in milliseconds. The value of 0 signifies the session cannot time out.
        Specified by:
        getSocketTimeout in interface IOSession
        Returns:
        socket timeout.
      • setSocketTimeout

        public void setSocketTimeout​(int timeout)
        Description copied from interface: IOSession
        Sets value of the socket timeout in milliseconds. The value of 0 signifies the session cannot time out.
        Specified by:
        setSocketTimeout in interface IOSession
        Parameters:
        timeout - socket timeout.
      • close

        public void close()
        Description copied from interface: IOSession
        Terminates the session gracefully and closes the underlying I/O channel. This method ensures that session termination handshake, such as the one used by the SSL/TLS protocol, is correctly carried out.
        Specified by:
        close in interface IOSession
      • isClosed

        public boolean isClosed()
        Description copied from interface: IOSession
        Determines if the session has been terminated.
        Specified by:
        isClosed in interface IOSession
        Returns:
        true if the session has been terminated, false otherwise.
      • shutdown

        public void shutdown()
        Description copied from interface: IOSession
        Terminates the session by shutting down the underlying I/O channel.
        Specified by:
        shutdown in interface IOSession
      • hasBufferedInput

        public boolean hasBufferedInput()
        Description copied from interface: IOSession
        Determines if the input buffer associated with the session contains data.
        Specified by:
        hasBufferedInput in interface IOSession
        Returns:
        true if the session input buffer contains data, false otherwise.
      • hasBufferedOutput

        public boolean hasBufferedOutput()
        Description copied from interface: IOSession
        Determines if the output buffer associated with the session contains data.
        Specified by:
        hasBufferedOutput in interface IOSession
        Returns:
        true if the session output buffer contains data, false otherwise.
      • setBufferStatus

        public void setBufferStatus​(SessionBufferStatus bufferStatus)
        Description copied from interface: IOSession
        Quite often I/O sessions need to maintain internal I/O buffers in order to transform input / output data prior to returning it to the consumer or writing it to the underlying channel. Memory management in HttpCore NIO is based on the fundamental principle that the data consumer can read only as much input data as it can process without having to allocate more memory. That means, quite often some input data may remain unread in one of the internal or external session buffers. The I/O reactor can query the status of these session buffers, and make sure the consumer gets notified correctly as more data gets stored in one of the session buffers, thus allowing the consumer to read the remaining data once it is able to process it

        I/O sessions can be made aware of the status of external session buffers using the SessionBufferStatus interface.

        Specified by:
        setBufferStatus in interface IOSession
      • setAttribute

        public void setAttribute​(String name,
                                 Object obj)
        Description copied from interface: IOSession
        This method can be used to associate a particular object with the session by the given attribute name.

        I/O sessions are not bound to an execution thread, therefore one cannot use the context of the thread to store a session's state. All details about a particular session must be stored within the session itself.

        Specified by:
        setAttribute in interface IOSession
        Parameters:
        name - name of the attribute.
        obj - value of the attribute.
      • getStartedTime

        public long getStartedTime()
      • getLastReadTime

        public long getLastReadTime()
      • getLastWriteTime

        public long getLastWriteTime()
      • getLastAccessTime

        public long getLastAccessTime()
      • getSocket

        public Socket getSocket()
        Description copied from interface: SocketAccessor
        Return the underlying socket
        Specified by:
        getSocket in interface SocketAccessor
        Returns:
        - the underlying Socket, may be null.