Package org.simpleframework.transport
Interface Channel
-
- All Known Implementing Classes:
TransportChannel
public interface Channel
TheChannel
interface represents a connected channel through which data can be sent and received. Typically a channel will have a connected TCP socket, which can be used to determine when the channel is read ready, and write ready. A channel can also contain a bag of attributes used to describe the connection.Reading and writing to a channel is performed using two special interfaces. The first is the
ByteCursor
object which is used to read data from the channel in a non-blocking manner. This can also be used to reset data if it has read too much. To write theByteWriter
can be used, this provides a blocking interface much like a conventional output stream.- Author:
- Niall Gallagher
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
close()
Because the channel represents a duplex means of communication there needs to be a means to close it down.java.util.Map
getAttributes()
This returns theMap
of attributes used to hold connection information for the channel.Certificate
getCertificate()
This is used to acquire the SSL certificate used for security.ByteCursor
getCursor()
This provides aByteCursor
for this channel.java.nio.channels.SocketChannel
getSocket()
This is the connected socket channel associated with this.Trace
getTrace()
This gets theTrace
object associated with the channel.ByteWriter
getWriter()
This provides aByteWriter
for the channel.boolean
isSecure()
This is used to determine if the channel is secure and that data read from and data written to the request is encrypted.
-
-
-
Method Detail
-
isSecure
boolean isSecure()
This is used to determine if the channel is secure and that data read from and data written to the request is encrypted. Channels transferred over SSL are considered secure and will have this return true, otherwise it will return false.- Returns:
- true if this is secure for reading and writing
-
getSocket
java.nio.channels.SocketChannel getSocket()
This is the connected socket channel associated with this. In order to determine if content can be read or written to or from the channel this socket can be used with a selector. This provides a means to react to I/O events as they occur rather than polling the channel which is generally less performant.- Returns:
- this returns the connected socket channel
-
getCertificate
Certificate getCertificate()
This is used to acquire the SSL certificate used for security. If the socket is connected to an SSL transport this returns an SSL certificate which was provided during the secure handshake between the client and server. If not certificates are present in the provided instance, a challenge can be issued.- Returns:
- the SSL certificate provided by a secure transport
-
getTrace
Trace getTrace()
This gets theTrace
object associated with the channel. The trace is used to log various events for the life of the transaction such as low level read and write events as well as milestone events and errors.- Returns:
- this returns the trace associated with the socket
-
getCursor
ByteCursor getCursor()
This provides aByteCursor
for this channel. The cursor provides a seekable view of the input buffer and will allow the server kernel to peek into the input buffer without having to take the data from the input. This allows overflow to be pushed back on to the cursor for subsequent reads.- Returns:
- this returns the input cursor for the channel
-
getWriter
ByteWriter getWriter()
This provides aByteWriter
for the channel. This is used to provide a blocking output mechanism for the channel. Enabling blocking reads ensures that output buffering can be limited to an extent, which ensures that memory remains low at high load periods. Writes to the sender may result in the data being copied and queued until the socket is write ready.- Returns:
- this returns the output sender for this channel
-
getAttributes
java.util.Map getAttributes()
This returns theMap
of attributes used to hold connection information for the channel. The attributes here are taken from the pipeline attributes and may contain details such as SSL certificates or other such useful information.- Returns:
- returns the attributes associated with the channel
-
close
void close()
Because the channel represents a duplex means of communication there needs to be a means to close it down. This provides such a means. By closing the channel the cursor and sender will no longer send or recieve data to or from the network. The client will also be signaled that the connection has been severed.
-
-