Skip to content

Commit

Permalink
Issue grpc#7211 WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
sergiitk committed Aug 17, 2020
1 parent 39c49b0 commit fcead8a
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 6 deletions.
25 changes: 25 additions & 0 deletions core/src/main/java/io/grpc/internal/ManagedChannelImplBuilder.java
@@ -0,0 +1,25 @@
package io.grpc.internal;

public class ManagedChannelImplBuilder extends AbstractManagedChannelImplBuilder<ManagedChannelImplBuilder> {
private final TransportFactoryBuilder transportFactoryBuilder;

public interface TransportFactoryBuilder {
ClientTransportFactory buildTransportFactory();
}

protected ManagedChannelImplBuilder(String target,
TransportFactoryBuilder transportFactoryBuilder) {
super(target);
this.transportFactoryBuilder = transportFactoryBuilder;
}

public static ManagedChannelImplBuilder forTarget(String target,
TransportFactoryBuilder transportFactoryBuilder) {
return new ManagedChannelImplBuilder(target, transportFactoryBuilder);
}

@Override
protected ClientTransportFactory buildTransportFactory() {
return transportFactoryBuilder.buildTransportFactory();
}
}
20 changes: 14 additions & 6 deletions okhttp/src/main/java/io/grpc/okhttp/OkHttpChannelBuilder.java
Expand Up @@ -24,13 +24,14 @@
import com.google.common.base.Preconditions;
import io.grpc.ChannelLogger;
import io.grpc.ExperimentalApi;
import io.grpc.ForwardingChannelBuilder;
import io.grpc.Internal;
import io.grpc.internal.AbstractManagedChannelImplBuilder;
import io.grpc.internal.AtomicBackoff;
import io.grpc.internal.ClientTransportFactory;
import io.grpc.internal.ConnectionClientTransport;
import io.grpc.internal.GrpcUtil;
import io.grpc.internal.KeepAliveManager;
import io.grpc.internal.ManagedChannelImplBuilder;
import io.grpc.internal.SharedResourceHolder;
import io.grpc.internal.SharedResourceHolder.Resource;
import io.grpc.internal.TransportTracer;
Expand All @@ -55,9 +56,11 @@
/** Convenience class for building channels with the OkHttp transport. */
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1785")
public class OkHttpChannelBuilder extends
AbstractManagedChannelImplBuilder<OkHttpChannelBuilder> {
ForwardingChannelBuilder<OkHttpChannelBuilder> {

public static final int DEFAULT_FLOW_CONTROL_WINDOW = 65535;
private final ManagedChannelImplBuilder managedChannelImplBuilder;
private TransportTracer.Factory transportTracerFactory = TransportTracer.getDefaultFactory();

/** Identifies the negotiation used for starting up HTTP/2. */
private enum NegotiationType {
Expand Down Expand Up @@ -115,6 +118,11 @@ public static OkHttpChannelBuilder forTarget(String target) {
return new OkHttpChannelBuilder(target);
}

@Override
protected ManagedChannelImplBuilder delegate() {
return managedChannelImplBuilder;
}

private Executor transportExecutor;
private ScheduledExecutorService scheduledExecutorService;

Expand All @@ -140,7 +148,9 @@ protected OkHttpChannelBuilder(String host, int port) {
}

private OkHttpChannelBuilder(String target) {
super(target);
super();
managedChannelImplBuilder = ManagedChannelImplBuilder.forTarget(target,
this::buildTransportFactory);
}

@VisibleForTesting
Expand Down Expand Up @@ -363,9 +373,7 @@ public OkHttpChannelBuilder maxInboundMetadataSize(int bytes) {
return this;
}

@Override
@Internal
protected final ClientTransportFactory buildTransportFactory() {
private final ClientTransportFactory buildTransportFactory() {
boolean enableKeepAlive = keepAliveTimeNanos != KEEPALIVE_TIME_NANOS_DISABLED;
return new OkHttpTransportFactory(
transportExecutor,
Expand Down

0 comments on commit fcead8a

Please sign in to comment.