|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.opends.server.api.ClientConnection
org.opends.server.protocols.ldap.LDAPClientConnection
public class LDAPClientConnection
This class defines an LDAP client connection, which is a type of client connection that will be accepted by an instance of the LDAP connection handler and have its requests decoded by an LDAP request handler.
Constructor Summary | |
---|---|
LDAPClientConnection(LDAPConnectionHandler connectionHandler,
java.nio.channels.SocketChannel clientChannel)
Creates a new LDAP client connection with the provided information. |
Method Summary | |
---|---|
void |
addOperationInProgress(AbstractOperation operation)
Adds the provided operation to the set of operations in progress for this client connection. |
void |
cancelAllOperations(CancelRequest cancelRequest)
Attempts to cancel all operations in progress on this connection. |
void |
cancelAllOperationsExcept(CancelRequest cancelRequest,
int messageID)
Attempts to cancel all operations in progress on this connection except the operation with the specified message ID. |
CancelResult |
cancelOperation(int messageID,
CancelRequest cancelRequest)
Attempts to cancel the specified operation. |
void |
disableTLSConnectionSecurityProvider()
Disables the TLS connection security provider on this client connection. |
void |
disconnect(DisconnectReason disconnectReason,
boolean sendNotification,
Message message)
Closes the connection to the client, optionally sending it a message indicating the reason for the closure. |
void |
enableTLSConnectionSecurityProvider()
Installs the TLS connection security provider on this client connection. |
java.lang.String |
getCertificateAlias()
Retrieves the alias of the server certificate that should be used for operations requiring a server certificate. |
java.lang.String |
getClientAddress()
Retrieves a string representation of the address of the client. |
java.lang.String |
getClientHostPort()
Retrieves the address and port of the client system, separated by a colon. |
int |
getClientPort()
Retrieves the port number for this connection on the client system. |
ConnectionHandler |
getConnectionHandler()
Retrieves the connection handler that accepted this client connection. |
long |
getConnectionID()
Retrieves the connection ID assigned to this connection. |
ConnectionSecurityProvider |
getConnectionSecurityProvider()
Retrieves the connection security provider for this client connection. |
long |
getIdleTime()
Retrieves the length of time in milliseconds that this client connection has been idle. |
DN |
getKeyManagerProviderDN()
Retrieves the DN of the key manager provider that should be used for operations requiring access to a key manager. |
java.net.InetAddress |
getLocalAddress()
Retrieves the java.net.InetAddress for the Directory Server
system to which the client has established the connection. |
long |
getMaxBlockedWriteTimeLimit()
Retrieves the maximum length of time in milliseconds that attempts to write data to the client should be allowed to block. |
java.lang.String |
getMonitorSummary()
Retrieves a one-line summary of this client connection in a form that is suitable for including in the monitor entry for the associated connection handler. |
AbstractOperation |
getOperationInProgress(int messageID)
Retrieves the operation in progress with the specified message ID. |
java.util.Collection<AbstractOperation> |
getOperationsInProgress()
Retrieves the set of operations in progress for this client connection. |
java.lang.String |
getProtocol()
Retrieves the protocol that the client is using to communicate with the Directory Server. |
java.net.InetAddress |
getRemoteAddress()
Retrieves the java.net.InetAddress associated with the remote
client system. |
LDAPRequestHandler |
getRequestHandler()
Retrieves the request handler that will read requests for this client connection. |
java.lang.String |
getSecurityMechanism()
Retrieves the human-readable name of the security mechanism that is used to protect communication with this client. |
java.lang.String |
getServerAddress()
Retrieves a string representation of the address on the server to which the client connected. |
java.lang.String |
getServerHostPort()
Retrieves the address and port of the server system, separated by a colon. |
int |
getServerPort()
Retrieves the port number for this connection on the server system. |
java.nio.channels.SocketChannel |
getSocketChannel()
Retrieves the socket channel that can be used to communicate with the client. |
DN |
getTrustManagerProviderDN()
Retrieves the DN of the trust manager provider that should be used for operations requiring access to a trust manager. |
java.nio.channels.Selector |
getWriteSelector()
Retrieves a Selector that may be used to ensure that
write operations complete in a timely manner, or terminate the
connection in the event that they fail to do so. |
boolean |
isSecure()
Indicates whether this client connection is currently using a secure mechanism to communicate with the server. |
long |
nextOperationID()
Retrieves the next operation ID that should be used for this connection. |
boolean |
processDataRead(java.nio.ByteBuffer buffer)
Process the information contained in the provided byte buffer as an ASN.1 element. |
boolean |
removeOperationInProgress(int messageID)
Removes the provided operation from the set of operations in progress for this client connection. |
void |
sendClearResponse(Operation operation)
Sends a response to the client in the clear rather than through the encrypted channel. |
protected boolean |
sendIntermediateResponseMessage(IntermediateResponse intermediateResponse)
Sends the provided intermediate response message to the client. |
void |
sendLDAPMessage(ConnectionSecurityProvider secProvider,
LDAPMessage message)
Sends the provided LDAP message to the client. |
void |
sendResponse(Operation operation)
Sends a response to the client based on the information in the provided operation. |
void |
sendSearchEntry(SearchOperation searchOperation,
SearchResultEntry searchEntry)
Sends the provided search result entry to the client. |
boolean |
sendSearchReference(SearchOperation searchOperation,
SearchResultReference searchReference)
Sends the provided search result reference to the client. |
void |
setConnectionSecurityProvider(ConnectionSecurityProvider securityProvider)
Specifies the connection security provider for this client connection. |
void |
setRequestHandler(LDAPRequestHandler requestHandler)
Specifies the request handler that will read requests for this client connection. |
boolean |
tlsProtectionAvailable(MessageBuilder unavailableReason)
Indicates whether TLS protection is actually available for the underlying client connection. |
void |
toString(java.lang.StringBuilder buffer)
Appends a string representation of this client connection to the provided buffer. |
Methods inherited from class java.lang.Object |
---|
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public LDAPClientConnection(LDAPConnectionHandler connectionHandler, java.nio.channels.SocketChannel clientChannel)
connectionHandler
- The connection handler that accepted this
connection.clientChannel
- The socket channel that may be used to
communicate with the client.Method Detail |
---|
public long getConnectionID()
getConnectionID
in class ClientConnection
public ConnectionHandler getConnectionHandler()
getConnectionHandler
in class ClientConnection
public LDAPRequestHandler getRequestHandler()
null
if none has been assigned yet.public void setRequestHandler(LDAPRequestHandler requestHandler)
requestHandler
- The request handler that will read requests for
this client connection.public java.nio.channels.SocketChannel getSocketChannel()
public java.lang.String getProtocol()
getProtocol
in class ClientConnection
public java.lang.String getClientAddress()
getClientAddress
in class ClientConnection
public int getClientPort()
public java.lang.String getClientHostPort()
public java.lang.String getServerAddress()
getServerAddress
in class ClientConnection
public int getServerPort()
public java.lang.String getServerHostPort()
public java.net.InetAddress getRemoteAddress()
java.net.InetAddress
associated with the remote
client system.
getRemoteAddress
in class ClientConnection
java.net.InetAddress
associated with the remote
client system. It may be null
if the client is not
connected over an IP-based connection.public java.net.InetAddress getLocalAddress()
java.net.InetAddress
for the Directory Server
system to which the client has established the connection.
getLocalAddress
in class ClientConnection
java.net.InetAddress
for the Directory Server
system to which the client has established the connection. It may
be null
if the client is not connected over an
IP-based connection.public boolean isSecure()
false
to true
if the client uses the
StartTLS extended operation).
isSecure
in class ClientConnection
true
if the client connection is currently using a
secure mechanism to communicate with the server, or
false
if not.public ConnectionSecurityProvider getConnectionSecurityProvider()
getConnectionSecurityProvider
in class ClientConnection
public void setConnectionSecurityProvider(ConnectionSecurityProvider securityProvider)
setConnectionSecurityProvider
in class ClientConnection
securityProvider
- The connection security provider to use for
communication on this client connection.public java.lang.String getSecurityMechanism()
getSecurityMechanism
in class ClientConnection
null
if no
security is in place.public long nextOperationID()
public void sendResponse(Operation operation)
sendResponse
in class ClientConnection
operation
- The operation for which to send the response.public void sendSearchEntry(SearchOperation searchOperation, SearchResultEntry searchEntry)
sendSearchEntry
in class ClientConnection
searchOperation
- The search operation with which the entry is
associated.searchEntry
- The search result entry to be sent to the client.public boolean sendSearchReference(SearchOperation searchOperation, SearchResultReference searchReference)
sendSearchReference
in class ClientConnection
searchOperation
- The search operation with which the reference is
associated.searchReference
- The search result reference to be sent to the
client.
true
if the client is able to accept referrals, or
false
if the client cannot handle referrals and no
more attempts should be made to send them for the associated
search operation.protected boolean sendIntermediateResponseMessage(IntermediateResponse intermediateResponse)
sendIntermediateResponseMessage
in class ClientConnection
intermediateResponse
- The intermediate response message to be sent.
true
if processing on the associated operation should
continue, or false
if not.public void sendLDAPMessage(ConnectionSecurityProvider secProvider, LDAPMessage message)
secProvider
- The connection security provider to use to handle any
necessary security translation.message
- The LDAP message to send to the client.public void disconnect(DisconnectReason disconnectReason, boolean sendNotification, Message message)
disconnect
in class ClientConnection
disconnectReason
- The disconnect reason that provides the generic
cause for the disconnect.sendNotification
- Indicates whether to try to provide notification
to the client that the connection will be closed.message
- The message to include in the disconnect
notification response. It may be
null
if no message is to be sent.public java.util.Collection<AbstractOperation> getOperationsInProgress()
getOperationsInProgress
in class ClientConnection
public AbstractOperation getOperationInProgress(int messageID)
getOperationInProgress
in class ClientConnection
messageID
- The message ID for the operation to retrieve.
null
if no such operation could be found.public void addOperationInProgress(AbstractOperation operation) throws DirectoryException
operation
- The operation to add to the set of operations in
progress for this client connection.
DirectoryException
- If the operation is not added for some reason
(e.g., the client already has reached the
maximum allowed concurrent requests).public boolean removeOperationInProgress(int messageID)
removeOperationInProgress
in class ClientConnection
messageID
- The message ID of the operation to remove from the set
of operations in progress.
true
if the operation was found and removed from the
set of operations in progress, or false
if not.public CancelResult cancelOperation(int messageID, CancelRequest cancelRequest)
cancelOperation
in class ClientConnection
messageID
- The message ID of the operation to cancel.cancelRequest
- An object providing additional information about how
the cancel should be processed.
public void cancelAllOperations(CancelRequest cancelRequest)
cancelAllOperations
in class ClientConnection
cancelRequest
- An object providing additional information about how
the cancel should be processed.public void cancelAllOperationsExcept(CancelRequest cancelRequest, int messageID)
cancelAllOperationsExcept
in class ClientConnection
cancelRequest
- An object providing additional information about how
the cancel should be processed.messageID
- The message ID of the operation that should not be
canceled.public java.nio.channels.Selector getWriteSelector()
Selector
that may be used to ensure that
write operations complete in a timely manner, or terminate the
connection in the event that they fail to do so. This is an
optional method for client connections, and the default
implementation returns null
to indicate that the maximum
blocked write time limit is not supported for this connection.
Subclasses that do wish to support this functionality should
return a valid Selector
object.
getWriteSelector
in class ClientConnection
Selector
that may be used to ensure that
write operations complete in a timely manner, or
null
if this client connection does not support
maximum blocked write time limit functionality.public long getMaxBlockedWriteTimeLimit()
getMaxBlockedWriteTimeLimit
in class ClientConnection
public boolean processDataRead(java.nio.ByteBuffer buffer)
processDataRead
in class ClientConnection
buffer
- The buffer containing the data to be processed. It must be
ready for reading (i.e., it should have been flipped by the
caller), and the data provided must be unencrypted (e.g.,
if the client is communicating over SSL, then the
decryption should happen before calling this method).
true
if all the data in the provided buffer was
processed and the client connection can remain established, or
false
if a decoding error occurred and requests from
this client should no longer be processed. Note that if this
method does return false
, then it must have already
disconnected the client, and upon returning the request handler
should remove it from the associated selector.public java.lang.String getMonitorSummary()
getMonitorSummary
in class ClientConnection
public void toString(java.lang.StringBuilder buffer)
toString
in class ClientConnection
buffer
- The buffer to which the information should be appended.public boolean tlsProtectionAvailable(MessageBuilder unavailableReason)
tlsProtectionAvailable
in interface TLSCapableConnection
unavailableReason
- The buffer used to hold the reason that TLS is
not available on the underlying client
connection.
true
if TLS is available on the underlying client
connection, or false
if it is not.public void enableTLSConnectionSecurityProvider() throws DirectoryException
enableTLSConnectionSecurityProvider
in interface TLSCapableConnection
DirectoryException
- If the TLS connection security provider could
not be enabled and the underlying connection
has been closed.public void disableTLSConnectionSecurityProvider() throws DirectoryException
disableTLSConnectionSecurityProvider
in interface TLSCapableConnection
DirectoryException
- If TLS protection cannot be reverted and the
underlying client connection has been closed.public void sendClearResponse(Operation operation) throws DirectoryException
sendClearResponse
in interface TLSCapableConnection
operation
- The operation for which to send the response in the
clear.
DirectoryException
- If a problem occurs while sending the response
in the clear.public DN getKeyManagerProviderDN()
null
to indicate that no key
manager provider is avaialble, but subclasses should override
this method to return a valid DN if they perform operations which
may need access to a key manager.
getKeyManagerProviderDN
in class ClientConnection
null
if there is no key manager provider
configured for this client connection.public DN getTrustManagerProviderDN()
null
to indicate that no
trust manager provider is avaialble, but subclasses should
override this method to return a valid DN if they perform
operations which may need access to a trust manager.
getTrustManagerProviderDN
in class ClientConnection
null
if there is no trust manager provider
configured for this client connection.public java.lang.String getCertificateAlias()
null
to indicate that any alias is
acceptable.
getCertificateAlias
in class ClientConnection
null
if any alias is acceptable.public long getIdleTime()
getIdleTime
in class ClientConnection
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |