From 6439bba5cc09d6febc59bdc9e0d9bc25f1f1eb18 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 01 Sep 2010 09:04:15 +0000
Subject: [PATCH] Various improvements:

---
 sdk/src/org/opends/sdk/LDAPClientContext.java |   91 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 84 insertions(+), 7 deletions(-)

diff --git a/sdk/src/org/opends/sdk/LDAPClientContext.java b/sdk/src/org/opends/sdk/LDAPClientContext.java
index 194c7c4..878e020 100644
--- a/sdk/src/org/opends/sdk/LDAPClientContext.java
+++ b/sdk/src/org/opends/sdk/LDAPClientContext.java
@@ -46,13 +46,45 @@
 public interface LDAPClientContext
 {
   /**
-   * Disconnects the client and optionally sends a disconnect notification.
+   * Registers the provided connection event listener so that it will be
+   * notified when the underlying connection is closed by the client, receives
+   * an unsolicited notification, or experiences a fatal error.
+   * <p>
+   * This method provides a event notification mechanism which can be used by
+   * asynchronous request handler implementations to detect connection
+   * termination.
    *
-   * @param sendNotification
-   *          {@code true} to send a disconnect notification, or {@code false}
-   *          otherwise.
+   * @param listener
+   *          The listener which wants to be notified when events occur on the
+   *          underlying connection.
+   * @throws NullPointerException
+   *           If the {@code listener} was {@code null}.
+   * @see #isClosed
    */
-  void disconnect(boolean sendNotification);
+  void addConnectionEventListener(ConnectionEventListener listener)
+      throws NullPointerException;
+
+
+
+  /**
+   * Disconnects the client without sending a disconnect notification.
+   */
+  void disconnect();
+
+
+
+  /**
+   * Disconnects the client and sends a disconnect notification, if possible,
+   * containing the provided result code and diagnostic message.
+   *
+   * @param resultCode
+   *          The result code which should be included with the disconnect
+   *          notification.
+   * @param message
+   *          The diagnostic message, which may be empty or {@code null}
+   *          indicating that none was provided.
+   */
+  void disconnect(ResultCode resultCode, String message);
 
 
 
@@ -86,6 +118,39 @@
 
 
   /**
+   * Returns {@code true} if the underlying connection is closed by the client,
+   * receives an unsolicited notification, or experiences a fatal error.
+   * <p>
+   * This method provides a polling mechanism which can be used by synchronous
+   * request handler implementations to detect connection termination.
+   *
+   * @return {@code true} if the underlying connection is closed by the client,
+   *         receives an unsolicited notification, or experiences a fatal error,
+   *         otherwise {@code false}.
+   * @see #addConnectionEventListener
+   */
+  boolean isClosed();
+
+
+
+  /**
+   * Removes the provided connection event listener from this client context so
+   * that it will no longer be notified when the underlying connection is closed
+   * by the application, receives an unsolicited notification, or experiences a
+   * fatal error.
+   *
+   * @param listener
+   *          The listener which no longer wants to be notified when events
+   *          occur on the underlying connection.
+   * @throws NullPointerException
+   *           If the {@code listener} was {@code null}.
+   */
+  void removeConnectionEventListener(ConnectionEventListener listener)
+      throws NullPointerException;
+
+
+
+  /**
    * Sends an unsolicited notification to the client.
    *
    * @param notification
@@ -112,7 +177,19 @@
    *
    * @param sslContext
    *          The {@code SSLContext} which should be used to secure the
-   *          connection.
+   * @param protocols
+   *          Names of all the protocols to enable or {@code null} to use the
+   *          default protocols.
+   * @param suites
+   *          Names of all the suites to enable or {@code null} to use the
+   *          default cipher suites.
+   * @param wantClientAuth
+   *          Set to {@code true} if client authentication is requested, or
+   *          {@code false} if no client authentication is desired.
+   * @param needClientAuth
+   *          Set to {@code true} if client authentication is required, or
+   *          {@code false} if no client authentication is desired.
    */
-  void startTLS(SSLContext sslContext);
+  void startTLS(SSLContext sslContext, String[] protocols, String[] suites,
+      boolean wantClientAuth, boolean needClientAuth);
 }

--
Gitblit v1.10.0