Code example code using gRPC, as from users' perspective
package org.example;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import io.grpc.netty.NettyChannelBuilder;
public class Main {
private final NettyChannelBuilder ncb;
public Main() {
ncb = NettyChannelBuilder
.forTarget("localhost:100")
.maxInboundMessageSize(100) // Moved from AbstractManagedChannelImplBuilder to NettyChannelBuilder in 1.33.0
.maxInboundMetadataSize(100) // NettyChannelBuilder's own method, before and after
.maxRetryAttempts(100); // Moved from AbstractManagedChannelImplBuilder to ForwardingChannelBuilder in 1.33.0
}
public NettyChannelBuilder getBuilder() {
return ncb;
}
public static void main(String[] args) {
Main me = new Main();
ManagedChannel c = me.getBuilder().build();
System.out.println(c);
}
}
abi-1.32.2.jar
- Main.java compiled with gRPC 1.32.2
❯ javap -cp ./abi-1.32.2.jar -c org.example.Main
Compiled from "Main.java"
public class org.example.Main {
public org.example.Main();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: ldc #2 // String localhost:100
7: invokestatic #3 // Method io/grpc/netty/NettyChannelBuilder.forTarget:(Ljava/lang/String;)Lio/grpc/netty/NettyChannelBuilder;
10: bipush 100
12: invokevirtual #4 // Method io/grpc/netty/NettyChannelBuilder.maxInboundMessageSize:(I)Lio/grpc/internal/AbstractManagedChannelImplBuilder;
15: checkcast #5 // class io/grpc/netty/NettyChannelBuilder
18: bipush 100
20: invokevirtual #6 // Method io/grpc/netty/NettyChannelBuilder.maxInboundMetadataSize:(I)Lio/grpc/netty/NettyChannelBuilder;
23: bipush 100
25: invokevirtual #7 // Method io/grpc/netty/NettyChannelBuilder.maxRetryAttempts:(I)Lio/grpc/internal/AbstractManagedChannelImplBuilder;
28: checkcast #5 // class io/grpc/netty/NettyChannelBuilder
31: putfield #8 // Field ncb:Lio/grpc/netty/NettyChannelBuilder;
34: return
public io.grpc.netty.NettyChannelBuilder getBuilder();
Code:
0: aload_0
1: getfield #8 // Field ncb:Lio/grpc/netty/NettyChannelBuilder;
4: areturn
public static void main(java.lang.String[]);
Code:
0: new #9 // class org/example/Main
3: dup
4: invokespecial #10 // Method "<init>":()V
7: astore_1
8: aload_1
9: invokevirtual #11 // Method getBuilder:()Lio/grpc/netty/NettyChannelBuilder;
12: invokevirtual #12 // Method io/grpc/netty/NettyChannelBuilder.build:()Lio/grpc/ManagedChannel;
15: astore_2
16: getstatic #13 // Field java/lang/System.out:Ljava/io/PrintStream;
19: aload_2
20: invokevirtual #14 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
23: return
}
abi-1.33.0
- Main.java compiled with gRPC v1.33.0- Note the difference in the return types of
maxInboundMessageSize
andmaxRetryAttempts
with v1.32.2 - PR removing changing
NettyChannelBuilder
class hierarchy: grpc/grpc-java#7359 - User reported issue: grpc/grpc-java#7552
❯ javap -cp ./abi-1.33.0.jar -c org.example.Main
Compiled from "Main.java"
public class org.example.Main {
public org.example.Main();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: ldc #2 // String localhost:100
7: invokestatic #3 // Method io/grpc/netty/NettyChannelBuilder.forTarget:(Ljava/lang/String;)Lio/grpc/netty/NettyChannelBuilder;
10: bipush 100
12: invokevirtual #4 // Method io/grpc/netty/NettyChannelBuilder.maxInboundMessageSize:(I)Lio/grpc/netty/NettyChannelBuilder;
15: bipush 100
17: invokevirtual #5 // Method io/grpc/netty/NettyChannelBuilder.maxInboundMetadataSize:(I)Lio/grpc/netty/NettyChannelBuilder;
20: bipush 100
22: invokevirtual #6 // Method io/grpc/netty/NettyChannelBuilder.maxRetryAttempts:(I)Lio/grpc/ForwardingChannelBuilder;
25: checkcast #7 // class io/grpc/netty/NettyChannelBuilder
28: putfield #8 // Field ncb:Lio/grpc/netty/NettyChannelBuilder;
31: return
public io.grpc.netty.NettyChannelBuilder getBuilder();
Code:
0: aload_0
1: getfield #8 // Field ncb:Lio/grpc/netty/NettyChannelBuilder;
4: areturn
public static void main(java.lang.String[]);
Code:
0: new #9 // class org/example/Main
3: dup
4: invokespecial #10 // Method "<init>":()V
7: astore_1
8: aload_1
9: invokevirtual #11 // Method getBuilder:()Lio/grpc/netty/NettyChannelBuilder;
12: invokevirtual #12 // Method io/grpc/netty/NettyChannelBuilder.build:()Lio/grpc/ManagedChannel;
15: astore_2
16: getstatic #13 // Field java/lang/System.out:Ljava/io/PrintStream;
19: aload_2
20: invokevirtual #14 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
23: return
}
./abi-1.34.0-SNAPSHOT.jar
- Main.java compiled with the fix below (at commit be7a628)- PR with the fix: grpc/grpc-java#7564
maxInboundMessageSize
return type stayedNettyChannelBuilder
, as in v1.33.0, but now it works becauseNettyChannelBuilder
extendsAbstractManagedChannelImplBuilder
maxRetryAttempts
return type changed back toAbstractManagedChannelImplBuilder
, as in v1.32.2
❯ javap -cp ./abi-1.34.0-SNAPSHOT.jar -c org.example.Main
Compiled from "Main.java"
public class org.example.Main {
public org.example.Main();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: aload_0
5: ldc #2 // String localhost:100
7: invokestatic #3 // Method io/grpc/netty/NettyChannelBuilder.forTarget:(Ljava/lang/String;)Lio/grpc/netty/NettyChannelBuilder;
10: bipush 100
12: invokevirtual #4 // Method io/grpc/netty/NettyChannelBuilder.maxInboundMessageSize:(I)Lio/grpc/netty/NettyChannelBuilder;
15: bipush 100
17: invokevirtual #5 // Method io/grpc/netty/NettyChannelBuilder.maxInboundMetadataSize:(I)Lio/grpc/netty/NettyChannelBuilder;
20: bipush 100
22: invokevirtual #6 // Method io/grpc/netty/NettyChannelBuilder.maxRetryAttempts:(I)Lio/grpc/internal/AbstractManagedChannelImplBuilder;
25: checkcast #7 // class io/grpc/netty/NettyChannelBuilder
28: putfield #8 // Field ncb:Lio/grpc/netty/NettyChannelBuilder;
31: return
public io.grpc.netty.NettyChannelBuilder getBuilder();
Code:
0: aload_0
1: getfield #8 // Field ncb:Lio/grpc/netty/NettyChannelBuilder;
4: areturn
public static void main(java.lang.String[]);
Code:
0: new #9 // class org/example/Main
3: dup
4: invokespecial #10 // Method "<init>":()V
7: astore_1
8: aload_1
9: invokevirtual #11 // Method getBuilder:()Lio/grpc/netty/NettyChannelBuilder;
12: invokevirtual #12 // Method io/grpc/netty/NettyChannelBuilder.build:()Lio/grpc/ManagedChannel;
15: astore_2
16: getstatic #13 // Field java/lang/System.out:Ljava/io/PrintStream;
19: aload_2
20: invokevirtual #14 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
23: return
}
- Using
abi-1.32.2.jar
- Main.java compiled with gRPC v1.32.2 deps-A.B.C
- dependency libraries, including gRPC vA.B.C
Works, as expected
❯ java -cp "./abi-1.32.2.jar:./deps-1.32.2/*" org.example.Main
ManagedChannelOrphanWrapper{delegate=ManagedChannelImpl{logId=1, target=localhost:100}}
Error: maxInboundMessageSize
with the return type AbstractManagedChannelImplBuilder
is missing.
❯ java -cp "./abi-1.32.2.jar:./deps-1.33.0/*" org.example.Main
Exception in thread "main" java.lang.NoSuchMethodError: io.grpc.netty.NettyChannelBuilder.maxInboundMessageSize(I)Lio/grpc/internal/AbstractManagedChannelImplBuilder;
at org.example.Main.<init>(Main.java:13)
at org.example.Main.main(Main.java:23)
Works again
❯ java -cp "./abi-1.32.2.jar:./deps-1.34-be7a6281c/*" org.example.Main
ManagedChannelOrphanWrapper{delegate=ManagedChannelImpl{logId=1, target=localhost:100}}
NettyChannelBuilder.java 1.32.2
Compiled from "NettyChannelBuilder.java"
public final class io.grpc.netty.NettyChannelBuilder extends io.grpc.internal.AbstractManagedChannelImplBuilder<io.grpc.netty.NettyChannelBuilder> {
public static final int DEFAULT_FLOW_CONTROL_WINDOW;
public static io.grpc.netty.NettyChannelBuilder forAddress(java.net.SocketAddress);
Code:
0: new #2 // class io/grpc/netty/NettyChannelBuilder
3: dup
4: aload_0
5: invokespecial #3 // Method "<init>":(Ljava/net/SocketAddress;)V
8: areturn
public static io.grpc.netty.NettyChannelBuilder forAddress(java.lang.String, int);
Code:
0: new #2 // class io/grpc/netty/NettyChannelBuilder
3: dup
4: aload_0
5: iload_1
6: invokespecial #4 // Method "<init>":(Ljava/lang/String;I)V
9: areturn
public static io.grpc.netty.NettyChannelBuilder forTarget(java.lang.String);
Code:
0: new #2 // class io/grpc/netty/NettyChannelBuilder
3: dup
4: aload_0
5: invokespecial #5 // Method "<init>":(Ljava/lang/String;)V
8: areturn
io.grpc.netty.NettyChannelBuilder(java.lang.String, int);
Code:
0: aload_0
1: aload_1
2: iload_2
3: invokestatic #6 // Method io/grpc/internal/GrpcUtil.authorityFromHostAndPort:(Ljava/lang/String;I)Ljava/lang/String;
6: invokespecial #5 // Method "<init>":(Ljava/lang/String;)V
9: return
io.grpc.netty.NettyChannelBuilder(java.lang.String);
Code:
0: aload_0
1: aload_1
2: invokespecial #7 // Method io/grpc/internal/AbstractManagedChannelImplBuilder."<init>":(Ljava/lang/String;)V
5: aload_0
6: new #8 // class java/util/HashMap
9: dup
10: invokespecial #9 // Method java/util/HashMap."<init>":()V
13: putfield #10 // Field channelOptions:Ljava/util/Map;
16: aload_0
17: getstatic #11 // Field io/grpc/netty/NegotiationType.TLS:Lio/grpc/netty/NegotiationType;
20: putfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
23: aload_0
24: getstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
27: putfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
30: aload_0
31: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
34: putfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
37: aload_0
38: getstatic #17 // Field DEFAULT_AUTO_FLOW_CONTROL:Z
41: putfield #18 // Field autoFlowControl:Z
44: aload_0
45: ldc #19 // int 1048576
47: putfield #20 // Field flowControlWindow:I
50: aload_0
51: sipush 8192
54: putfield #21 // Field maxHeaderListSize:I
57: aload_0
58: ldc2_w #22 // long 9223372036854775807l
61: putfield #24 // Field keepAliveTimeNanos:J
64: aload_0
65: getstatic #25 // Field io/grpc/internal/GrpcUtil.DEFAULT_KEEPALIVE_TIMEOUT_NANOS:J
68: putfield #26 // Field keepAliveTimeoutNanos:J
71: aload_0
72: iconst_0
73: putfield #27 // Field useGetForSafeMethods:Z
76: return
io.grpc.netty.NettyChannelBuilder(java.net.SocketAddress);
Code:
0: aload_0
1: aload_1
2: aload_1
3: invokestatic #28 // Method getAuthorityFromAddress:(Ljava/net/SocketAddress;)Ljava/lang/String;
6: invokespecial #29 // Method io/grpc/internal/AbstractManagedChannelImplBuilder."<init>":(Ljava/net/SocketAddress;Ljava/lang/String;)V
9: aload_0
10: new #8 // class java/util/HashMap
13: dup
14: invokespecial #9 // Method java/util/HashMap."<init>":()V
17: putfield #10 // Field channelOptions:Ljava/util/Map;
20: aload_0
21: getstatic #11 // Field io/grpc/netty/NegotiationType.TLS:Lio/grpc/netty/NegotiationType;
24: putfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
27: aload_0
28: getstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
31: putfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
34: aload_0
35: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
38: putfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
41: aload_0
42: getstatic #17 // Field DEFAULT_AUTO_FLOW_CONTROL:Z
45: putfield #18 // Field autoFlowControl:Z
48: aload_0
49: ldc #19 // int 1048576
51: putfield #20 // Field flowControlWindow:I
54: aload_0
55: sipush 8192
58: putfield #21 // Field maxHeaderListSize:I
61: aload_0
62: ldc2_w #22 // long 9223372036854775807l
65: putfield #24 // Field keepAliveTimeNanos:J
68: aload_0
69: getstatic #25 // Field io/grpc/internal/GrpcUtil.DEFAULT_KEEPALIVE_TIMEOUT_NANOS:J
72: putfield #26 // Field keepAliveTimeoutNanos:J
75: aload_0
76: iconst_0
77: putfield #27 // Field useGetForSafeMethods:Z
80: return
public io.grpc.netty.NettyChannelBuilder channelType(java.lang.Class<? extends io.netty.channel.Channel>);
Code:
0: aload_1
1: ldc #34 // String channelType
3: invokestatic #35 // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
6: pop
7: aload_0
8: new #36 // class io/netty/channel/ReflectiveChannelFactory
11: dup
12: aload_1
13: invokespecial #37 // Method io/netty/channel/ReflectiveChannelFactory."<init>":(Ljava/lang/Class;)V
16: invokevirtual #38 // Method channelFactory:(Lio/netty/channel/ChannelFactory;)Lio/grpc/netty/NettyChannelBuilder;
19: areturn
public io.grpc.netty.NettyChannelBuilder channelFactory(io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel>);
Code:
0: aload_0
1: aload_1
2: ldc #39 // String channelFactory
4: invokestatic #35 // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
7: checkcast #40 // class io/netty/channel/ChannelFactory
10: putfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
13: aload_0
14: areturn
public <T> io.grpc.netty.NettyChannelBuilder withOption(io.netty.channel.ChannelOption<T>, T);
Code:
0: aload_0
1: getfield #10 // Field channelOptions:Ljava/util/Map;
4: aload_1
5: aload_2
6: invokeinterface #41, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
11: pop
12: aload_0
13: areturn
public io.grpc.netty.NettyChannelBuilder negotiationType(io.grpc.netty.NegotiationType);
Code:
0: aload_0
1: aload_1
2: putfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
5: aload_0
6: areturn
public io.grpc.netty.NettyChannelBuilder eventLoopGroup(io.netty.channel.EventLoopGroup);
Code:
0: aload_1
1: ifnull 17
4: aload_0
5: new #42 // class io/grpc/internal/FixedObjectPool
8: dup
9: aload_1
10: invokespecial #43 // Method io/grpc/internal/FixedObjectPool."<init>":(Ljava/lang/Object;)V
13: invokevirtual #44 // Method eventLoopGroupPool:(Lio/grpc/internal/ObjectPool;)Lio/grpc/netty/NettyChannelBuilder;
16: areturn
17: aload_0
18: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
21: invokevirtual #44 // Method eventLoopGroupPool:(Lio/grpc/internal/ObjectPool;)Lio/grpc/netty/NettyChannelBuilder;
24: areturn
io.grpc.netty.NettyChannelBuilder eventLoopGroupPool(io.grpc.internal.ObjectPool<? extends io.netty.channel.EventLoopGroup>);
Code:
0: aload_0
1: aload_1
2: ldc #45 // String eventLoopGroupPool
4: invokestatic #35 // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
7: checkcast #46 // class io/grpc/internal/ObjectPool
10: putfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
13: aload_0
14: areturn
public io.grpc.netty.NettyChannelBuilder sslContext(io.netty.handler.ssl.SslContext);
Code:
0: aload_1
1: ifnull 20
4: aload_1
5: invokevirtual #47 // Method io/netty/handler/ssl/SslContext.isClient:()Z
8: ldc #48 // String Server SSL context can not be used for client channel
10: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
13: aload_1
14: invokevirtual #50 // Method io/netty/handler/ssl/SslContext.applicationProtocolNegotiator:()Lio/netty/handler/ssl/ApplicationProtocolNegotiator;
17: invokestatic #51 // Method io/grpc/netty/GrpcSslContexts.ensureAlpnAndH2Enabled:(Lio/netty/handler/ssl/ApplicationProtocolNegotiator;)V
20: aload_0
21: aload_1
22: putfield #52 // Field sslContext:Lio/netty/handler/ssl/SslContext;
25: aload_0
26: areturn
public io.grpc.netty.NettyChannelBuilder initialFlowControlWindow(int);
Code:
0: iload_1
1: ifle 8
4: iconst_1
5: goto 9
8: iconst_0
9: ldc #53 // String initialFlowControlWindow must be positive
11: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
14: aload_0
15: iload_1
16: putfield #20 // Field flowControlWindow:I
19: aload_0
20: iconst_1
21: putfield #18 // Field autoFlowControl:Z
24: aload_0
25: areturn
public io.grpc.netty.NettyChannelBuilder flowControlWindow(int);
Code:
0: iload_1
1: ifle 8
4: iconst_1
5: goto 9
8: iconst_0
9: ldc #54 // String flowControlWindow must be positive
11: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
14: aload_0
15: iload_1
16: putfield #20 // Field flowControlWindow:I
19: aload_0
20: iconst_0
21: putfield #18 // Field autoFlowControl:Z
24: aload_0
25: areturn
public io.grpc.netty.NettyChannelBuilder maxHeaderListSize(int);
Code:
0: aload_0
1: iload_1
2: invokevirtual #55 // Method maxInboundMetadataSize:(I)Lio/grpc/netty/NettyChannelBuilder;
5: areturn
public io.grpc.netty.NettyChannelBuilder maxInboundMetadataSize(int);
Code:
0: iload_1
1: ifle 8
4: iconst_1
5: goto 9
8: iconst_0
9: ldc #56 // String maxInboundMetadataSize must be > 0
11: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
14: aload_0
15: iload_1
16: putfield #21 // Field maxHeaderListSize:I
19: aload_0
20: areturn
public io.grpc.netty.NettyChannelBuilder usePlaintext();
Code:
0: aload_0
1: getstatic #57 // Field io/grpc/netty/NegotiationType.PLAINTEXT:Lio/grpc/netty/NegotiationType;
4: invokevirtual #58 // Method negotiationType:(Lio/grpc/netty/NegotiationType;)Lio/grpc/netty/NettyChannelBuilder;
7: pop
8: aload_0
9: areturn
public io.grpc.netty.NettyChannelBuilder useTransportSecurity();
Code:
0: aload_0
1: getstatic #11 // Field io/grpc/netty/NegotiationType.TLS:Lio/grpc/netty/NegotiationType;
4: invokevirtual #58 // Method negotiationType:(Lio/grpc/netty/NegotiationType;)Lio/grpc/netty/NettyChannelBuilder;
7: pop
8: aload_0
9: areturn
public io.grpc.netty.NettyChannelBuilder keepAliveTime(long, java.util.concurrent.TimeUnit);
Code:
0: lload_1
1: lconst_0
2: lcmp
3: ifle 10
6: iconst_1
7: goto 11
10: iconst_0
11: ldc #59 // String keepalive time must be positive
13: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
16: aload_0
17: aload_3
18: lload_1
19: invokevirtual #60 // Method java/util/concurrent/TimeUnit.toNanos:(J)J
22: putfield #24 // Field keepAliveTimeNanos:J
25: aload_0
26: aload_0
27: getfield #24 // Field keepAliveTimeNanos:J
30: invokestatic #61 // Method io/grpc/internal/KeepAliveManager.clampKeepAliveTimeInNanos:(J)J
33: putfield #24 // Field keepAliveTimeNanos:J
36: aload_0
37: getfield #24 // Field keepAliveTimeNanos:J
40: getstatic #62 // Field AS_LARGE_AS_INFINITE:J
43: lcmp
44: iflt 54
47: aload_0
48: ldc2_w #22 // long 9223372036854775807l
51: putfield #24 // Field keepAliveTimeNanos:J
54: aload_0
55: areturn
public io.grpc.netty.NettyChannelBuilder keepAliveTimeout(long, java.util.concurrent.TimeUnit);
Code:
0: lload_1
1: lconst_0
2: lcmp
3: ifle 10
6: iconst_1
7: goto 11
10: iconst_0
11: ldc #63 // String keepalive timeout must be positive
13: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
16: aload_0
17: aload_3
18: lload_1
19: invokevirtual #60 // Method java/util/concurrent/TimeUnit.toNanos:(J)J
22: putfield #26 // Field keepAliveTimeoutNanos:J
25: aload_0
26: aload_0
27: getfield #26 // Field keepAliveTimeoutNanos:J
30: invokestatic #64 // Method io/grpc/internal/KeepAliveManager.clampKeepAliveTimeoutInNanos:(J)J
33: putfield #26 // Field keepAliveTimeoutNanos:J
36: aload_0
37: areturn
public io.grpc.netty.NettyChannelBuilder keepAliveWithoutCalls(boolean);
Code:
0: aload_0
1: iload_1
2: putfield #65 // Field keepAliveWithoutCalls:Z
5: aload_0
6: areturn
public io.grpc.netty.NettyChannelBuilder localSocketPicker(io.grpc.netty.NettyChannelBuilder$LocalSocketPicker);
Code:
0: aload_0
1: aload_1
2: putfield #66 // Field localSocketPicker:Lio/grpc/netty/NettyChannelBuilder$LocalSocketPicker;
5: aload_0
6: areturn
protected io.grpc.internal.ClientTransportFactory buildTransportFactory();
Code:
0: aload_0
1: invokevirtual #67 // Method assertEventLoopAndChannelType:()V
4: aload_0
5: getfield #68 // Field protocolNegotiatorFactory:Lio/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory;
8: ifnull 24
11: aload_0
12: getfield #68 // Field protocolNegotiatorFactory:Lio/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory;
15: invokeinterface #69, 1 // InterfaceMethod io/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory.buildProtocolNegotiator:()Lio/grpc/netty/ProtocolNegotiator;
20: astore_1
21: goto 76
24: aload_0
25: getfield #52 // Field sslContext:Lio/netty/handler/ssl/SslContext;
28: astore_2
29: aload_0
30: getfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
33: getstatic #11 // Field io/grpc/netty/NegotiationType.TLS:Lio/grpc/netty/NegotiationType;
36: if_acmpne 63
39: aload_2
40: ifnonnull 63
43: invokestatic #70 // Method io/grpc/netty/GrpcSslContexts.forClient:()Lio/netty/handler/ssl/SslContextBuilder;
46: invokevirtual #71 // Method io/netty/handler/ssl/SslContextBuilder.build:()Lio/netty/handler/ssl/SslContext;
49: astore_2
50: goto 63
53: astore_3
54: new #73 // class java/lang/RuntimeException
57: dup
58: aload_3
59: invokespecial #74 // Method java/lang/RuntimeException."<init>":(Ljava/lang/Throwable;)V
62: athrow
63: aload_0
64: getfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
67: aload_2
68: aload_0
69: invokevirtual #75 // Method getOffloadExecutorPool:()Lio/grpc/internal/ObjectPool;
72: invokestatic #76 // Method createProtocolNegotiatorByType:(Lio/grpc/netty/NegotiationType;Lio/netty/handler/ssl/SslContext;Lio/grpc/internal/ObjectPool;)Lio/grpc/netty/ProtocolNegotiator;
75: astore_1
76: new #77 // class io/grpc/netty/NettyChannelBuilder$NettyTransportFactory
79: dup
80: aload_1
81: aload_0
82: getfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
85: aload_0
86: getfield #10 // Field channelOptions:Ljava/util/Map;
89: aload_0
90: getfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
93: aload_0
94: getfield #18 // Field autoFlowControl:Z
97: aload_0
98: getfield #20 // Field flowControlWindow:I
101: aload_0
102: invokevirtual #78 // Method maxInboundMessageSize:()I
105: aload_0
106: getfield #21 // Field maxHeaderListSize:I
109: aload_0
110: getfield #24 // Field keepAliveTimeNanos:J
113: aload_0
114: getfield #26 // Field keepAliveTimeoutNanos:J
117: aload_0
118: getfield #65 // Field keepAliveWithoutCalls:Z
121: aload_0
122: getfield #79 // Field transportTracerFactory:Lio/grpc/internal/TransportTracer$Factory;
125: aload_0
126: getfield #66 // Field localSocketPicker:Lio/grpc/netty/NettyChannelBuilder$LocalSocketPicker;
129: iconst_0
130: invokespecial #80 // Method io/grpc/netty/NettyChannelBuilder$NettyTransportFactory."<init>":(Lio/grpc/netty/ProtocolNegotiator;Lio/netty/channel/ChannelFactory;Ljava/util/Map;Lio/grpc/internal/ObjectPool;ZIIIJJZLio/grpc/internal/TransportTracer$Factory;Lio/grpc/netty/NettyChannelBuilder$LocalSocketPicker;Z)V
133: areturn
Exception table:
from to target type
43 50 53 Class javax/net/ssl/SSLException
void assertEventLoopAndChannelType();
Code:
0: aload_0
1: getfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
4: getstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
7: if_acmpeq 24
10: aload_0
11: getfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
14: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
17: if_acmpeq 24
20: iconst_1
21: goto 25
24: iconst_0
25: istore_1
26: aload_0
27: getfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
30: getstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
33: if_acmpne 50
36: aload_0
37: getfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
40: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
43: if_acmpne 50
46: iconst_1
47: goto 51
50: iconst_0
51: istore_2
52: iload_1
53: ifne 60
56: iload_2
57: ifeq 64
60: iconst_1
61: goto 65
64: iconst_0
65: ldc #81 // String Both EventLoopGroup and ChannelType should be provided or neither should be
67: invokestatic #82 // Method com/google/common/base/Preconditions.checkState:(ZLjava/lang/Object;)V
70: return
protected int getDefaultPort();
Code:
0: getstatic #83 // Field io/grpc/netty/NettyChannelBuilder$1.$SwitchMap$io$grpc$netty$NegotiationType:[I
3: aload_0
4: getfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
7: invokevirtual #84 // Method io/grpc/netty/NegotiationType.ordinal:()I
10: iaload
11: tableswitch { // 1 to 3
1: 36
2: 36
3: 39
default: 43
}
36: bipush 80
38: ireturn
39: sipush 443
42: ireturn
43: new #85 // class java/lang/AssertionError
46: dup
47: new #86 // class java/lang/StringBuilder
50: dup
51: invokespecial #87 // Method java/lang/StringBuilder."<init>":()V
54: aload_0
55: getfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
58: invokevirtual #88 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
61: ldc #89 // String not handled
63: invokevirtual #90 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
66: invokevirtual #91 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
69: invokespecial #92 // Method java/lang/AssertionError."<init>":(Ljava/lang/Object;)V
72: athrow
void overrideAuthorityChecker(io.grpc.netty.NettyChannelBuilder$OverrideAuthorityChecker);
Code:
0: aload_0
1: aload_1
2: putfield #93 // Field authorityChecker:Lio/grpc/netty/NettyChannelBuilder$OverrideAuthorityChecker;
5: return
static io.grpc.netty.ProtocolNegotiator createProtocolNegotiatorByType(io.grpc.netty.NegotiationType, io.netty.handler.ssl.SslContext, io.grpc.internal.ObjectPool<? extends java.util.concurrent.Executor>);
Code:
0: getstatic #83 // Field io/grpc/netty/NettyChannelBuilder$1.$SwitchMap$io$grpc$netty$NegotiationType:[I
3: aload_0
4: invokevirtual #84 // Method io/grpc/netty/NegotiationType.ordinal:()I
7: iaload
8: tableswitch { // 1 to 3
1: 36
2: 40
3: 44
default: 50
}
36: invokestatic #94 // Method io/grpc/netty/ProtocolNegotiators.plaintext:()Lio/grpc/netty/ProtocolNegotiator;
39: areturn
40: invokestatic #95 // Method io/grpc/netty/ProtocolNegotiators.plaintextUpgrade:()Lio/grpc/netty/ProtocolNegotiator;
43: areturn
44: aload_1
45: aload_2
46: invokestatic #96 // Method io/grpc/netty/ProtocolNegotiators.tls:(Lio/netty/handler/ssl/SslContext;Lio/grpc/internal/ObjectPool;)Lio/grpc/netty/ProtocolNegotiator;
49: areturn
50: new #97 // class java/lang/IllegalArgumentException
53: dup
54: new #86 // class java/lang/StringBuilder
57: dup
58: invokespecial #87 // Method java/lang/StringBuilder."<init>":()V
61: ldc #98 // String Unsupported negotiationType:
63: invokevirtual #90 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
66: aload_0
67: invokevirtual #88 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
70: invokevirtual #91 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
73: invokespecial #99 // Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V
76: athrow
protected java.lang.String checkAuthority(java.lang.String);
Code:
0: aload_0
1: getfield #93 // Field authorityChecker:Lio/grpc/netty/NettyChannelBuilder$OverrideAuthorityChecker;
4: ifnull 18
7: aload_0
8: getfield #93 // Field authorityChecker:Lio/grpc/netty/NettyChannelBuilder$OverrideAuthorityChecker;
11: aload_1
12: invokeinterface #100, 2 // InterfaceMethod io/grpc/netty/NettyChannelBuilder$OverrideAuthorityChecker.checkAuthority:(Ljava/lang/String;)Ljava/lang/String;
17: areturn
18: aload_0
19: aload_1
20: invokespecial #101 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.checkAuthority:(Ljava/lang/String;)Ljava/lang/String;
23: areturn
void protocolNegotiatorFactory(io.grpc.netty.NettyChannelBuilder$ProtocolNegotiatorFactory);
Code:
0: aload_0
1: aload_1
2: ldc #102 // String protocolNegotiatorFactory
4: invokestatic #35 // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
7: checkcast #103 // class io/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory
10: putfield #68 // Field protocolNegotiatorFactory:Lio/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory;
13: return
protected void setTracingEnabled(boolean);
Code:
0: aload_0
1: iload_1
2: invokespecial #104 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.setTracingEnabled:(Z)V
5: return
protected void setStatsEnabled(boolean);
Code:
0: aload_0
1: iload_1
2: invokespecial #105 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.setStatsEnabled:(Z)V
5: return
protected void setStatsRecordStartedRpcs(boolean);
Code:
0: aload_0
1: iload_1
2: invokespecial #106 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.setStatsRecordStartedRpcs:(Z)V
5: return
protected void setStatsRecordRealTimeMetrics(boolean);
Code:
0: aload_0
1: iload_1
2: invokespecial #107 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.setStatsRecordRealTimeMetrics:(Z)V
5: return
io.grpc.netty.NettyChannelBuilder setTransportTracerFactory(io.grpc.internal.TransportTracer$Factory);
Code:
0: aload_0
1: aload_1
2: putfield #79 // Field transportTracerFactory:Lio/grpc/internal/TransportTracer$Factory;
5: aload_0
6: areturn
public io.grpc.ManagedChannelBuilder keepAliveWithoutCalls(boolean);
Code:
0: aload_0
1: iload_1
2: invokevirtual #108 // Method keepAliveWithoutCalls:(Z)Lio/grpc/netty/NettyChannelBuilder;
5: areturn
public io.grpc.ManagedChannelBuilder keepAliveTimeout(long, java.util.concurrent.TimeUnit);
Code:
0: aload_0
1: lload_1
2: aload_3
3: invokevirtual #109 // Method keepAliveTimeout:(JLjava/util/concurrent/TimeUnit;)Lio/grpc/netty/NettyChannelBuilder;
6: areturn
public io.grpc.ManagedChannelBuilder keepAliveTime(long, java.util.concurrent.TimeUnit);
Code:
0: aload_0
1: lload_1
2: aload_3
3: invokevirtual #110 // Method keepAliveTime:(JLjava/util/concurrent/TimeUnit;)Lio/grpc/netty/NettyChannelBuilder;
6: areturn
public io.grpc.ManagedChannelBuilder maxInboundMetadataSize(int);
Code:
0: aload_0
1: iload_1
2: invokevirtual #55 // Method maxInboundMetadataSize:(I)Lio/grpc/netty/NettyChannelBuilder;
5: areturn
public io.grpc.ManagedChannelBuilder useTransportSecurity();
Code:
0: aload_0
1: invokevirtual #111 // Method useTransportSecurity:()Lio/grpc/netty/NettyChannelBuilder;
4: areturn
public io.grpc.ManagedChannelBuilder usePlaintext();
Code:
0: aload_0
1: invokevirtual #112 // Method usePlaintext:()Lio/grpc/netty/NettyChannelBuilder;
4: areturn
static {};
Code:
0: getstatic #113 // Field java/util/concurrent/TimeUnit.DAYS:Ljava/util/concurrent/TimeUnit;
3: ldc2_w #114 // long 1000l
6: invokevirtual #60 // Method java/util/concurrent/TimeUnit.toNanos:(J)J
9: putstatic #62 // Field AS_LARGE_AS_INFINITE:J
12: new #36 // class io/netty/channel/ReflectiveChannelFactory
15: dup
16: getstatic #116 // Field io/grpc/netty/Utils.DEFAULT_CLIENT_CHANNEL_TYPE:Ljava/lang/Class;
19: invokespecial #37 // Method io/netty/channel/ReflectiveChannelFactory."<init>":(Ljava/lang/Class;)V
22: putstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
25: getstatic #117 // Field io/grpc/netty/Utils.DEFAULT_WORKER_EVENT_LOOP_GROUP:Lio/grpc/internal/SharedResourceHolder$Resource;
28: invokestatic #118 // Method io/grpc/internal/SharedResourcePool.forResource:(Lio/grpc/internal/SharedResourceHolder$Resource;)Lio/grpc/internal/SharedResourcePool;
31: putstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
34: ldc #119 // String GRPC_EXPERIMENTAL_AUTOFLOWCONTROL
36: invokestatic #120 // Method java/lang/System.getenv:(Ljava/lang/String;)Ljava/lang/String;
39: astore_0
40: aload_0
41: ifnonnull 47
44: ldc #121 // String true
46: astore_0
47: aload_0
48: invokestatic #122 // Method java/lang/Boolean.parseBoolean:(Ljava/lang/String;)Z
51: putstatic #17 // Field DEFAULT_AUTO_FLOW_CONTROL:Z
54: return
}
NettyChannelBuilder.java 1.33.0
Compiled from "NettyChannelBuilder.java"
public final class io.grpc.netty.NettyChannelBuilder extends io.grpc.internal.AbstractManagedChannelImplBuilder<io.grpc.netty.NettyChannelBuilder> {
public static final int DEFAULT_FLOW_CONTROL_WINDOW;
public static io.grpc.netty.NettyChannelBuilder forAddress(java.net.SocketAddress);
Code:
0: new #2 // class io/grpc/netty/NettyChannelBuilder
3: dup
4: aload_0
5: invokespecial #3 // Method "<init>":(Ljava/net/SocketAddress;)V
8: areturn
public static io.grpc.netty.NettyChannelBuilder forAddress(java.lang.String, int);
Code:
0: new #2 // class io/grpc/netty/NettyChannelBuilder
3: dup
4: aload_0
5: iload_1
6: invokespecial #4 // Method "<init>":(Ljava/lang/String;I)V
9: areturn
public static io.grpc.netty.NettyChannelBuilder forTarget(java.lang.String);
Code:
0: new #2 // class io/grpc/netty/NettyChannelBuilder
3: dup
4: aload_0
5: invokespecial #5 // Method "<init>":(Ljava/lang/String;)V
8: areturn
io.grpc.netty.NettyChannelBuilder(java.lang.String, int);
Code:
0: aload_0
1: aload_1
2: iload_2
3: invokestatic #6 // Method io/grpc/internal/GrpcUtil.authorityFromHostAndPort:(Ljava/lang/String;I)Ljava/lang/String;
6: invokespecial #5 // Method "<init>":(Ljava/lang/String;)V
9: return
io.grpc.netty.NettyChannelBuilder(java.lang.String);
Code:
0: aload_0
1: aload_1
2: invokespecial #7 // Method io/grpc/internal/AbstractManagedChannelImplBuilder."<init>":(Ljava/lang/String;)V
5: aload_0
6: new #8 // class java/util/HashMap
9: dup
10: invokespecial #9 // Method java/util/HashMap."<init>":()V
13: putfield #10 // Field channelOptions:Ljava/util/Map;
16: aload_0
17: getstatic #11 // Field io/grpc/netty/NegotiationType.TLS:Lio/grpc/netty/NegotiationType;
20: putfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
23: aload_0
24: getstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
27: putfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
30: aload_0
31: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
34: putfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
37: aload_0
38: getstatic #17 // Field DEFAULT_AUTO_FLOW_CONTROL:Z
41: putfield #18 // Field autoFlowControl:Z
44: aload_0
45: ldc #19 // int 1048576
47: putfield #20 // Field flowControlWindow:I
50: aload_0
51: sipush 8192
54: putfield #21 // Field maxHeaderListSize:I
57: aload_0
58: ldc2_w #22 // long 9223372036854775807l
61: putfield #24 // Field keepAliveTimeNanos:J
64: aload_0
65: getstatic #25 // Field io/grpc/internal/GrpcUtil.DEFAULT_KEEPALIVE_TIMEOUT_NANOS:J
68: putfield #26 // Field keepAliveTimeoutNanos:J
71: aload_0
72: iconst_0
73: putfield #27 // Field useGetForSafeMethods:Z
76: return
io.grpc.netty.NettyChannelBuilder(java.net.SocketAddress);
Code:
0: aload_0
1: aload_1
2: aload_1
3: invokestatic #28 // Method getAuthorityFromAddress:(Ljava/net/SocketAddress;)Ljava/lang/String;
6: invokespecial #29 // Method io/grpc/internal/AbstractManagedChannelImplBuilder."<init>":(Ljava/net/SocketAddress;Ljava/lang/String;)V
9: aload_0
10: new #8 // class java/util/HashMap
13: dup
14: invokespecial #9 // Method java/util/HashMap."<init>":()V
17: putfield #10 // Field channelOptions:Ljava/util/Map;
20: aload_0
21: getstatic #11 // Field io/grpc/netty/NegotiationType.TLS:Lio/grpc/netty/NegotiationType;
24: putfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
27: aload_0
28: getstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
31: putfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
34: aload_0
35: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
38: putfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
41: aload_0
42: getstatic #17 // Field DEFAULT_AUTO_FLOW_CONTROL:Z
45: putfield #18 // Field autoFlowControl:Z
48: aload_0
49: ldc #19 // int 1048576
51: putfield #20 // Field flowControlWindow:I
54: aload_0
55: sipush 8192
58: putfield #21 // Field maxHeaderListSize:I
61: aload_0
62: ldc2_w #22 // long 9223372036854775807l
65: putfield #24 // Field keepAliveTimeNanos:J
68: aload_0
69: getstatic #25 // Field io/grpc/internal/GrpcUtil.DEFAULT_KEEPALIVE_TIMEOUT_NANOS:J
72: putfield #26 // Field keepAliveTimeoutNanos:J
75: aload_0
76: iconst_0
77: putfield #27 // Field useGetForSafeMethods:Z
80: return
public io.grpc.netty.NettyChannelBuilder channelType(java.lang.Class<? extends io.netty.channel.Channel>);
Code:
0: aload_1
1: ldc #34 // String channelType
3: invokestatic #35 // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
6: pop
7: aload_0
8: new #36 // class io/netty/channel/ReflectiveChannelFactory
11: dup
12: aload_1
13: invokespecial #37 // Method io/netty/channel/ReflectiveChannelFactory."<init>":(Ljava/lang/Class;)V
16: invokevirtual #38 // Method channelFactory:(Lio/netty/channel/ChannelFactory;)Lio/grpc/netty/NettyChannelBuilder;
19: areturn
public io.grpc.netty.NettyChannelBuilder channelFactory(io.netty.channel.ChannelFactory<? extends io.netty.channel.Channel>);
Code:
0: aload_0
1: aload_1
2: ldc #39 // String channelFactory
4: invokestatic #35 // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
7: checkcast #40 // class io/netty/channel/ChannelFactory
10: putfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
13: aload_0
14: areturn
public <T> io.grpc.netty.NettyChannelBuilder withOption(io.netty.channel.ChannelOption<T>, T);
Code:
0: aload_0
1: getfield #10 // Field channelOptions:Ljava/util/Map;
4: aload_1
5: aload_2
6: invokeinterface #41, 3 // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
11: pop
12: aload_0
13: areturn
public io.grpc.netty.NettyChannelBuilder negotiationType(io.grpc.netty.NegotiationType);
Code:
0: aload_0
1: aload_1
2: putfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
5: aload_0
6: areturn
public io.grpc.netty.NettyChannelBuilder eventLoopGroup(io.netty.channel.EventLoopGroup);
Code:
0: aload_1
1: ifnull 17
4: aload_0
5: new #42 // class io/grpc/internal/FixedObjectPool
8: dup
9: aload_1
10: invokespecial #43 // Method io/grpc/internal/FixedObjectPool."<init>":(Ljava/lang/Object;)V
13: invokevirtual #44 // Method eventLoopGroupPool:(Lio/grpc/internal/ObjectPool;)Lio/grpc/netty/NettyChannelBuilder;
16: areturn
17: aload_0
18: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
21: invokevirtual #44 // Method eventLoopGroupPool:(Lio/grpc/internal/ObjectPool;)Lio/grpc/netty/NettyChannelBuilder;
24: areturn
io.grpc.netty.NettyChannelBuilder eventLoopGroupPool(io.grpc.internal.ObjectPool<? extends io.netty.channel.EventLoopGroup>);
Code:
0: aload_0
1: aload_1
2: ldc #45 // String eventLoopGroupPool
4: invokestatic #35 // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
7: checkcast #46 // class io/grpc/internal/ObjectPool
10: putfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
13: aload_0
14: areturn
public io.grpc.netty.NettyChannelBuilder sslContext(io.netty.handler.ssl.SslContext);
Code:
0: aload_1
1: ifnull 20
4: aload_1
5: invokevirtual #47 // Method io/netty/handler/ssl/SslContext.isClient:()Z
8: ldc #48 // String Server SSL context can not be used for client channel
10: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
13: aload_1
14: invokevirtual #50 // Method io/netty/handler/ssl/SslContext.applicationProtocolNegotiator:()Lio/netty/handler/ssl/ApplicationProtocolNegotiator;
17: invokestatic #51 // Method io/grpc/netty/GrpcSslContexts.ensureAlpnAndH2Enabled:(Lio/netty/handler/ssl/ApplicationProtocolNegotiator;)V
20: aload_0
21: aload_1
22: putfield #52 // Field sslContext:Lio/netty/handler/ssl/SslContext;
25: aload_0
26: areturn
public io.grpc.netty.NettyChannelBuilder initialFlowControlWindow(int);
Code:
0: iload_1
1: ifle 8
4: iconst_1
5: goto 9
8: iconst_0
9: ldc #53 // String initialFlowControlWindow must be positive
11: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
14: aload_0
15: iload_1
16: putfield #20 // Field flowControlWindow:I
19: aload_0
20: iconst_1
21: putfield #18 // Field autoFlowControl:Z
24: aload_0
25: areturn
public io.grpc.netty.NettyChannelBuilder flowControlWindow(int);
Code:
0: iload_1
1: ifle 8
4: iconst_1
5: goto 9
8: iconst_0
9: ldc #54 // String flowControlWindow must be positive
11: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
14: aload_0
15: iload_1
16: putfield #20 // Field flowControlWindow:I
19: aload_0
20: iconst_0
21: putfield #18 // Field autoFlowControl:Z
24: aload_0
25: areturn
public io.grpc.netty.NettyChannelBuilder maxHeaderListSize(int);
Code:
0: aload_0
1: iload_1
2: invokevirtual #55 // Method maxInboundMetadataSize:(I)Lio/grpc/netty/NettyChannelBuilder;
5: areturn
public io.grpc.netty.NettyChannelBuilder maxInboundMetadataSize(int);
Code:
0: iload_1
1: ifle 8
4: iconst_1
5: goto 9
8: iconst_0
9: ldc #56 // String maxInboundMetadataSize must be > 0
11: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
14: aload_0
15: iload_1
16: putfield #21 // Field maxHeaderListSize:I
19: aload_0
20: areturn
public io.grpc.netty.NettyChannelBuilder usePlaintext();
Code:
0: aload_0
1: getstatic #57 // Field io/grpc/netty/NegotiationType.PLAINTEXT:Lio/grpc/netty/NegotiationType;
4: invokevirtual #58 // Method negotiationType:(Lio/grpc/netty/NegotiationType;)Lio/grpc/netty/NettyChannelBuilder;
7: pop
8: aload_0
9: areturn
public io.grpc.netty.NettyChannelBuilder useTransportSecurity();
Code:
0: aload_0
1: getstatic #11 // Field io/grpc/netty/NegotiationType.TLS:Lio/grpc/netty/NegotiationType;
4: invokevirtual #58 // Method negotiationType:(Lio/grpc/netty/NegotiationType;)Lio/grpc/netty/NettyChannelBuilder;
7: pop
8: aload_0
9: areturn
public io.grpc.netty.NettyChannelBuilder keepAliveTime(long, java.util.concurrent.TimeUnit);
Code:
0: lload_1
1: lconst_0
2: lcmp
3: ifle 10
6: iconst_1
7: goto 11
10: iconst_0
11: ldc #59 // String keepalive time must be positive
13: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
16: aload_0
17: aload_3
18: lload_1
19: invokevirtual #60 // Method java/util/concurrent/TimeUnit.toNanos:(J)J
22: putfield #24 // Field keepAliveTimeNanos:J
25: aload_0
26: aload_0
27: getfield #24 // Field keepAliveTimeNanos:J
30: invokestatic #61 // Method io/grpc/internal/KeepAliveManager.clampKeepAliveTimeInNanos:(J)J
33: putfield #24 // Field keepAliveTimeNanos:J
36: aload_0
37: getfield #24 // Field keepAliveTimeNanos:J
40: getstatic #62 // Field AS_LARGE_AS_INFINITE:J
43: lcmp
44: iflt 54
47: aload_0
48: ldc2_w #22 // long 9223372036854775807l
51: putfield #24 // Field keepAliveTimeNanos:J
54: aload_0
55: areturn
public io.grpc.netty.NettyChannelBuilder keepAliveTimeout(long, java.util.concurrent.TimeUnit);
Code:
0: lload_1
1: lconst_0
2: lcmp
3: ifle 10
6: iconst_1
7: goto 11
10: iconst_0
11: ldc #63 // String keepalive timeout must be positive
13: invokestatic #49 // Method com/google/common/base/Preconditions.checkArgument:(ZLjava/lang/Object;)V
16: aload_0
17: aload_3
18: lload_1
19: invokevirtual #60 // Method java/util/concurrent/TimeUnit.toNanos:(J)J
22: putfield #26 // Field keepAliveTimeoutNanos:J
25: aload_0
26: aload_0
27: getfield #26 // Field keepAliveTimeoutNanos:J
30: invokestatic #64 // Method io/grpc/internal/KeepAliveManager.clampKeepAliveTimeoutInNanos:(J)J
33: putfield #26 // Field keepAliveTimeoutNanos:J
36: aload_0
37: areturn
public io.grpc.netty.NettyChannelBuilder keepAliveWithoutCalls(boolean);
Code:
0: aload_0
1: iload_1
2: putfield #65 // Field keepAliveWithoutCalls:Z
5: aload_0
6: areturn
public io.grpc.netty.NettyChannelBuilder localSocketPicker(io.grpc.netty.NettyChannelBuilder$LocalSocketPicker);
Code:
0: aload_0
1: aload_1
2: putfield #66 // Field localSocketPicker:Lio/grpc/netty/NettyChannelBuilder$LocalSocketPicker;
5: aload_0
6: areturn
protected io.grpc.internal.ClientTransportFactory buildTransportFactory();
Code:
0: aload_0
1: invokevirtual #67 // Method assertEventLoopAndChannelType:()V
4: aload_0
5: getfield #68 // Field protocolNegotiatorFactory:Lio/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory;
8: ifnull 24
11: aload_0
12: getfield #68 // Field protocolNegotiatorFactory:Lio/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory;
15: invokeinterface #69, 1 // InterfaceMethod io/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory.buildProtocolNegotiator:()Lio/grpc/netty/ProtocolNegotiator;
20: astore_1
21: goto 76
24: aload_0
25: getfield #52 // Field sslContext:Lio/netty/handler/ssl/SslContext;
28: astore_2
29: aload_0
30: getfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
33: getstatic #11 // Field io/grpc/netty/NegotiationType.TLS:Lio/grpc/netty/NegotiationType;
36: if_acmpne 63
39: aload_2
40: ifnonnull 63
43: invokestatic #70 // Method io/grpc/netty/GrpcSslContexts.forClient:()Lio/netty/handler/ssl/SslContextBuilder;
46: invokevirtual #71 // Method io/netty/handler/ssl/SslContextBuilder.build:()Lio/netty/handler/ssl/SslContext;
49: astore_2
50: goto 63
53: astore_3
54: new #73 // class java/lang/RuntimeException
57: dup
58: aload_3
59: invokespecial #74 // Method java/lang/RuntimeException."<init>":(Ljava/lang/Throwable;)V
62: athrow
63: aload_0
64: getfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
67: aload_2
68: aload_0
69: invokevirtual #75 // Method getOffloadExecutorPool:()Lio/grpc/internal/ObjectPool;
72: invokestatic #76 // Method createProtocolNegotiatorByType:(Lio/grpc/netty/NegotiationType;Lio/netty/handler/ssl/SslContext;Lio/grpc/internal/ObjectPool;)Lio/grpc/netty/ProtocolNegotiator;
75: astore_1
76: new #77 // class io/grpc/netty/NettyChannelBuilder$NettyTransportFactory
79: dup
80: aload_1
81: aload_0
82: getfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
85: aload_0
86: getfield #10 // Field channelOptions:Ljava/util/Map;
89: aload_0
90: getfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
93: aload_0
94: getfield #18 // Field autoFlowControl:Z
97: aload_0
98: getfield #20 // Field flowControlWindow:I
101: aload_0
102: invokevirtual #78 // Method maxInboundMessageSize:()I
105: aload_0
106: getfield #21 // Field maxHeaderListSize:I
109: aload_0
110: getfield #24 // Field keepAliveTimeNanos:J
113: aload_0
114: getfield #26 // Field keepAliveTimeoutNanos:J
117: aload_0
118: getfield #65 // Field keepAliveWithoutCalls:Z
121: aload_0
122: getfield #79 // Field transportTracerFactory:Lio/grpc/internal/TransportTracer$Factory;
125: aload_0
126: getfield #66 // Field localSocketPicker:Lio/grpc/netty/NettyChannelBuilder$LocalSocketPicker;
129: iconst_0
130: invokespecial #80 // Method io/grpc/netty/NettyChannelBuilder$NettyTransportFactory."<init>":(Lio/grpc/netty/ProtocolNegotiator;Lio/netty/channel/ChannelFactory;Ljava/util/Map;Lio/grpc/internal/ObjectPool;ZIIIJJZLio/grpc/internal/TransportTracer$Factory;Lio/grpc/netty/NettyChannelBuilder$LocalSocketPicker;Z)V
133: areturn
Exception table:
from to target type
43 50 53 Class javax/net/ssl/SSLException
void assertEventLoopAndChannelType();
Code:
0: aload_0
1: getfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
4: getstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
7: if_acmpeq 24
10: aload_0
11: getfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
14: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
17: if_acmpeq 24
20: iconst_1
21: goto 25
24: iconst_0
25: istore_1
26: aload_0
27: getfield #14 // Field channelFactory:Lio/netty/channel/ChannelFactory;
30: getstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
33: if_acmpne 50
36: aload_0
37: getfield #16 // Field eventLoopGroupPool:Lio/grpc/internal/ObjectPool;
40: getstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
43: if_acmpne 50
46: iconst_1
47: goto 51
50: iconst_0
51: istore_2
52: iload_1
53: ifne 60
56: iload_2
57: ifeq 64
60: iconst_1
61: goto 65
64: iconst_0
65: ldc #81 // String Both EventLoopGroup and ChannelType should be provided or neither should be
67: invokestatic #82 // Method com/google/common/base/Preconditions.checkState:(ZLjava/lang/Object;)V
70: return
protected int getDefaultPort();
Code:
0: getstatic #83 // Field io/grpc/netty/NettyChannelBuilder$1.$SwitchMap$io$grpc$netty$NegotiationType:[I
3: aload_0
4: getfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
7: invokevirtual #84 // Method io/grpc/netty/NegotiationType.ordinal:()I
10: iaload
11: tableswitch { // 1 to 3
1: 36
2: 36
3: 39
default: 43
}
36: bipush 80
38: ireturn
39: sipush 443
42: ireturn
43: new #85 // class java/lang/AssertionError
46: dup
47: new #86 // class java/lang/StringBuilder
50: dup
51: invokespecial #87 // Method java/lang/StringBuilder."<init>":()V
54: aload_0
55: getfield #12 // Field negotiationType:Lio/grpc/netty/NegotiationType;
58: invokevirtual #88 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
61: ldc #89 // String not handled
63: invokevirtual #90 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
66: invokevirtual #91 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
69: invokespecial #92 // Method java/lang/AssertionError."<init>":(Ljava/lang/Object;)V
72: athrow
void overrideAuthorityChecker(io.grpc.netty.NettyChannelBuilder$OverrideAuthorityChecker);
Code:
0: aload_0
1: aload_1
2: putfield #93 // Field authorityChecker:Lio/grpc/netty/NettyChannelBuilder$OverrideAuthorityChecker;
5: return
static io.grpc.netty.ProtocolNegotiator createProtocolNegotiatorByType(io.grpc.netty.NegotiationType, io.netty.handler.ssl.SslContext, io.grpc.internal.ObjectPool<? extends java.util.concurrent.Executor>);
Code:
0: getstatic #83 // Field io/grpc/netty/NettyChannelBuilder$1.$SwitchMap$io$grpc$netty$NegotiationType:[I
3: aload_0
4: invokevirtual #84 // Method io/grpc/netty/NegotiationType.ordinal:()I
7: iaload
8: tableswitch { // 1 to 3
1: 36
2: 40
3: 44
default: 50
}
36: invokestatic #94 // Method io/grpc/netty/ProtocolNegotiators.plaintext:()Lio/grpc/netty/ProtocolNegotiator;
39: areturn
40: invokestatic #95 // Method io/grpc/netty/ProtocolNegotiators.plaintextUpgrade:()Lio/grpc/netty/ProtocolNegotiator;
43: areturn
44: aload_1
45: aload_2
46: invokestatic #96 // Method io/grpc/netty/ProtocolNegotiators.tls:(Lio/netty/handler/ssl/SslContext;Lio/grpc/internal/ObjectPool;)Lio/grpc/netty/ProtocolNegotiator;
49: areturn
50: new #97 // class java/lang/IllegalArgumentException
53: dup
54: new #86 // class java/lang/StringBuilder
57: dup
58: invokespecial #87 // Method java/lang/StringBuilder."<init>":()V
61: ldc #98 // String Unsupported negotiationType:
63: invokevirtual #90 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
66: aload_0
67: invokevirtual #88 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
70: invokevirtual #91 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
73: invokespecial #99 // Method java/lang/IllegalArgumentException."<init>":(Ljava/lang/String;)V
76: athrow
protected java.lang.String checkAuthority(java.lang.String);
Code:
0: aload_0
1: getfield #93 // Field authorityChecker:Lio/grpc/netty/NettyChannelBuilder$OverrideAuthorityChecker;
4: ifnull 18
7: aload_0
8: getfield #93 // Field authorityChecker:Lio/grpc/netty/NettyChannelBuilder$OverrideAuthorityChecker;
11: aload_1
12: invokeinterface #100, 2 // InterfaceMethod io/grpc/netty/NettyChannelBuilder$OverrideAuthorityChecker.checkAuthority:(Ljava/lang/String;)Ljava/lang/String;
17: areturn
18: aload_0
19: aload_1
20: invokespecial #101 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.checkAuthority:(Ljava/lang/String;)Ljava/lang/String;
23: areturn
void protocolNegotiatorFactory(io.grpc.netty.NettyChannelBuilder$ProtocolNegotiatorFactory);
Code:
0: aload_0
1: aload_1
2: ldc #102 // String protocolNegotiatorFactory
4: invokestatic #35 // Method com/google/common/base/Preconditions.checkNotNull:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
7: checkcast #103 // class io/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory
10: putfield #68 // Field protocolNegotiatorFactory:Lio/grpc/netty/NettyChannelBuilder$ProtocolNegotiatorFactory;
13: return
protected void setTracingEnabled(boolean);
Code:
0: aload_0
1: iload_1
2: invokespecial #104 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.setTracingEnabled:(Z)V
5: return
protected void setStatsEnabled(boolean);
Code:
0: aload_0
1: iload_1
2: invokespecial #105 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.setStatsEnabled:(Z)V
5: return
protected void setStatsRecordStartedRpcs(boolean);
Code:
0: aload_0
1: iload_1
2: invokespecial #106 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.setStatsRecordStartedRpcs:(Z)V
5: return
protected void setStatsRecordRealTimeMetrics(boolean);
Code:
0: aload_0
1: iload_1
2: invokespecial #107 // Method io/grpc/internal/AbstractManagedChannelImplBuilder.setStatsRecordRealTimeMetrics:(Z)V
5: return
io.grpc.netty.NettyChannelBuilder setTransportTracerFactory(io.grpc.internal.TransportTracer$Factory);
Code:
0: aload_0
1: aload_1
2: putfield #79 // Field transportTracerFactory:Lio/grpc/internal/TransportTracer$Factory;
5: aload_0
6: areturn
public io.grpc.ManagedChannelBuilder keepAliveWithoutCalls(boolean);
Code:
0: aload_0
1: iload_1
2: invokevirtual #108 // Method keepAliveWithoutCalls:(Z)Lio/grpc/netty/NettyChannelBuilder;
5: areturn
public io.grpc.ManagedChannelBuilder keepAliveTimeout(long, java.util.concurrent.TimeUnit);
Code:
0: aload_0
1: lload_1
2: aload_3
3: invokevirtual #109 // Method keepAliveTimeout:(JLjava/util/concurrent/TimeUnit;)Lio/grpc/netty/NettyChannelBuilder;
6: areturn
public io.grpc.ManagedChannelBuilder keepAliveTime(long, java.util.concurrent.TimeUnit);
Code:
0: aload_0
1: lload_1
2: aload_3
3: invokevirtual #110 // Method keepAliveTime:(JLjava/util/concurrent/TimeUnit;)Lio/grpc/netty/NettyChannelBuilder;
6: areturn
public io.grpc.ManagedChannelBuilder maxInboundMetadataSize(int);
Code:
0: aload_0
1: iload_1
2: invokevirtual #55 // Method maxInboundMetadataSize:(I)Lio/grpc/netty/NettyChannelBuilder;
5: areturn
public io.grpc.ManagedChannelBuilder useTransportSecurity();
Code:
0: aload_0
1: invokevirtual #111 // Method useTransportSecurity:()Lio/grpc/netty/NettyChannelBuilder;
4: areturn
public io.grpc.ManagedChannelBuilder usePlaintext();
Code:
0: aload_0
1: invokevirtual #112 // Method usePlaintext:()Lio/grpc/netty/NettyChannelBuilder;
4: areturn
static {};
Code:
0: getstatic #113 // Field java/util/concurrent/TimeUnit.DAYS:Ljava/util/concurrent/TimeUnit;
3: ldc2_w #114 // long 1000l
6: invokevirtual #60 // Method java/util/concurrent/TimeUnit.toNanos:(J)J
9: putstatic #62 // Field AS_LARGE_AS_INFINITE:J
12: new #36 // class io/netty/channel/ReflectiveChannelFactory
15: dup
16: getstatic #116 // Field io/grpc/netty/Utils.DEFAULT_CLIENT_CHANNEL_TYPE:Ljava/lang/Class;
19: invokespecial #37 // Method io/netty/channel/ReflectiveChannelFactory."<init>":(Ljava/lang/Class;)V
22: putstatic #13 // Field DEFAULT_CHANNEL_FACTORY:Lio/netty/channel/ChannelFactory;
25: getstatic #117 // Field io/grpc/netty/Utils.DEFAULT_WORKER_EVENT_LOOP_GROUP:Lio/grpc/internal/SharedResourceHolder$Resource;
28: invokestatic #118 // Method io/grpc/internal/SharedResourcePool.forResource:(Lio/grpc/internal/SharedResourceHolder$Resource;)Lio/grpc/internal/SharedResourcePool;
31: putstatic #15 // Field DEFAULT_EVENT_LOOP_GROUP_POOL:Lio/grpc/internal/ObjectPool;
34: ldc #119 // String GRPC_EXPERIMENTAL_AUTOFLOWCONTROL
36: invokestatic #120 // Method java/lang/System.getenv:(Ljava/lang/String;)Ljava/lang/String;
39: astore_0
40: aload_0
41: ifnonnull 47
44: ldc #121 // String true
46: astore_0
47: aload_0
48: invokestatic #122 // Method java/lang/Boolean.parseBoolean:(Ljava/lang/String;)Z
51: putstatic #17 // Field DEFAULT_AUTO_FLOW_CONTROL:Z
54: return
}