aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anderson <ejona@google.com>2018-08-31 16:37:42 -0700
committerEric Anderson <ejona@google.com>2018-09-17 16:49:56 -0700
commit6f71472cf4056367388eb287c7618615e055a4f5 (patch)
tree09c84534a76afe72f199ae8579f138167174d292
parentb0f423295b4674cb5247a6143fd211b050ef0065 (diff)
downloadgrpc-grpc-java-6f71472cf4056367388eb287c7618615e055a4f5.tar.gz
alts: Initialize ProtocolNegotiators eagerly
This simplifies the construction process, as we have fewer "interesting" phases to weed through.
-rw-r--r--alts/src/main/java/io/grpc/alts/AltsChannelBuilder.java40
-rw-r--r--alts/src/main/java/io/grpc/alts/GoogleDefaultChannelBuilder.java59
2 files changed, 53 insertions, 46 deletions
diff --git a/alts/src/main/java/io/grpc/alts/AltsChannelBuilder.java b/alts/src/main/java/io/grpc/alts/AltsChannelBuilder.java
index f0346fad7..ce24861b8 100644
--- a/alts/src/main/java/io/grpc/alts/AltsChannelBuilder.java
+++ b/alts/src/main/java/io/grpc/alts/AltsChannelBuilder.java
@@ -140,7 +140,22 @@ public final class AltsChannelBuilder extends ForwardingChannelBuilder<AltsChann
}
}
- TcpfFactory tcpfFactory = new TcpfFactory();
+ final AltsClientOptions handshakerOptions = handshakerOptionsBuilder.build();
+ TsiHandshakerFactory altsHandshakerFactory =
+ new TsiHandshakerFactory() {
+ @Override
+ public TsiHandshaker newHandshaker() {
+ // Used the shared grpc channel to connecting to the ALTS handshaker service.
+ // TODO: Release the channel if it is not used.
+ // https://github.com/grpc/grpc-java/issues/4755.
+ return AltsTsiHandshaker.newClient(
+ HandshakerServiceGrpc.newStub(handshakerChannelPool.getObject()),
+ handshakerOptions);
+ }
+ };
+ AltsProtocolNegotiator negotiator = AltsProtocolNegotiator.create(altsHandshakerFactory);
+
+ TcpfFactory tcpfFactory = new TcpfFactory(handshakerOptions, negotiator);
InternalNettyChannelBuilder.setDynamicTransportParamsFactory(delegate(), tcpfFactory);
tcpfFactoryForTest = tcpfFactory;
@@ -162,22 +177,15 @@ public final class AltsChannelBuilder extends ForwardingChannelBuilder<AltsChann
return tcpfFactoryForTest.handshakerOptions;
}
- private final class TcpfFactory implements TransportCreationParamsFilterFactory {
+ private static final class TcpfFactory implements TransportCreationParamsFilterFactory {
- final AltsClientOptions handshakerOptions = handshakerOptionsBuilder.build();
+ final AltsClientOptions handshakerOptions;
+ private final AltsProtocolNegotiator negotiator;
- private final TsiHandshakerFactory altsHandshakerFactory =
- new TsiHandshakerFactory() {
- @Override
- public TsiHandshaker newHandshaker() {
- // Used the shared grpc channel to connecting to the ALTS handshaker service.
- // TODO: Release the channel if it is not used.
- // https://github.com/grpc/grpc-java/issues/4755.
- return AltsTsiHandshaker.newClient(
- HandshakerServiceGrpc.newStub(handshakerChannelPool.getObject()),
- handshakerOptions);
- }
- };
+ public TcpfFactory(AltsClientOptions handshakerOptions, AltsProtocolNegotiator negotiator) {
+ this.handshakerOptions = handshakerOptions;
+ this.negotiator = negotiator;
+ }
@Override
public TransportCreationParamsFilter create(
@@ -189,8 +197,6 @@ public final class AltsChannelBuilder extends ForwardingChannelBuilder<AltsChann
serverAddress instanceof InetSocketAddress,
"%s must be a InetSocketAddress",
serverAddress);
- final AltsProtocolNegotiator negotiator =
- AltsProtocolNegotiator.create(altsHandshakerFactory);
return new TransportCreationParamsFilter() {
@Override
public SocketAddress getTargetServerAddress() {
diff --git a/alts/src/main/java/io/grpc/alts/GoogleDefaultChannelBuilder.java b/alts/src/main/java/io/grpc/alts/GoogleDefaultChannelBuilder.java
index 211e1d14e..619ce04c7 100644
--- a/alts/src/main/java/io/grpc/alts/GoogleDefaultChannelBuilder.java
+++ b/alts/src/main/java/io/grpc/alts/GoogleDefaultChannelBuilder.java
@@ -61,10 +61,36 @@ public final class GoogleDefaultChannelBuilder
extends ForwardingChannelBuilder<GoogleDefaultChannelBuilder> {
private final NettyChannelBuilder delegate;
- private final TcpfFactory tcpfFactory = new TcpfFactory();
+ private final TcpfFactory tcpfFactory;
private GoogleDefaultChannelBuilder(String target) {
delegate = NettyChannelBuilder.forTarget(target);
+
+ final AltsClientOptions handshakerOptions =
+ new AltsClientOptions.Builder()
+ .setRpcProtocolVersions(RpcProtocolVersionsUtil.getRpcProtocolVersions())
+ .build();
+ TsiHandshakerFactory altsHandshakerFactory =
+ new TsiHandshakerFactory() {
+ @Override
+ public TsiHandshaker newHandshaker() {
+ // Used the shared grpc channel to connecting to the ALTS handshaker service.
+ // TODO: Release the channel if it is not used.
+ // https://github.com/grpc/grpc-java/issues/4755.
+ ManagedChannel channel =
+ SharedResourceHolder.get(HandshakerServiceChannel.SHARED_HANDSHAKER_CHANNEL);
+ return AltsTsiHandshaker.newClient(
+ HandshakerServiceGrpc.newStub(channel), handshakerOptions);
+ }
+ };
+ SslContext sslContext;
+ try {
+ sslContext = GrpcSslContexts.forClient().build();
+ } catch (SSLException ex) {
+ throw new RuntimeException(ex);
+ }
+ tcpfFactory = new TcpfFactory(
+ new GoogleDefaultProtocolNegotiator(altsHandshakerFactory, sslContext));
InternalNettyChannelBuilder.setDynamicTransportParamsFactory(delegate(), tcpfFactory);
}
@@ -104,33 +130,10 @@ public final class GoogleDefaultChannelBuilder
}
private static final class TcpfFactory implements TransportCreationParamsFilterFactory {
+ private final GoogleDefaultProtocolNegotiator negotiator;
- private final SslContext sslContext;
- private final AltsClientOptions handshakerOptions =
- new AltsClientOptions.Builder()
- .setRpcProtocolVersions(RpcProtocolVersionsUtil.getRpcProtocolVersions())
- .build();
-
- private final TsiHandshakerFactory altsHandshakerFactory =
- new TsiHandshakerFactory() {
- @Override
- public TsiHandshaker newHandshaker() {
- // Used the shared grpc channel to connecting to the ALTS handshaker service.
- // TODO: Release the channel if it is not used.
- // https://github.com/grpc/grpc-java/issues/4755.
- ManagedChannel channel =
- SharedResourceHolder.get(HandshakerServiceChannel.SHARED_HANDSHAKER_CHANNEL);
- return AltsTsiHandshaker.newClient(
- HandshakerServiceGrpc.newStub(channel), handshakerOptions);
- }
- };
-
- private TcpfFactory() {
- try {
- sslContext = GrpcSslContexts.forClient().build();
- } catch (SSLException ex) {
- throw new RuntimeException(ex);
- }
+ private TcpfFactory(GoogleDefaultProtocolNegotiator negotiator) {
+ this.negotiator = negotiator;
}
@Override
@@ -143,8 +146,6 @@ public final class GoogleDefaultChannelBuilder
serverAddress instanceof InetSocketAddress,
"%s must be a InetSocketAddress",
serverAddress);
- final GoogleDefaultProtocolNegotiator negotiator =
- new GoogleDefaultProtocolNegotiator(altsHandshakerFactory, sslContext);
return new TransportCreationParamsFilter() {
@Override
public SocketAddress getTargetServerAddress() {