Interface IOSession
-
- All Known Implementing Classes:
IOSessionImpl
,SSLIOSession
,SSLIOSession
public interface IOSession
IOSession interface represents a sequence of logically related data exchanges between two end points.The channel associated with implementations of this interface can be used to read data from and write data to the session.
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, usually using execution context associated with it.
Implementations of this interface are expected to be threading safe.
- Since:
- 4.0
-
-
Field Summary
Fields Modifier and Type Field Description static int
ACTIVE
static java.lang.String
ATTACHMENT_KEY
Name of the context attribute key, which can be used to obtain the session attachment object.static int
CLOSED
static int
CLOSING
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.nio.channels.ByteChannel
channel()
Returns the underlying I/O channel associated with this session.void
clearEvent(int op)
Clears interest in a particular I/O event type by updating the event mask associated with the session.void
close()
Terminates the session gracefully and closes the underlying I/O channel.java.lang.Object
getAttribute(java.lang.String name)
Returns the value of the attribute with the given name.int
getEventMask()
Returns mask of I/O evens this session declared interest in.java.net.SocketAddress
getLocalAddress()
Returns local address.java.net.SocketAddress
getRemoteAddress()
Returns address of the remote peer.int
getSocketTimeout()
Returns value of the socket timeout in milliseconds.int
getStatus()
Returns status of the session:boolean
hasBufferedInput()
Determines if the input buffer associated with the session contains data.boolean
hasBufferedOutput()
Determines if the output buffer associated with the session contains data.boolean
isClosed()
Determines if the session has been terminated.java.lang.Object
removeAttribute(java.lang.String name)
Removes attribute with the given name.void
setAttribute(java.lang.String name, java.lang.Object obj)
This method can be used to associate a particular object with the session by the given attribute name.void
setBufferStatus(SessionBufferStatus status)
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.void
setEvent(int op)
Declares interest in a particular I/O event type by updating the event mask associated with the session.void
setEventMask(int ops)
Declares interest in I/O event notifications by setting the event mask associated with the sessionvoid
setSocketTimeout(int timeout)
Sets value of the socket timeout in milliseconds.void
shutdown()
Terminates the session by shutting down the underlying I/O channel.
-
-
-
Field Detail
-
ATTACHMENT_KEY
static final java.lang.String ATTACHMENT_KEY
Name of the context attribute key, which can be used to obtain the session attachment object.- See Also:
- Constant Field Values
-
ACTIVE
static final int ACTIVE
- See Also:
- Constant Field Values
-
CLOSING
static final int CLOSING
- See Also:
- Constant Field Values
-
CLOSED
static final int CLOSED
- See Also:
- Constant Field Values
-
-
Method Detail
-
channel
java.nio.channels.ByteChannel channel()
Returns the underlying I/O channel associated with this session.- Returns:
- the I/O channel.
-
getRemoteAddress
java.net.SocketAddress getRemoteAddress()
Returns address of the remote peer.- Returns:
- socket address.
-
getLocalAddress
java.net.SocketAddress getLocalAddress()
Returns local address.- Returns:
- socket address.
-
getEventMask
int getEventMask()
Returns mask of I/O evens this session declared interest in.- Returns:
- I/O event mask.
-
setEventMask
void setEventMask(int ops)
Declares interest in I/O event notifications by setting the event mask associated with the session- Parameters:
ops
- new I/O event mask.
-
setEvent
void setEvent(int op)
Declares interest in a particular I/O event type by updating the event mask associated with the session.- Parameters:
op
- I/O event type.
-
clearEvent
void clearEvent(int op)
Clears interest in a particular I/O event type by updating the event mask associated with the session.- Parameters:
op
- I/O event type.
-
close
void close()
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.
-
shutdown
void shutdown()
Terminates the session by shutting down the underlying I/O channel.
-
getStatus
int getStatus()
Returns status of the session:ACTIVE
: session is active.CLOSING
: session is being closed.CLOSED
: session has been terminated.- Returns:
- session status.
-
isClosed
boolean isClosed()
Determines if the session has been terminated.- Returns:
true
if the session has been terminated,false
otherwise.
-
getSocketTimeout
int getSocketTimeout()
Returns value of the socket timeout in milliseconds. The value of0
signifies the session cannot time out.- Returns:
- socket timeout.
-
setSocketTimeout
void setSocketTimeout(int timeout)
Sets value of the socket timeout in milliseconds. The value of0
signifies the session cannot time out.- Parameters:
timeout
- socket timeout.
-
setBufferStatus
void setBufferStatus(SessionBufferStatus status)
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 itI/O sessions can be made aware of the status of external session buffers using the
SessionBufferStatus
interface.
-
hasBufferedInput
boolean hasBufferedInput()
Determines if the input buffer associated with the session contains data.- Returns:
true
if the session input buffer contains data,false
otherwise.
-
hasBufferedOutput
boolean hasBufferedOutput()
Determines if the output buffer associated with the session contains data.- Returns:
true
if the session output buffer contains data,false
otherwise.
-
setAttribute
void setAttribute(java.lang.String name, java.lang.Object obj)
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.
- Parameters:
name
- name of the attribute.obj
- value of the attribute.
-
getAttribute
java.lang.Object getAttribute(java.lang.String name)
Returns the value of the attribute with the given name. The value can benull
if not set.The value of the session attachment object can be obtained using
ATTACHMENT_KEY
name.- Parameters:
name
- name of the attribute.- Returns:
- value of the attribute.
- See Also:
setAttribute(String, Object)
-
removeAttribute
java.lang.Object removeAttribute(java.lang.String name)
Removes attribute with the given name.- Parameters:
name
- name of the attribute to be removed.- Returns:
- value of the removed attribute.
- See Also:
setAttribute(String, Object)
-
-