Skip to content

Commit f3fbd20

Browse files
committed
Minor
1 parent 2330c3f commit f3fbd20

File tree

3 files changed

+22
-55
lines changed

3 files changed

+22
-55
lines changed

vertx-sql-client/src/main/java/io/vertx/sqlclient/impl/Utils.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package io.vertx.sqlclient.impl;
22

3+
import io.vertx.core.Future;
34
import io.vertx.core.buffer.Buffer;
45
import io.vertx.core.json.JsonArray;
56
import io.vertx.core.json.JsonObject;
67

78
import java.lang.reflect.Array;
89
import java.util.ArrayList;
10+
import java.util.List;
11+
import java.util.concurrent.atomic.AtomicLong;
12+
import java.util.function.Supplier;
913

1014
import static io.vertx.sqlclient.Tuple.JSON_NULL;
1115

@@ -39,4 +43,16 @@ public static Object toJson(Object value) {
3943
return value.toString();
4044
}
4145
}
46+
47+
public static <T> Supplier<Future<T>> roundRobinSupplier(List<T> factories) {
48+
return new Supplier<Future<T>>() {
49+
final AtomicLong idx = new AtomicLong();
50+
@Override
51+
public Future<T> get() {
52+
long val = idx.getAndIncrement();
53+
T f = factories.get((int)val % factories.size());
54+
return Future.succeededFuture(f);
55+
}
56+
};
57+
}
4258
}

vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/ConnectionFactory.java

Lines changed: 3 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
package io.vertx.sqlclient.spi;
22

3+
import io.vertx.core.Closeable;
4+
import io.vertx.core.Context;
5+
import io.vertx.core.Future;
36
import io.vertx.core.*;
47
import io.vertx.core.impl.ContextInternal;
58
import io.vertx.sqlclient.SqlConnectOptions;
6-
import io.vertx.core.Promise;
79
import io.vertx.sqlclient.SqlConnection;
810

9-
import java.util.ArrayList;
10-
import java.util.List;
11-
import java.util.concurrent.atomic.AtomicLong;
12-
import java.util.function.Supplier;
13-
1411
/**
1512
* A connection factory, can be obtained from {@link Driver#createConnectionFactory}
1613
*/
@@ -27,49 +24,6 @@ default Future<SqlConnection> connect(Context context, Future<C> fut) {
2724

2825
}
2926

30-
static <T> Supplier<Future<T>> roundRobinSupplier(List<T> factories) {
31-
return new Supplier<Future<T>>() {
32-
AtomicLong idx = new AtomicLong();
33-
@Override
34-
public Future<T> get() {
35-
long val = idx.getAndIncrement();
36-
T f = factories.get((int)val % factories.size());
37-
return Future.succeededFuture(f);
38-
}
39-
};
40-
}
41-
42-
/**
43-
* @return a connection factory that connects with a round-robin policy
44-
*/
45-
static <C extends SqlConnectOptions> ConnectionFactory<C> roundRobinSelector(List<ConnectionFactory<C>> factories) {
46-
if (factories.size() == 1) {
47-
return factories.get(0);
48-
} else {
49-
return new ConnectionFactory<C>() {
50-
int idx = 0;
51-
@Override
52-
public Future<SqlConnection> connect(Context context, C options) {
53-
ConnectionFactory<C> f = factories.get(idx);
54-
idx = (idx + 1) % factories.size();
55-
return f.connect(context, options);
56-
}
57-
@Override
58-
public void close(Promise<Void> promise) {
59-
List<Future> list = new ArrayList<>(factories.size());
60-
for (ConnectionFactory<C> factory : factories) {
61-
Promise<Void> p = Promise.promise();
62-
factory.close(p);
63-
list.add(p.future());
64-
}
65-
CompositeFuture.all(list)
66-
.<Void>mapEmpty()
67-
.onComplete(promise);
68-
}
69-
};
70-
}
71-
}
72-
7327
/**
7428
* Create a connection using the given {@code context}.
7529
*

vertx-sql-client/src/main/java/io/vertx/sqlclient/spi/Driver.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@
2525
import io.vertx.sqlclient.Pool;
2626
import io.vertx.sqlclient.PoolOptions;
2727
import io.vertx.sqlclient.SqlConnectOptions;
28-
import io.vertx.sqlclient.impl.Connection;
29-
import io.vertx.sqlclient.impl.SingletonSupplier;
30-
import io.vertx.sqlclient.impl.SqlConnectionBase;
31-
import io.vertx.sqlclient.impl.SqlConnectionInternal;
28+
import io.vertx.sqlclient.impl.*;
3229

3330
import java.util.List;
3431
import java.util.function.Supplier;
@@ -100,7 +97,7 @@ default Pool createPool(Vertx vertx, Supplier<Future<C>> databases, PoolOptions
10097
* @return the connection pool
10198
*/
10299
default Pool createPool(Vertx vertx, List<C> databases, PoolOptions options) {
103-
return createPool(vertx, ConnectionFactory.roundRobinSupplier(databases), options);
100+
return createPool(vertx, Utils.roundRobinSupplier(databases), options);
104101
}
105102

106103
/**
@@ -115,7 +112,7 @@ default Pool createPool(Vertx vertx, List<C> databases, PoolOptions options) {
115112
* @return the connection pool
116113
*/
117114
default Pool newPool(Vertx vertx, List<C> databases, PoolOptions options, CloseFuture closeFuture) {
118-
return newPool(vertx, ConnectionFactory.roundRobinSupplier(databases), options, closeFuture);
115+
return newPool(vertx, Utils.roundRobinSupplier(databases), options, closeFuture);
119116
}
120117

121118
/**

0 commit comments

Comments
 (0)