mirror of https://github.com/grpc/grpc-java.git
alts: Initialize ProtocolNegotiators eagerly
This simplifies the construction process, as we have fewer "interesting" phases to weed through.
This commit is contained in:
parent
b0f423295b
commit
6f71472cf4
|
|
@ -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);
|
InternalNettyChannelBuilder.setDynamicTransportParamsFactory(delegate(), tcpfFactory);
|
||||||
tcpfFactoryForTest = tcpfFactory;
|
tcpfFactoryForTest = tcpfFactory;
|
||||||
|
|
||||||
|
|
@ -162,22 +177,15 @@ public final class AltsChannelBuilder extends ForwardingChannelBuilder<AltsChann
|
||||||
return tcpfFactoryForTest.handshakerOptions;
|
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 =
|
public TcpfFactory(AltsClientOptions handshakerOptions, AltsProtocolNegotiator negotiator) {
|
||||||
new TsiHandshakerFactory() {
|
this.handshakerOptions = handshakerOptions;
|
||||||
@Override
|
this.negotiator = negotiator;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TransportCreationParamsFilter create(
|
public TransportCreationParamsFilter create(
|
||||||
|
|
@ -189,8 +197,6 @@ public final class AltsChannelBuilder extends ForwardingChannelBuilder<AltsChann
|
||||||
serverAddress instanceof InetSocketAddress,
|
serverAddress instanceof InetSocketAddress,
|
||||||
"%s must be a InetSocketAddress",
|
"%s must be a InetSocketAddress",
|
||||||
serverAddress);
|
serverAddress);
|
||||||
final AltsProtocolNegotiator negotiator =
|
|
||||||
AltsProtocolNegotiator.create(altsHandshakerFactory);
|
|
||||||
return new TransportCreationParamsFilter() {
|
return new TransportCreationParamsFilter() {
|
||||||
@Override
|
@Override
|
||||||
public SocketAddress getTargetServerAddress() {
|
public SocketAddress getTargetServerAddress() {
|
||||||
|
|
|
||||||
|
|
@ -61,10 +61,36 @@ public final class GoogleDefaultChannelBuilder
|
||||||
extends ForwardingChannelBuilder<GoogleDefaultChannelBuilder> {
|
extends ForwardingChannelBuilder<GoogleDefaultChannelBuilder> {
|
||||||
|
|
||||||
private final NettyChannelBuilder delegate;
|
private final NettyChannelBuilder delegate;
|
||||||
private final TcpfFactory tcpfFactory = new TcpfFactory();
|
private final TcpfFactory tcpfFactory;
|
||||||
|
|
||||||
private GoogleDefaultChannelBuilder(String target) {
|
private GoogleDefaultChannelBuilder(String target) {
|
||||||
delegate = NettyChannelBuilder.forTarget(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);
|
InternalNettyChannelBuilder.setDynamicTransportParamsFactory(delegate(), tcpfFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -104,33 +130,10 @@ public final class GoogleDefaultChannelBuilder
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class TcpfFactory implements TransportCreationParamsFilterFactory {
|
private static final class TcpfFactory implements TransportCreationParamsFilterFactory {
|
||||||
|
private final GoogleDefaultProtocolNegotiator negotiator;
|
||||||
|
|
||||||
private final SslContext sslContext;
|
private TcpfFactory(GoogleDefaultProtocolNegotiator negotiator) {
|
||||||
private final AltsClientOptions handshakerOptions =
|
this.negotiator = negotiator;
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -143,8 +146,6 @@ public final class GoogleDefaultChannelBuilder
|
||||||
serverAddress instanceof InetSocketAddress,
|
serverAddress instanceof InetSocketAddress,
|
||||||
"%s must be a InetSocketAddress",
|
"%s must be a InetSocketAddress",
|
||||||
serverAddress);
|
serverAddress);
|
||||||
final GoogleDefaultProtocolNegotiator negotiator =
|
|
||||||
new GoogleDefaultProtocolNegotiator(altsHandshakerFactory, sslContext);
|
|
||||||
return new TransportCreationParamsFilter() {
|
return new TransportCreationParamsFilter() {
|
||||||
@Override
|
@Override
|
||||||
public SocketAddress getTargetServerAddress() {
|
public SocketAddress getTargetServerAddress() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue