diff options
author | Eric Anderson <ejona@google.com> | 2018-08-31 16:37:42 -0700 |
---|---|---|
committer | Eric Anderson <ejona@google.com> | 2018-09-17 16:49:56 -0700 |
commit | 6f71472cf4056367388eb287c7618615e055a4f5 (patch) | |
tree | 09c84534a76afe72f199ae8579f138167174d292 | |
parent | b0f423295b4674cb5247a6143fd211b050ef0065 (diff) | |
download | grpc-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.java | 40 | ||||
-rw-r--r-- | alts/src/main/java/io/grpc/alts/GoogleDefaultChannelBuilder.java | 59 |
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() { |