4444import io .grpc .Context ;
4545import io .grpc .DecompressorRegistry ;
4646import io .grpc .EquivalentAddressGroup ;
47+ import io .grpc .ForwardingChannelBuilder ;
4748import io .grpc .InternalChannelz ;
4849import io .grpc .InternalChannelz .ChannelStats ;
4950import io .grpc .InternalChannelz .ChannelTrace ;
7273import io .grpc .SynchronizationContext .ScheduledHandle ;
7374import io .grpc .internal .AutoConfiguredLoadBalancerFactory .AutoConfiguredLoadBalancer ;
7475import io .grpc .internal .ClientCallImpl .ClientStreamProvider ;
76+ import io .grpc .internal .ManagedChannelImplBuilder .FixedPortProvider ;
77+ import io .grpc .internal .ManagedChannelImplBuilder .UnsupportedClientTransportFactoryBuilder ;
7578import io .grpc .internal .ManagedChannelServiceConfig .MethodInfo ;
7679import io .grpc .internal .RetriableStream .ChannelBufferMeter ;
7780import io .grpc .internal .RetriableStream .Throttle ;
@@ -574,7 +577,7 @@ ClientStream newSubstream(ClientStreamTracer.Factory tracerFactory, Metadata new
574577 private final Rescheduler idleTimer ;
575578
576579 ManagedChannelImpl (
577- AbstractManagedChannelImplBuilder <?> builder ,
580+ ManagedChannelImplBuilder builder ,
578581 ClientTransportFactory clientTransportFactory ,
579582 BackoffPolicy .Provider backoffPolicyProvider ,
580583 ObjectPool <? extends Executor > balancerRpcExecutorPool ,
@@ -661,7 +664,7 @@ public void execute(Runnable command) {
661664 } else {
662665 checkArgument (
663666 builder .idleTimeoutMillis
664- >= AbstractManagedChannelImplBuilder .IDLE_MODE_MIN_TIMEOUT_MILLIS ,
667+ >= ManagedChannelImplBuilder .IDLE_MODE_MIN_TIMEOUT_MILLIS ,
665668 "invalid idleTimeoutMillis %s" , builder .idleTimeoutMillis );
666669 this .idleTimeoutMillis = builder .idleTimeoutMillis ;
667670 }
@@ -1446,28 +1449,30 @@ public void run() {
14461449 @ Override
14471450 public ManagedChannelBuilder <?> createResolvingOobChannelBuilder (String target ) {
14481451 final class ResolvingOobChannelBuilder
1449- extends AbstractManagedChannelImplBuilder <ResolvingOobChannelBuilder > {
1450- int defaultPort = - 1 ;
1452+ extends ForwardingChannelBuilder <ResolvingOobChannelBuilder > {
1453+ private final ManagedChannelImplBuilder managedChannelImplBuilder ;
14511454
14521455 ResolvingOobChannelBuilder (String target ) {
1453- super (target );
1456+ final class ResolvingOobUnsupportedClientTransportFactoryBuilder extends
1457+ UnsupportedClientTransportFactoryBuilder {}
1458+
1459+ managedChannelImplBuilder = new ManagedChannelImplBuilder (target ,
1460+ new ResolvingOobUnsupportedClientTransportFactoryBuilder (),
1461+ new FixedPortProvider (nameResolverArgs .getDefaultPort ()));
1462+ managedChannelImplBuilder .executorPool = executorPool ;
1463+ managedChannelImplBuilder .offloadExecutorPool = offloadExecutorHolder .pool ;
14541464 }
14551465
14561466 @ Override
1457- public int getDefaultPort () {
1458- return defaultPort ;
1459- }
1460-
1461- @ Override
1462- protected ClientTransportFactory buildTransportFactory () {
1463- throw new UnsupportedOperationException ();
1467+ protected ManagedChannelBuilder <?> delegate () {
1468+ return managedChannelImplBuilder ;
14641469 }
14651470
14661471 @ Override
14671472 public ManagedChannel build () {
14681473 // TODO(creamsoup) prevent main channel to shutdown if oob channel is not terminated
14691474 return new ManagedChannelImpl (
1470- this ,
1475+ managedChannelImplBuilder ,
14711476 transportFactory ,
14721477 backoffPolicyProvider ,
14731478 balancerRpcExecutorPool ,
@@ -1479,17 +1484,15 @@ public ManagedChannel build() {
14791484
14801485 checkState (!terminated , "Channel is terminated" );
14811486
1482- ResolvingOobChannelBuilder builder = new ResolvingOobChannelBuilder (target );
1483- builder .offloadExecutorPool = offloadExecutorHolder .pool ;
1484- builder .overrideAuthority (getAuthority ());
14851487 @ SuppressWarnings ("deprecation" )
1486- ResolvingOobChannelBuilder unused = builder .nameResolverFactory (nameResolverFactory );
1487- builder .executorPool = executorPool ;
1488- builder .maxTraceEvents = maxTraceEvents ;
1489- builder .proxyDetector = nameResolverArgs .getProxyDetector ();
1490- builder .defaultPort = nameResolverArgs .getDefaultPort ();
1491- builder .userAgent = userAgent ;
1492- return builder ;
1488+ ResolvingOobChannelBuilder builder = new ResolvingOobChannelBuilder (target )
1489+ .nameResolverFactory (nameResolverFactory );
1490+
1491+ return builder
1492+ .overrideAuthority (getAuthority ())
1493+ .maxTraceEvents (maxTraceEvents )
1494+ .proxyDetector (nameResolverArgs .getProxyDetector ())
1495+ .userAgent (userAgent );
14931496 }
14941497
14951498 @ Override
0 commit comments