From 4ea2bc73aa3a298a61532530eb177704fa4a569f Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Mon, 11 Jan 2010 14:23:49 +0000
Subject: [PATCH] Fix SDK issue 4421: Remove generic AsynchronousConnection parameter from ConnectionFactory.
---
opendj-sdk/sdk/src/org/opends/sdk/HeartBeatConnectionFactory.java | 53 +++++++++++++++++++++++++++++++++--------------------
1 files changed, 33 insertions(+), 20 deletions(-)
diff --git a/opendj-sdk/sdk/src/org/opends/sdk/HeartBeatConnectionFactory.java b/opendj-sdk/sdk/src/org/opends/sdk/HeartBeatConnectionFactory.java
index 9e95afe..143f85b 100644
--- a/opendj-sdk/sdk/src/org/opends/sdk/HeartBeatConnectionFactory.java
+++ b/opendj-sdk/sdk/src/org/opends/sdk/HeartBeatConnectionFactory.java
@@ -33,7 +33,6 @@
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
import org.opends.sdk.requests.*;
import org.opends.sdk.responses.*;
@@ -48,7 +47,7 @@
* that sends a periodic search request to a Directory Server.
*/
final class HeartBeatConnectionFactory extends
- AbstractConnectionFactory<AsynchronousConnection>
+ AbstractConnectionFactory
{
private final SearchRequest heartBeat;
@@ -58,7 +57,7 @@
private final List<AsynchronousConnectionImpl> activeConnections;
- private final ConnectionFactory<?> parentFactory;
+ private final ConnectionFactory parentFactory;
@@ -77,7 +76,7 @@
* @param unit
* The time unit of the timeout argument.
*/
- HeartBeatConnectionFactory(ConnectionFactory<?> connectionFactory,
+ HeartBeatConnectionFactory(ConnectionFactory connectionFactory,
long timeout, TimeUnit unit)
{
this(connectionFactory, timeout, unit, DEFAULT_SEARCH);
@@ -106,7 +105,7 @@
* @param heartBeat
* The search request to use when pinging connections.
*/
- HeartBeatConnectionFactory(ConnectionFactory<?> connectionFactory,
+ HeartBeatConnectionFactory(ConnectionFactory connectionFactory,
long timeout, TimeUnit unit, SearchRequest heartBeat)
{
this.heartBeat = heartBeat;
@@ -125,13 +124,17 @@
* operations.
*/
private final class AsynchronousConnectionImpl implements
- AsynchronousConnection, ConnectionEventListener, ResultHandler<Result>
+ AsynchronousConnection, ConnectionEventListener,
+ ResultHandler<Result>
{
private final AsynchronousConnection connection;
+
private long lastSuccessfulPing;
+
private FutureResult<Result> lastPingFuture;
+
private AsynchronousConnectionImpl(AsynchronousConnection connection)
{
this.connection = connection;
@@ -345,16 +348,20 @@
return connection.isClosed();
}
+
+
/**
* {@inheritDoc}
*/
public boolean isValid()
{
- return connection.isValid() && (lastSuccessfulPing <= 0 ||
- System.currentTimeMillis() - lastSuccessfulPing <
- unit.toMillis(timeout) * 2);
+ return connection.isValid()
+ && (lastSuccessfulPing <= 0 || System.currentTimeMillis()
+ - lastSuccessfulPing < unit.toMillis(timeout) * 2);
}
+
+
public void connectionReceivedUnsolicitedNotification(
GenericExtendedResult notification)
{
@@ -373,13 +380,19 @@
}
}
- public void handleErrorResult(ErrorResultException error) {
+
+
+ public void handleErrorResult(ErrorResultException error)
+ {
connection.close(Requests.newUnbindRequest(),
"Heartbeat retured error: " + error);
}
- public void handleResult(Result result) {
- lastSuccessfulPing = System.currentTimeMillis();
+
+
+ public void handleResult(Result result)
+ {
+ lastSuccessfulPing = System.currentTimeMillis();
}
}
@@ -398,25 +411,25 @@
public void run()
{
long startTime;
- while(true)
+ while (true)
{
startTime = System.currentTimeMillis();
synchronized (activeConnections)
{
for (AsynchronousConnectionImpl connection : activeConnections)
{
- if(connection.lastPingFuture == null ||
- connection.lastPingFuture.isDone())
+ if (connection.lastPingFuture == null
+ || connection.lastPingFuture.isDone())
{
- connection.lastPingFuture =
- connection.search(heartBeat, connection, null);
+ connection.lastPingFuture = connection.search(heartBeat,
+ connection, null);
}
}
}
try
{
- sleep(unit.toMillis(timeout) -
- (System.currentTimeMillis() - startTime));
+ sleep(unit.toMillis(timeout)
+ - (System.currentTimeMillis() - startTime));
}
catch (InterruptedException e)
{
@@ -464,7 +477,7 @@
public FutureResult<AsynchronousConnection> getAsynchronousConnection(
- ResultHandler<? super AsynchronousConnection> handler)
+ ResultHandler<AsynchronousConnection> handler)
{
FutureResultImpl future = new FutureResultImpl(handler);
future.setFutureResult(parentFactory
--
Gitblit v1.10.0