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);
|
||||
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() {
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue