public interface Connection
Connection implementation typically contains
 a Socket.
 Connection is implemented by connection-based
 Endpoint implementations that use ConnectionManager
 for managing connections.  A Connection is created by
 the implementation for newly-established connections and is
 obtained by a ConnectionManager from its ConnectionEndpoint's connect methods.
| Modifier and Type | Method and Description | 
|---|---|
void | 
close()
Closes this connection. 
 | 
SocketChannel | 
getChannel()
Returns a socket channel that performs I/O on this connection,
 or  
null if no socket channel is available. | 
InputStream | 
getInputStream()
Returns an input stream that reads data from this connection. 
 | 
OutputStream | 
getOutputStream()
Returns an output stream that writes data to this connection. 
 | 
InvocationConstraints | 
getUnfulfilledConstraints(OutboundRequestHandle handle)
Implements  
OutboundRequest.getUnfulfilledConstraints for a request with
 the specified handle. | 
void | 
populateContext(OutboundRequestHandle handle,
               Collection context)
Populates the supplied collection with context information
 representing a request with the specified handle. 
 | 
IOException | 
readResponseData(OutboundRequestHandle handle,
                InputStream stream)
Reads from the specified stream any per-response data required
 by this connection for a request with the specified handle. 
 | 
void | 
writeRequestData(OutboundRequestHandle handle,
                OutputStream stream)
Writes to the specified stream any per-request data required by
 this connection for a request with the specified handle. 
 | 
InputStream getInputStream() throws IOException
IOException - if an I/O exception occursOutputStream getOutputStream() throws IOException
IOException - if an I/O exception occursSocketChannel getChannel()
null if no socket channel is available.  If a
 non-null socket channel is returned, it is
 connected.nullvoid populateContext(OutboundRequestHandle handle, Collection context)
OutboundRequest.populateContext for such requests; the context
 may also be populated by the connection manager.handle - the handle for the requestcontext - the context collection to populateIllegalArgumentException - if the specified handle was
 not created for use with a connection endpoint equivalent to
 the one used to create this connectionNullPointerException - if handle or
 context is nullUnsupportedOperationException - if context
 is unmodifiableInvocationConstraints getUnfulfilledConstraints(OutboundRequestHandle handle)
OutboundRequest.getUnfulfilledConstraints for a request with
 the specified handle.handle - the handle for the requestIllegalArgumentException - if the specified handle was
 not created for use with a connection endpoint equivalent to
 the one used to create this connectionNullPointerException - if handle is
 nullvoid writeRequestData(OutboundRequestHandle handle, OutputStream stream) throws IOException
This method is invoked by ConnectionManager
 with the request output stream of the OutboundRequest
 that it creates for the request.  This method can be used, for
 example, to convey per-request information about delegation,
 client authentication, or client privileges.
 
There may be multiple requests in progress concurrently over
 this connection, and data written to the specified stream may
 be buffered and multiplexed with data from other requests
 before being written to this connection's underlying output
 stream.  Therefore, this method should only write data to the
 specified stream and must not read any data from this
 connection's underlying input stream; data can, however, be
 subsequently read with readResponseData.
handle - the handle for the requeststream - the request output stream of the requestIOException - if an I/O exception occursSecurityException - if a security exception occursIllegalArgumentException - if the specified handle was
 not created for use with a connection endpoint equivalent to
 the one used to create this connectionNullPointerException - if handle or
 stream is nullIOException readResponseData(OutboundRequestHandle handle, InputStream stream) throws IOException
This method returns null if the information
 read (if any) indicates that the constraints are satisfied, and
 it returns an exception if the constraints could not be
 satisfied.  If an exception is returned rather than thrown, the
 delivery status of a corresponding OutboundRequest will
 be false.
 
This method is invoked by ConnectionManager
 with the response input stream of the
 OutboundRequest that it creates for the request
 and the same handle that was passed to writeRequestData.  This method can be used to read information
 produced by ServerConnection.processRequestData in response to the
 information sent by writeRequestData.
 
There may be multiple requests in progress concurrently over this connection, and data read from the specified stream may have been buffered and multiplexed with data from other requests being read from this connection's underlying input stream. Therefore, this method should only read data from the specified stream and must not write any data to this connection's underlying output stream.
handle - the handle for the requeststream - the response input stream of the requestnull if the constraints are satisfied, or
 an exception if the constraints could not be satisfiedIOException - if an I/O exception occursSecurityException - if a security exception occursIllegalArgumentException - if the specified handle was
 not created for use with a connection endpoint equivalent to
 the one used to create this connectionNullPointerException - if handle or
 stream is nullvoid close()
           throws IOException
IOException - if an I/O exception occurs