实例介绍
Java gRPC实现.基于HTTP/2的RPC源码下载
gRPC-Java是一个RPC库和框架,支持Java 8及更高版本。Android最低支持版本为21(棒棒糖),使用Java 8语言去糖化。
Supported Platforms
gRPC-Java支持Java 8及更高版本。Android最低支持版本为21(棒棒糖),需要使用Java 8语言去糖化。TLS在Android上的使用通常需要Play Services动态安全提供程序。
<dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <version>1.61.0</version> <scope>runtime</scope></dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>1.61.0</version></dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>1.61.0</version></dependency> <dependency> <!-- 9 必需 --> <groupId>org.apache.tomcat</groupId> <artifactId>annotations-api</artifactId> <version>6.0.53</version> <scope>provided</scope></dependency>或对于Gradle与非Android,请添加到您的依赖项:runtimeOnly 'io.grpc:grpc-netty-shaded:1.61.0' implementation 'io.grpc:grpc-protobuf:1.61.0' implementation 'io.grpc:grpc-stub:1.61.0' compileOnly 'org.apache.tomcat:annotations-api:6.0.53' // 9 必需 对于Android客户端,请使用grpc-okhttp而不是grpc-netty-shaded以及grpc-protobuf-lite而不是grpc-protobuf:implementation 'io.grpc:grpc-okhttp:1.61.0' implementation 'io.grpc:grpc-protobuf-lite:1.61.0' implementation 'io.grpc:grpc-stub:1.61.0' compileOnly 'org.apache.tomcat:annotations-api:6.0.53' // 9 必需对于Bazel,您可以使用Maven(使用上述GAVs),或使用@io_grpc_grpc_java//api等(请参见下文)。Sonatypes的快照存储库中提供了开发快照。Generated Code对于基于protobuf的代码生成,您可以将proto文件放在src/main/proto和src/test/proto目录中,并带有适当的插件。对于与Maven构建系统集成的基于protobuf的代码生成,可以使用protobuf-maven-plugin(Eclipse和NetBeans用户还应查看os-maven-plugin的IDE文档):
<build> <extensions> <extension> <groupId>kr.motd.maven</groupId> <artifactId>os-maven-plugin</artifactId> <version>1.7.1</version> </extension> </extensions> <plugins> <plugin> <groupId>org.xolstice.maven.plugins</groupId> <artifactId>protobuf-maven-plugin</artifactId> <version>0.6.1</version> <configuration> <protocArtifact>com.google.protobuf:protoc:3.25.1:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.61.0:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> </plugins></build>对于与Gradle构建系统集成的非Android基于protobuf的代码生成,可以使用protobuf-gradle-plugin:plugins { id 'com.google.protobuf' version '0.9.4' } protobuf { protoc { artifact = "com.google.protobuf:protoc:3.25.1" } plugins { grpc { artifact = 'io.grpc:protoc-gen-grpc-java:1.61.0' } } generateProtoTasks { all()*.plugins { grpc {} } }}预构建的protoc-gen-grpc-java二进制文件在Linux上使用glibc。如果您在Alpine Linux上编译,可能需要使用用musl代替的Alpine grpc-java软件包。对于与Gradle构建系统集成的Android基于protobuf的代码生成,也使用protobuf-gradle-plugin,但指定'lite'选项:plugins { id 'com.google.protobuf' version '0.9.4' } protobuf { protoc { artifact = "com.google.protobuf:protoc:3.25.1" } plugins { grpc { artifact = 'io.grpc:protoc-gen-grpc-java:1.61.0' } } generateProtoTasks { all().each { task -> task.builtins { java { option 'lite' } } task.plugins { grpc { option 'lite' } } }}对于Bazel,请使用proto_library和java_proto_library(无需load())并加载“@io_grpc_grpc_java//:java_grpc_library.bzl”中的“java_grpc_library”(从此项目),如下所示的示例BUILD.bazel。API稳定性带有@Internal注释的API供gRPC库内部使用,不应由gRPC用户使用。带有@ExperimentalApi注释的API可能会在未来版本中更改,其他项目可能依赖于这些API的库代码不应使用这些API。我们建议使用grpc-java-api-checker(一个Error Prone插件)来检查在任何依赖于gRPC的库代码中使用@ExperimentalApi和@Internal的情况。它也可以用于检查非库代码中的@Internal使用或意外的@ExperimentalApi消费。构建方式如果您正在对gRPC-Java进行更改,请参阅编译说明。高级组件在高层次上,库有三个不同的层:Stub、Channel和Transport。Stub Stub层是大多数开发人员暴露的内容,并为您正在适配的任何数据模型/IDL/接口提供类型安全绑定。gRPC附带了一个插件,用于协议缓冲区编译器,可以从.proto文件生成Stub接口,但易于并且鼓励将其绑定到其他数据模型/IDL。Channel Channel层是一个抽象层,用于处理传输处理,适用于拦截/装饰,并向应用程序提供比Stub层更多的行为。应用程序框架可以轻松使用此层来解决横切关注点,例如日志记录、监视、授权等。Transport Transport层负责在网络上传送字节。其接口足够抽象,可插入不同的实现。请注意,传输层API被视为gRPC的内部API,并具有比io.grpc包下的核心API更弱的API保证。gRPC附带了多个传输实现:基于Netty的HTTP/2传输是基于Netty的主要传输实现。在Android上,它没有官方支持。基于OkHttp的HTTP/2传输是基于Okio和分叉的OkHttp低层部分的轻量级传输。主要用于Android。进程内传输用于服务器与客户端在同一进程中时。它经常用于测试,同时也可以安全地用于生产环境。Binder传输用于单个设备上的Android跨进程通信。
【实例截图】
【核心代码】
文件清单
└── grpc-java-372a53561598d4dd57a55b789311f5e40d919895
├── all
│ └── build.gradle
├── alts
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── generated
│ │ └── main
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── alts
│ │ └── internal
│ │ └── HandshakerServiceGrpc.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── alts
│ │ │ ├── AltsChannelBuilder.java
│ │ │ ├── AltsChannelCredentials.java
│ │ │ ├── AltsContext.java
│ │ │ ├── AltsContextUtil.java
│ │ │ ├── AltsServerBuilder.java
│ │ │ ├── AltsServerCredentials.java
│ │ │ ├── AuthorizationUtil.java
│ │ │ ├── ComputeEngineChannelBuilder.java
│ │ │ ├── ComputeEngineChannelCredentials.java
│ │ │ ├── FailingCallCredentials.java
│ │ │ ├── FailingClientCall.java
│ │ │ ├── GoogleDefaultChannelBuilder.java
│ │ │ ├── GoogleDefaultChannelCredentials.java
│ │ │ ├── HandshakerServiceChannel.java
│ │ │ ├── internal
│ │ │ │ ├── AeadCrypter.java
│ │ │ │ ├── AesGcmAeadCrypter.java
│ │ │ │ ├── AesGcmHkdfAeadCrypter.java
│ │ │ │ ├── AltsChannelCrypter.java
│ │ │ │ ├── AltsClientOptions.java
│ │ │ │ ├── AltsFraming.java
│ │ │ │ ├── AltsHandshakerClient.java
│ │ │ │ ├── AltsHandshakerOptions.java
│ │ │ │ ├── AltsHandshakerStub.java
│ │ │ │ ├── AltsInternalContext.java
│ │ │ │ ├── AltsProtocolNegotiator.java
│ │ │ │ ├── AltsTsiFrameProtector.java
│ │ │ │ ├── AltsTsiHandshaker.java
│ │ │ │ ├── AsyncSemaphore.java
│ │ │ │ ├── BufUnwrapper.java
│ │ │ │ ├── ChannelCrypterNetty.java
│ │ │ │ ├── NettyTsiHandshaker.java
│ │ │ │ ├── ProtectedPromise.java
│ │ │ │ ├── RpcProtocolVersionsUtil.java
│ │ │ │ ├── TsiFrameHandler.java
│ │ │ │ ├── TsiFrameProtector.java
│ │ │ │ ├── TsiHandshakeHandler.java
│ │ │ │ ├── TsiHandshakerFactory.java
│ │ │ │ ├── TsiHandshaker.java
│ │ │ │ └── TsiPeer.java
│ │ │ └── InternalCheckGcpEnvironment.java
│ │ └── proto
│ │ └── grpc
│ │ └── gcp
│ │ ├── altscontext.proto
│ │ ├── handshaker.proto
│ │ └── transport_security_common.proto
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── alts
│ ├── AltsChannelBuilderTest.java
│ ├── AltsContextUtilTest.java
│ ├── AltsServerBuilderTest.java
│ ├── AuthorizationUtilTest.java
│ ├── ComputeEngineChannelBuilderTest.java
│ ├── GoogleDefaultChannelBuilderTest.java
│ ├── HandshakerServiceChannelTest.java
│ ├── internal
│ │ ├── AesGcmAeadCrypterTest.java
│ │ ├── AesGcmHkdfAeadCrypterTest.java
│ │ ├── AltsChannelCrypterTest.java
│ │ ├── AltsClientOptionsTest.java
│ │ ├── AltsFramingTest.java
│ │ ├── AltsHandshakerClientTest.java
│ │ ├── AltsHandshakerOptionsTest.java
│ │ ├── AltsHandshakerStubTest.java
│ │ ├── AltsInternalContextTest.java
│ │ ├── AltsProtocolNegotiatorTest.java
│ │ ├── AltsTsiFrameProtectorTest.java
│ │ ├── AltsTsiHandshakerTest.java
│ │ ├── AltsTsiTest.java
│ │ ├── BufUnwrapperTest.java
│ │ ├── ByteBufTestUtils.java
│ │ ├── ChannelCrypterNettyTestBase.java
│ │ ├── FakeChannelCrypter.java
│ │ ├── FakeTsiHandshaker.java
│ │ ├── FakeTsiTest.java
│ │ ├── GoogleDefaultProtocolNegotiatorTest.java
│ │ ├── MockAltsHandshakerResp.java
│ │ ├── NettyTsiHandshakerTest.java
│ │ ├── RpcProtocolVersionsUtilTest.java
│ │ ├── TsiFrameHandlerTest.java
│ │ └── TsiTest.java
│ └── InternalCheckGcpEnvironmentTest.java
├── android
│ ├── build.gradle
│ └── src
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── android
│ │ ├── AndroidChannelBuilder.java
│ │ ├── UdsChannelBuilder.java
│ │ ├── UdsSocketFactory.java
│ │ └── UdsSocket.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── android
│ └── AndroidChannelBuilderTest.java
├── android-interop-testing
│ ├── build.gradle
│ ├── proguard-rules.pro
│ ├── README.md
│ ├── src
│ │ ├── androidTest
│ │ │ ├── AndroidManifest.xml
│ │ │ └── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── android
│ │ │ └── integrationtest
│ │ │ ├── InteropInstrumentationTest.java
│ │ │ └── UdsChannelInteropTest.java
│ │ ├── generated
│ │ │ ├── debug
│ │ │ │ └── grpc
│ │ │ │ └── io
│ │ │ │ └── grpc
│ │ │ │ └── testing
│ │ │ │ └── integration
│ │ │ │ ├── LoadBalancerStatsServiceGrpc.java
│ │ │ │ ├── MetricsServiceGrpc.java
│ │ │ │ ├── ReconnectServiceGrpc.java
│ │ │ │ ├── TestServiceGrpc.java
│ │ │ │ ├── UnimplementedServiceGrpc.java
│ │ │ │ ├── XdsUpdateClientConfigureServiceGrpc.java
│ │ │ │ └── XdsUpdateHealthServiceGrpc.java
│ │ │ └── release
│ │ │ └── grpc
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── testing
│ │ │ └── integration
│ │ │ ├── LoadBalancerStatsServiceGrpc.java
│ │ │ ├── MetricsServiceGrpc.java
│ │ │ ├── ReconnectServiceGrpc.java
│ │ │ ├── TestServiceGrpc.java
│ │ │ ├── UnimplementedServiceGrpc.java
│ │ │ ├── XdsUpdateClientConfigureServiceGrpc.java
│ │ │ └── XdsUpdateHealthServiceGrpc.java
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── android
│ │ │ └── integrationtest
│ │ │ ├── TestCallable.java
│ │ │ ├── TesterActivity.java
│ │ │ ├── TesterOkHttpChannelBuilder.java
│ │ │ └── UdsTcpEndpointConnector.java
│ │ └── res
│ │ ├── color
│ │ │ └── focus.xml
│ │ ├── layout
│ │ │ └── activity_tester.xml
│ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ ├── raw
│ │ │ └── ca.pem
│ │ └── values
│ │ └── strings.xml
│ ├── start-emulator.sh
│ └── wait-for-emulator.sh
├── api
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── context
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ ├── Context.java
│ │ ├── Deadline.java
│ │ ├── PersistentHashArrayMappedTrie.java
│ │ └── ThreadLocalContextStorage.java
│ ├── jmh
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ ├── AttachDetachBenchmark.java
│ │ ├── AttributesBenchmark.java
│ │ ├── CallOptionsBenchmark.java
│ │ ├── DecompressorRegistryBenchmark.java
│ │ ├── ReadBenchmark.java
│ │ ├── StatusBenchmark.java
│ │ └── WriteBenchmark.java
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ ├── Attributes.java
│ │ ├── BinaryLog.java
│ │ ├── BindableService.java
│ │ ├── CallCredentials.java
│ │ ├── CallOptions.java
│ │ ├── ChannelCredentials.java
│ │ ├── Channel.java
│ │ ├── ChannelLogger.java
│ │ ├── ChoiceChannelCredentials.java
│ │ ├── ChoiceServerCredentials.java
│ │ ├── ClientCall.java
│ │ ├── ClientInterceptor.java
│ │ ├── ClientInterceptors.java
│ │ ├── ClientStreamTracer.java
│ │ ├── ClientTransportFilter.java
│ │ ├── Codec.java
│ │ ├── CompositeCallCredentials.java
│ │ ├── CompositeChannelCredentials.java
│ │ ├── Compressor.java
│ │ ├── CompressorRegistry.java
│ │ ├── ConnectivityStateInfo.java
│ │ ├── ConnectivityState.java
│ │ ├── Contexts.java
│ │ ├── Decompressor.java
│ │ ├── DecompressorRegistry.java
│ │ ├── Detachable.java
│ │ ├── Drainable.java
│ │ ├── EquivalentAddressGroup.java
│ │ ├── ExperimentalApi.java
│ │ ├── ForwardingChannelBuilder2.java
│ │ ├── ForwardingChannelBuilder.java
│ │ ├── ForwardingClientCall.java
│ │ ├── ForwardingClientCallListener.java
│ │ ├── ForwardingServerBuilder.java
│ │ ├── ForwardingServerCall.java
│ │ ├── ForwardingServerCallListener.java
│ │ ├── GlobalInterceptors.java
│ │ ├── Grpc.java
│ │ ├── HandlerRegistry.java
│ │ ├── HasByteBuffer.java
│ │ ├── HttpConnectProxiedSocketAddress.java
│ │ ├── InsecureChannelCredentials.java
│ │ ├── InsecureServerCredentials.java
│ │ ├── InternalCallOptions.java
│ │ ├── InternalChannelz.java
│ │ ├── InternalClientInterceptors.java
│ │ ├── InternalConfigSelector.java
│ │ ├── InternalDecompressorRegistry.java
│ │ ├── InternalGlobalInterceptors.java
│ │ ├── InternalInstrumented.java
│ │ ├── Internal.java
│ │ ├── InternalKnownTransport.java
│ │ ├── InternalLogId.java
│ │ ├── InternalManagedChannelProvider.java
│ │ ├── InternalMayRequireSpecificExecutor.java
│ │ ├── InternalMetadata.java
│ │ ├── InternalMethodDescriptor.java
│ │ ├── InternalServerInterceptors.java
│ │ ├── InternalServer.java
│ │ ├── InternalServerProvider.java
│ │ ├── InternalServiceProviders.java
│ │ ├── InternalStatus.java
│ │ ├── InternalWithLogId.java
│ │ ├── KnownLength.java
│ │ ├── LoadBalancer.java
│ │ ├── LoadBalancerProvider.java
│ │ ├── LoadBalancerRegistry.java
│ │ ├── ManagedChannelBuilder.java
│ │ ├── ManagedChannel.java
│ │ ├── ManagedChannelProvider.java
│ │ ├── ManagedChannelRegistry.java
│ │ ├── Metadata.java
│ │ ├── MethodDescriptor.java
│ │ ├── NameResolver.java
│ │ ├── NameResolverProvider.java
│ │ ├── NameResolverRegistry.java
│ │ ├── package-info.java
│ │ ├── PartialForwardingClientCall.java
│ │ ├── PartialForwardingClientCallListener.java
│ │ ├── PartialForwardingServerCall.java
│ │ ├── PartialForwardingServerCallListener.java
│ │ ├── ProxiedSocketAddress.java
│ │ ├── ProxyDetector.java
│ │ ├── SecurityLevel.java
│ │ ├── ServerBuilder.java
│ │ ├── ServerCallExecutorSupplier.java
│ │ ├── ServerCallHandler.java
│ │ ├── ServerCall.java
│ │ ├── ServerCredentials.java
│ │ ├── ServerInterceptor.java
│ │ ├── ServerInterceptors.java
│ │ ├── Server.java
│ │ ├── ServerMethodDefinition.java
│ │ ├── ServerProvider.java
│ │ ├── ServerRegistry.java
│ │ ├── ServerServiceDefinition.java
│ │ ├── ServerStreamTracer.java
│ │ ├── ServerTransportFilter.java
│ │ ├── ServiceDescriptor.java
│ │ ├── ServiceProviders.java
│ │ ├── StatusException.java
│ │ ├── Status.java
│ │ ├── StatusRuntimeException.java
│ │ ├── StreamTracer.java
│ │ ├── SynchronizationContext.java
│ │ ├── TlsChannelCredentials.java
│ │ └── TlsServerCredentials.java
│ ├── test
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ ├── AttributesTest.java
│ │ │ ├── CallOptionsTest.java
│ │ │ ├── ChoiceChannelCredentialsTest.java
│ │ │ ├── ClientInterceptorsTest.java
│ │ │ ├── CompositeCallCredentialsTest.java
│ │ │ ├── CompositeChannelCredentialsTest.java
│ │ │ ├── ConnectivityStateInfoTest.java
│ │ │ ├── ContextsTest.java
│ │ │ ├── ContextTest.java
│ │ │ ├── DeadlineTest.java
│ │ │ ├── DecompressorRegistryTest.java
│ │ │ ├── ForwardingChannelBuilder2Test.java
│ │ │ ├── ForwardingChannelBuilderTest.java
│ │ │ ├── ForwardingScheduledExecutorService.java
│ │ │ ├── ForwardingServerBuilderTest.java
│ │ │ ├── ForwardingServerCallListenerTest.java
│ │ │ ├── ForwardingServerCallTest.java
│ │ │ ├── GlobalInterceptorsTest.java
│ │ │ ├── InsecureChannelCredentialsTest.java
│ │ │ ├── InternalChannelzTest.java
│ │ │ ├── InternalConfigSelectorTest.java
│ │ │ ├── InternalLogIdTest.java
│ │ │ ├── LoadBalancerRegistryTest.java
│ │ │ ├── LoadBalancerTest.java
│ │ │ ├── ManagedChannelRegistryTest.java
│ │ │ ├── MetadataTest.java
│ │ │ ├── MethodDescriptorTest.java
│ │ │ ├── NameResolverRegistryTest.java
│ │ │ ├── NameResolverTest.java
│ │ │ ├── PersistentHashArrayMappedTrieTest.java
│ │ │ ├── ReplacingClassLoader.java
│ │ │ ├── ServerInterceptorsTest.java
│ │ │ ├── ServerRegistryTest.java
│ │ │ ├── ServerServiceDefinitionTest.java
│ │ │ ├── ServiceDescriptorTest.java
│ │ │ ├── ServiceProvidersTestAbstractProvider.java
│ │ │ ├── ServiceProvidersTest.java
│ │ │ ├── ServiceProvidersTestUtil.java
│ │ │ ├── StatusExceptionTest.java
│ │ │ ├── StatusRuntimeExceptionTest.java
│ │ │ ├── StatusTest.java
│ │ │ ├── SynchronizationContextTest.java
│ │ │ ├── ThreadLocalContextStorageTest.java
│ │ │ └── TlsChannelCredentialsTest.java
│ │ └── resources
│ │ └── io
│ │ └── grpc
│ │ ├── ServiceProvidersTestAbstractProvider-empty.txt
│ │ ├── ServiceProvidersTestAbstractProvider-failAtAvailableProvider.txt
│ │ ├── ServiceProvidersTestAbstractProvider-failAtInitProvider.txt
│ │ ├── ServiceProvidersTestAbstractProvider-failAtPriorityProvider.txt
│ │ ├── ServiceProvidersTestAbstractProvider-multipleProvider.txt
│ │ ├── ServiceProvidersTestAbstractProvider-unavailableProvider.txt
│ │ └── ServiceProvidersTestAbstractProvider-unknownClassProvider.txt
│ └── testFixtures
│ └── java
│ └── io
│ └── grpc
│ ├── ForwardingTestUtil.java
│ ├── IntegerMarshaller.java
│ ├── LoadBalancerMatchers.java
│ ├── ManagedChannelRegistryAccessor.java
│ ├── NoopClientCall.java
│ ├── NoopServerCall.java
│ ├── ServerRegistryAccessor.java
│ ├── StaticTestingClassLoader.java
│ ├── StringMarshaller.java
│ └── testing
│ └── DeadlineSubject.java
├── auth
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── auth
│ │ ├── ClientAuthInterceptor.java
│ │ ├── GoogleAuthLibraryCallCredentials.java
│ │ ├── MoreCallCredentials.java
│ │ └── package-info.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── auth
│ ├── ClientAuthInterceptorTest.java
│ └── GoogleAuthLibraryCallCredentialsTest.java
├── AUTHORS
├── authz
│ ├── build.gradle
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── authz
│ │ ├── AuthorizationPolicyTranslator.java
│ │ ├── AuthorizationServerInterceptor.java
│ │ └── FileWatcherAuthorizationServerInterceptor.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── authz
│ ├── AuthorizationEnd2EndTest.java
│ ├── AuthorizationPolicyTranslatorTest.java
│ ├── AuthorizationServerInterceptorTest.java
│ └── FileWatcherAuthorizationServerInterceptorTest.java
├── benchmarks
│ ├── build.gradle
│ ├── README.md
│ └── src
│ ├── generated
│ │ └── main
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── benchmarks
│ │ └── proto
│ │ ├── BenchmarkServiceGrpc.java
│ │ ├── ReportQpsScenarioServiceGrpc.java
│ │ └── WorkerServiceGrpc.java
│ ├── jmh
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── benchmarks
│ │ ├── CancellableInterceptor.java
│ │ ├── netty
│ │ │ ├── AbstractBenchmark.java
│ │ │ ├── StreamingPingPongsPerSecondBenchmark.java
│ │ │ └── UnaryCallQpsBenchmark.java
│ │ ├── ThreadlessExecutor.java
│ │ └── TransportBenchmark.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── benchmarks
│ │ │ ├── ByteBufInputStream.java
│ │ │ ├── ByteBufOutputMarshaller.java
│ │ │ ├── driver
│ │ │ │ ├── LoadClient.java
│ │ │ │ ├── LoadServer.java
│ │ │ │ └── LoadWorker.java
│ │ │ ├── qps
│ │ │ │ ├── AbstractConfigurationBuilder.java
│ │ │ │ ├── AsyncClient.java
│ │ │ │ ├── AsyncServer.java
│ │ │ │ ├── ClientConfiguration.java
│ │ │ │ ├── Configuration.java
│ │ │ │ ├── OpenLoopClient.java
│ │ │ │ └── ServerConfiguration.java
│ │ │ ├── SocketAddressValidator.java
│ │ │ ├── Transport.java
│ │ │ └── Utils.java
│ │ └── proto
│ │ └── grpc
│ │ └── testing
│ │ ├── control.proto
│ │ ├── messages.proto
│ │ ├── payloads.proto
│ │ ├── services.proto
│ │ └── stats.proto
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── benchmarks
│ └── driver
│ ├── LoadClientTest.java
│ └── LoadWorkerTest.java
├── binder
│ ├── build.gradle
│ └── src
│ ├── androidTest
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── binder
│ │ ├── BinderChannelSmokeTest.java
│ │ ├── BinderSecurityTest.java
│ │ ├── HostServices.java
│ │ └── internal
│ │ ├── BinderClientTransportTest.java
│ │ ├── BinderTransportTest.java
│ │ └── LeakSafeOneWayBinderTest.java
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── binder
│ │ ├── AndroidComponentAddress.java
│ │ ├── ApiConstants.java
│ │ ├── AsyncSecurityPolicy.java
│ │ ├── BinderChannelBuilder.java
│ │ ├── BinderChannelCredentials.java
│ │ ├── BinderInternal.java
│ │ ├── BinderServerBuilder.java
│ │ ├── BindServiceFlags.java
│ │ ├── IBinderReceiver.java
│ │ ├── InboundParcelablePolicy.java
│ │ ├── internal
│ │ │ ├── Bindable.java
│ │ │ ├── BinderServer.java
│ │ │ ├── BinderTransport.java
│ │ │ ├── BinderTransportSecurity.java
│ │ │ ├── BlockInputStream.java
│ │ │ ├── BlockPool.java
│ │ │ ├── BoundClientAddress.java
│ │ │ ├── FlowController.java
│ │ │ ├── Inbound.java
│ │ │ ├── LeakSafeOneWayBinder.java
│ │ │ ├── MetadataHelper.java
│ │ │ ├── MultiMessageClientStream.java
│ │ │ ├── MultiMessageServerStream.java
│ │ │ ├── OneWayBinderProxy.java
│ │ │ ├── Outbound.java
│ │ │ ├── ParcelableInputStream.java
│ │ │ ├── ParcelHolder.java
│ │ │ ├── PendingAuthListener.java
│ │ │ ├── PingTracker.java
│ │ │ ├── ServiceBinding.java
│ │ │ ├── SingleMessageClientStream.java
│ │ │ ├── SingleMessageServerStream.java
│ │ │ └── TransactionUtils.java
│ │ ├── LifecycleOnDestroyHelper.java
│ │ ├── ParcelableUtils.java
│ │ ├── PeerUid.java
│ │ ├── PeerUids.java
│ │ ├── SecurityPolicies.java
│ │ ├── SecurityPolicy.java
│ │ ├── ServerSecurityPolicy.java
│ │ └── UntrustedSecurityPolicies.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── binder
│ ├── AndroidComponentAddressTest.java
│ ├── BinderChannelBuilderTest.java
│ ├── BinderChannelCredentialsTest.java
│ ├── BinderServerBuilderTest.java
│ ├── BindServiceFlagsTest.java
│ ├── internal
│ │ ├── BinderServerTransportTest.java
│ │ ├── BlockInputStreamTest.java
│ │ ├── BoundClientAddressTest.java
│ │ ├── FlowControllerTest.java
│ │ ├── OneWayBinderProxyTest.java
│ │ ├── ParcelableInputStreamTest.java
│ │ ├── PendingAuthListenerTest.java
│ │ ├── PingTrackerTest.java
│ │ ├── ServiceBindingTest.java
│ │ └── TestParcelable.java
│ ├── LifecycleOnDestroyHelperTest.java
│ ├── PeerUidsTest.java
│ ├── PeerUidTest.java
│ ├── RobolectricBinderSecurityTest.java
│ ├── SecurityPoliciesTest.java
│ └── ServerSecurityPolicyTest.java
├── bom
│ └── build.gradle
├── BUILD.bazel
├── build.gradle
├── buildscripts
│ ├── build_artifacts_in_docker.sh
│ ├── build_docker.sh
│ ├── checkstyle.license
│ ├── checkstyle.xml
│ ├── grpc-java-artifacts
│ │ ├── Dockerfile
│ │ ├── Dockerfile.multiarch.base
│ │ └── Dockerfile.ubuntu2004.base
│ ├── kokoro
│ │ ├── android.cfg
│ │ ├── android-interop.cfg
│ │ ├── android-interop.sh
│ │ ├── android.sh
│ │ ├── bazel.cfg
│ │ ├── bazel.sh
│ │ ├── gae-interop.cfg
│ │ ├── gae-interop.sh
│ │ ├── kokoro.sh
│ │ ├── linux_aarch64.cfg
│ │ ├── linux_aarch64.sh
│ │ ├── linux_artifacts.cfg
│ │ ├── linux_artifacts.sh
│ │ ├── macos.cfg
│ │ ├── macos.sh
│ │ ├── psm-security.cfg
│ │ ├── psm-security.sh
│ │ ├── release_artifacts.cfg
│ │ ├── release_artifacts.sh
│ │ ├── unix.sh
│ │ ├── upload_artifacts.cfg
│ │ ├── upload_artifacts.sh
│ │ ├── windows32.bat
│ │ ├── windows64.bat
│ │ ├── windows.bat
│ │ ├── windows.cfg
│ │ ├── xds_k8s_lb.cfg
│ │ ├── xds_k8s_lb.sh
│ │ ├── xds_url_map.cfg
│ │ ├── xds_url_map.sh
│ │ ├── xds_v3.cfg
│ │ └── xds_v3.sh
│ ├── make_dependencies.bat
│ ├── make_dependencies.sh
│ ├── observability-test
│ │ ├── build_docker.sh
│ │ ├── Dockerfile
│ │ └── run.sh
│ ├── qemu_helpers
│ │ └── prepare_qemu.sh
│ ├── run_arm64_tests_in_docker.sh
│ ├── run_in_docker.sh
│ ├── set_github_status.py
│ ├── sign-local-repo.sh
│ ├── sonatype-upload.sh
│ ├── sync-protos.sh
│ ├── xds-k8s
│ │ ├── cloudbuild.yaml
│ │ ├── logging-debug.properties
│ │ ├── logging-json.properties
│ │ ├── logging.properties
│ │ ├── test-client.Dockerfile
│ │ └── test-server.Dockerfile
│ └── xds_logging.properties
├── buildSrc
│ ├── build.gradle
│ └── src
│ └── main
│ └── java
│ └── io
│ └── grpc
│ └── gradle
│ ├── CheckForUpdatesTask.java
│ ├── CheckPackageLeakageTask.java
│ └── RequireUpperBoundDepsMatchTask.java
├── census
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── census
│ │ ├── CensusStatsModule.java
│ │ ├── CensusTracingModule.java
│ │ ├── internal
│ │ │ ├── DeprecatedCensusConstants.java
│ │ │ └── ObservabilityCensusConstants.java
│ │ ├── InternalCensusStatsAccessor.java
│ │ └── InternalCensusTracingAccessor.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── census
│ ├── CensusModulesTest.java
│ └── CensusTracingAnnotationEventTest.java
├── codecov.yml
├── CODE-OF-CONDUCT.md
├── compiler
│ ├── BUILD.bazel
│ ├── build.gradle
│ ├── check-artifact.sh
│ ├── README.md
│ └── src
│ ├── java_plugin
│ │ └── cpp
│ │ ├── java_generator.cpp
│ │ ├── java_generator.h
│ │ └── java_plugin.cpp
│ ├── test
│ │ ├── golden
│ │ │ ├── TestDeprecatedService.java.txt
│ │ │ └── TestService.java.txt
│ │ └── proto
│ │ └── grpc
│ │ └── testing
│ │ └── compiler
│ │ └── test.proto
│ └── testLite
│ └── golden
│ ├── TestDeprecatedService.java.txt
│ └── TestService.java.txt
├── COMPILING.md
├── context
│ ├── BUILD.bazel
│ └── build.gradle
├── CONTRIBUTING.md
├── core
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── bazel-internal
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── io.grpc.LoadBalancerProvider
│ │ └── io.grpc.NameResolverProvider
│ ├── jmh
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── internal
│ │ ├── ChannelzBenchmark.java
│ │ ├── SerializingExecutorBenchmark.java
│ │ └── StatsTraceContextBenchmark.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── internal
│ │ │ ├── AbstractClientStream.java
│ │ │ ├── AbstractReadableBuffer.java
│ │ │ ├── AbstractServerStream.java
│ │ │ ├── AbstractStream.java
│ │ │ ├── AbstractSubchannel.java
│ │ │ ├── ApplicationThreadDeframer.java
│ │ │ ├── ApplicationThreadDeframerListener.java
│ │ │ ├── AtomicBackoff.java
│ │ │ ├── AtomicLongCounter.java
│ │ │ ├── AutoConfiguredLoadBalancerFactory.java
│ │ │ ├── BackoffPolicy.java
│ │ │ ├── BackoffPolicyRetryScheduler.java
│ │ │ ├── CallCredentialsApplyingTransportFactory.java
│ │ │ ├── CallTracer.java
│ │ │ ├── ChannelLoggerImpl.java
│ │ │ ├── ChannelTracer.java
│ │ │ ├── ClientCallImpl.java
│ │ │ ├── ClientStream.java
│ │ │ ├── ClientStreamListener.java
│ │ │ ├── ClientTransportFactory.java
│ │ │ ├── ClientTransport.java
│ │ │ ├── CompositeReadableBuffer.java
│ │ │ ├── ConnectionClientTransport.java
│ │ │ ├── ConnectivityStateManager.java
│ │ │ ├── ConscryptLoader.java
│ │ │ ├── ContextRunnable.java
│ │ │ ├── Deframer.java
│ │ │ ├── DelayedClientCall.java
│ │ │ ├── DelayedClientTransport.java
│ │ │ ├── DelayedStream.java
│ │ │ ├── DnsNameResolver.java
│ │ │ ├── DnsNameResolverProvider.java
│ │ │ ├── ExponentialBackoffPolicy.java
│ │ │ ├── FailingClientStream.java
│ │ │ ├── FailingClientTransport.java
│ │ │ ├── FixedObjectPool.java
│ │ │ ├── ForwardingClientStream.java
│ │ │ ├── ForwardingClientStreamListener.java
│ │ │ ├── ForwardingClientStreamTracer.java
│ │ │ ├── ForwardingConnectionClientTransport.java
│ │ │ ├── ForwardingDeframerListener.java
│ │ │ ├── ForwardingManagedChannel.java
│ │ │ ├── ForwardingNameResolver.java
│ │ │ ├── ForwardingReadableBuffer.java
│ │ │ ├── Framer.java
│ │ │ ├── GrpcAttributes.java
│ │ │ ├── GrpcUtil.java
│ │ │ ├── GzipInflatingBuffer.java
│ │ │ ├── HedgingPolicy.java
│ │ │ ├── Http2ClientStreamTransportState.java
│ │ │ ├── Http2Ping.java
│ │ │ ├── InsightBuilder.java
│ │ │ ├── InternalHandlerRegistry.java
│ │ │ ├── InternalServer.java
│ │ │ ├── InternalSubchannel.java
│ │ │ ├── InUseStateAggregator.java
│ │ │ ├── JndiResourceResolverFactory.java
│ │ │ ├── JsonParser.java
│ │ │ ├── JsonUtil.java
│ │ │ ├── KeepAliveEnforcer.java
│ │ │ ├── KeepAliveManager.java
│ │ │ ├── LogExceptionRunnable.java
│ │ │ ├── LongCounterFactory.java
│ │ │ ├── LongCounter.java
│ │ │ ├── ManagedChannelImplBuilder.java
│ │ │ ├── ManagedChannelImpl.java
│ │ │ ├── ManagedChannelOrphanWrapper.java
│ │ │ ├── ManagedChannelServiceConfig.java
│ │ │ ├── ManagedClientTransport.java
│ │ │ ├── MaxConnectionIdleManager.java
│ │ │ ├── MessageDeframer.java
│ │ │ ├── MessageFramer.java
│ │ │ ├── MetadataApplierImpl.java
│ │ │ ├── MigratingThreadDeframer.java
│ │ │ ├── NameResolverFactoryToProviderFacade.java
│ │ │ ├── NoopClientStream.java
│ │ │ ├── ObjectPool.java
│ │ │ ├── OobChannel.java
│ │ │ ├── package-info.java
│ │ │ ├── PickFirstLeafLoadBalancer.java
│ │ │ ├── PickFirstLoadBalancer.java
│ │ │ ├── PickFirstLoadBalancerProvider.java
│ │ │ ├── PickSubchannelArgsImpl.java
│ │ │ ├── ProxyDetectorImpl.java
│ │ │ ├── ReadableBuffer.java
│ │ │ ├── ReadableBuffers.java
│ │ │ ├── ReflectionLongAdderCounter.java
│ │ │ ├── Rescheduler.java
│ │ │ ├── RetriableStream.java
│ │ │ ├── RetryingNameResolver.java
│ │ │ ├── RetryPolicy.java
│ │ │ ├── RetryScheduler.java
│ │ │ ├── ScParser.java
│ │ │ ├── SerializeReentrantCallsDirectExecutor.java
│ │ │ ├── SerializingExecutor.java
│ │ │ ├── ServerCallImpl.java
│ │ │ ├── ServerCallInfoImpl.java
│ │ │ ├── ServerImplBuilder.java
│ │ │ ├── ServerImpl.java
│ │ │ ├── ServerListener.java
│ │ │ ├── ServerStream.java
│ │ │ ├── ServerStreamListener.java
│ │ │ ├── ServerTransport.java
│ │ │ ├── ServerTransportListener.java
│ │ │ ├── ServiceConfigState.java
│ │ │ ├── ServiceConfigUtil.java
│ │ │ ├── SharedResourceHolder.java
│ │ │ ├── SharedResourcePool.java
│ │ │ ├── SquelchLateMessagesAvailableDeframerListener.java
│ │ │ ├── StatsTraceContext.java
│ │ │ ├── Stream.java
│ │ │ ├── StreamListener.java
│ │ │ ├── SubchannelChannel.java
│ │ │ ├── ThreadOptimizedDeframer.java
│ │ │ ├── TimeProvider.java
│ │ │ ├── TransportFrameUtil.java
│ │ │ ├── TransportProvider.java
│ │ │ ├── TransportTracer.java
│ │ │ ├── WritableBufferAllocator.java
│ │ │ └── WritableBuffer.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── io.grpc.LoadBalancerProvider
│ │ └── io.grpc.NameResolverProvider
│ ├── test
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ ├── ClientStreamTracerTest.java
│ │ │ └── internal
│ │ │ ├── AbstractClientStreamTest.java
│ │ │ ├── AbstractReadableBufferTest.java
│ │ │ ├── AbstractServerStreamTest.java
│ │ │ ├── ApplicationThreadDeframerTest.java
│ │ │ ├── AtomicBackoffTest.java
│ │ │ ├── AutoConfiguredLoadBalancerFactoryTest.java
│ │ │ ├── BackoffPolicyRetrySchedulerTest.java
│ │ │ ├── ByteWritableBufferTest.java
│ │ │ ├── CallCredentialsApplyingTest.java
│ │ │ ├── ChannelLoggerImplTest.java
│ │ │ ├── ChannelTracerTest.java
│ │ │ ├── ClientCallImplTest.java
│ │ │ ├── ClientTransportFactoryTest.java
│ │ │ ├── CompositeReadableBufferTest.java
│ │ │ ├── ConfigSelectingClientCallTest.java
│ │ │ ├── ConnectivityStateManagerTest.java
│ │ │ ├── DelayedClientCallTest.java
│ │ │ ├── DelayedClientTransportTest.java
│ │ │ ├── DelayedStreamTest.java
│ │ │ ├── DnsNameResolverProviderTest.java
│ │ │ ├── DnsNameResolverTest.java
│ │ │ ├── ExponentialBackoffPolicyTest.java
│ │ │ ├── FailingClientStreamTest.java
│ │ │ ├── FailingClientTransportTest.java
│ │ │ ├── FakeCallCredentials.java
│ │ │ ├── FakeClockTest.java
│ │ │ ├── ForwardingClientStreamListenerTest.java
│ │ │ ├── ForwardingClientStreamTest.java
│ │ │ ├── ForwardingClientStreamTracerTest.java
│ │ │ ├── ForwardingManagedChannelTest.java
│ │ │ ├── ForwardingNameResolverTest.java
│ │ │ ├── ForwardingReadableBufferTest.java
│ │ │ ├── GrpcUtilTest.java
│ │ │ ├── GzipInflatingBufferTest.java
│ │ │ ├── HedgingPolicyTest.java
│ │ │ ├── Http2ClientStreamTransportStateTest.java
│ │ │ ├── InternalSubchannelTest.java
│ │ │ ├── InUseStateAggregatorTest.java
│ │ │ ├── JndiResourceResolverTest.java
│ │ │ ├── JsonParserTest.java
│ │ │ ├── JsonUtilTest.java
│ │ │ ├── KeepAliveEnforcerTest.java
│ │ │ ├── KeepAliveManagerTest.java
│ │ │ ├── ManagedChannelImplBuilderTest.java
│ │ │ ├── ManagedChannelImplGetNameResolverTest.java
│ │ │ ├── ManagedChannelImplIdlenessTest.java
│ │ │ ├── ManagedChannelImplTest.java
│ │ │ ├── ManagedChannelOrphanWrapperTest.java
│ │ │ ├── ManagedChannelServiceConfigTest.java
│ │ │ ├── ManagedClientTransportTest.java
│ │ │ ├── MaxConnectionIdleManagerTest.java
│ │ │ ├── MessageDeframerTest.java
│ │ │ ├── MessageFramerTest.java
│ │ │ ├── PickFirstLeafLoadBalancerTest.java
│ │ │ ├── PickFirstLoadBalancerProviderTest.java
│ │ │ ├── PickFirstLoadBalancerTest.java
│ │ │ ├── ProxyDetectorImplTest.java
│ │ │ ├── ReadableBuffersArrayTest.java
│ │ │ ├── ReadableBuffersByteBufferTest.java
│ │ │ ├── ReadableBuffersTest.java
│ │ │ ├── ReflectionLongAdderCounterTest.java
│ │ │ ├── ReschedulerTest.java
│ │ │ ├── RetriableStreamTest.java
│ │ │ ├── RetryingNameResolverTest.java
│ │ │ ├── RetryPolicyTest.java
│ │ │ ├── SerializeReentrantCallsDirectExecutorTest.java
│ │ │ ├── SerializingExecutorTest.java
│ │ │ ├── ServerCallImplTest.java
│ │ │ ├── ServerImplBuilderTest.java
│ │ │ ├── ServerImplTest.java
│ │ │ ├── ServiceConfigErrorHandlingTest.java
│ │ │ ├── ServiceConfigStateTest.java
│ │ │ ├── ServiceConfigUtilTest.java
│ │ │ ├── SharedResourceHolderTest.java
│ │ │ └── TransportFrameUtilTest.java
│ │ └── resources
│ │ └── io
│ │ └── grpc
│ │ └── internal
│ │ ├── test_hedging_service_config.json
│ │ ├── test_retry_service_config.json
│ │ └── uncompressable.bin
│ └── testFixtures
│ └── java
│ └── io
│ └── grpc
│ └── internal
│ ├── AbstractClientTransportFactoryTest.java
│ ├── AbstractTransportTest.java
│ ├── FakeClock.java
│ ├── NoopClientStreamListener.java
│ ├── ReadableBufferTestBase.java
│ ├── SingleMessageProducer.java
│ ├── TestUtils.java
│ ├── WritableBufferAllocatorTestBase.java
│ └── WritableBufferTestBase.java
├── cronet
│ ├── build.gradle
│ ├── proguard-rules.pro
│ ├── README.md
│ └── src
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── cronet
│ │ ├── CronetChannelBuilder.java
│ │ ├── CronetClientStream.java
│ │ ├── CronetClientTransport.java
│ │ ├── CronetWritableBufferAllocator.java
│ │ ├── CronetWritableBuffer.java
│ │ ├── InternalCronetCallOptions.java
│ │ └── InternalCronetChannelBuilder.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── cronet
│ ├── CronetChannelBuilderTest.java
│ ├── CronetClientStreamTest.java
│ ├── CronetClientTransportTest.java
│ └── CronetWritableBufferAllocatorTest.java
├── documentation
│ ├── android-binderchannel-status-codes.md
│ ├── android-channel-builder.md
│ └── server-reflection-tutorial.md
├── examples
│ ├── android
│ │ ├── clientcache
│ │ │ ├── app
│ │ │ │ ├── build.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src
│ │ │ │ ├── main
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── java
│ │ │ │ │ │ └── io
│ │ │ │ │ │ └── grpc
│ │ │ │ │ │ └── clientcacheexample
│ │ │ │ │ │ ├── ClientCacheExampleActivity.java
│ │ │ │ │ │ └── SafeMethodCachingInterceptor.java
│ │ │ │ │ ├── proto
│ │ │ │ │ │ └── helloworld.proto
│ │ │ │ │ └── res
│ │ │ │ │ ├── layout
│ │ │ │ │ │ └── activity_clientcacheexample.xml
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ └── values
│ │ │ │ │ └── strings.xml
│ │ │ │ └── test
│ │ │ │ └── java
│ │ │ │ └── io
│ │ │ │ └── grpc
│ │ │ │ └── clientcacheexample
│ │ │ │ └── SafeMethodCachingInterceptorTest.java
│ │ │ ├── build.gradle
│ │ │ └── settings.gradle
│ │ ├── helloworld
│ │ │ ├── app
│ │ │ │ ├── build.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java
│ │ │ │ │ └── io
│ │ │ │ │ └── grpc
│ │ │ │ │ └── helloworldexample
│ │ │ │ │ └── HelloworldActivity.java
│ │ │ │ ├── proto
│ │ │ │ │ └── helloworld.proto
│ │ │ │ └── res
│ │ │ │ ├── layout
│ │ │ │ │ └── activity_helloworld.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ └── values
│ │ │ │ └── strings.xml
│ │ │ ├── build.gradle
│ │ │ └── settings.gradle
│ │ ├── README.md
│ │ ├── routeguide
│ │ │ ├── app
│ │ │ │ ├── build.gradle
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src
│ │ │ │ └── main
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── java
│ │ │ │ │ └── io
│ │ │ │ │ └── grpc
│ │ │ │ │ └── routeguideexample
│ │ │ │ │ ├── RouteGuideActivity.java
│ │ │ │ │ └── RouteGuideUtil.java
│ │ │ │ ├── proto
│ │ │ │ │ └── route_guide.proto
│ │ │ │ └── res
│ │ │ │ ├── layout
│ │ │ │ │ └── activity_routeguide.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ └── values
│ │ │ │ ├── colors.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── build.gradle
│ │ │ └── settings.gradle
│ │ └── strictmode
│ │ ├── app
│ │ │ ├── build.gradle
│ │ │ ├── proguard-rules.pro
│ │ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java
│ │ │ │ └── io
│ │ │ │ └── grpc
│ │ │ │ └── strictmodehelloworldexample
│ │ │ │ └── StrictModeHelloworldActivity.java
│ │ │ ├── proto
│ │ │ │ └── helloworld.proto
│ │ │ └── res
│ │ │ ├── layout
│ │ │ │ └── activity_strictmodehelloworld.xml
│ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ └── values
│ │ │ └── strings.xml
│ │ ├── build.gradle
│ │ ├── demo.png
│ │ ├── README.md
│ │ └── settings.gradle
│ ├── BUILD.bazel
│ ├── build.gradle
│ ├── example-alts
│ │ ├── BUILD.bazel
│ │ ├── build.gradle
│ │ ├── example-alts
│ │ │ └── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── alts
│ │ │ ├── HelloWorldAltsClient.java
│ │ │ └── HelloWorldAltsServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
│ ├── example-debug
│ │ ├── build.gradle
│ │ ├── pom.xml
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── debug
│ │ │ ├── HelloWorldDebuggableClient.java
│ │ │ ├── HostnameDebuggableServer.java
│ │ │ └── HostnameGreeter.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
│ ├── example-gauth
│ │ ├── BUILD.bazel
│ │ ├── build.gradle
│ │ ├── pom.xml
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── examples
│ │ └── googleAuth
│ │ └── GoogleAuthClient.java
│ ├── example-gcp-observability
│ │ ├── build.gradle
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── gcpobservability
│ │ │ ├── GcpObservabilityClient.java
│ │ │ └── GcpObservabilityServer.java
│ │ ├── proto
│ │ │ └── helloworld
│ │ │ └── helloworld.proto
│ │ └── resources
│ │ └── io
│ │ └── grpc
│ │ └── examples
│ │ └── gcpobservability
│ │ ├── gcp_observability_client_config.json
│ │ └── gcp_observability_server_config.json
│ ├── example-hostname
│ │ ├── BUILD.bazel
│ │ ├── build.gradle
│ │ ├── pom.xml
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── io
│ │ │ │ └── grpc
│ │ │ │ └── examples
│ │ │ │ └── hostname
│ │ │ │ ├── HostnameGreeter.java
│ │ │ │ └── HostnameServer.java
│ │ │ └── proto
│ │ │ └── helloworld
│ │ │ └── helloworld.proto
│ │ └── test
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── examples
│ │ └── hostname
│ │ └── HostnameGreeterTest.java
│ ├── example-jwt-auth
│ │ ├── build.gradle
│ │ ├── pom.xml
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── io
│ │ │ │ └── grpc
│ │ │ │ └── examples
│ │ │ │ └── jwtauth
│ │ │ │ ├── AuthClient.java
│ │ │ │ ├── AuthServer.java
│ │ │ │ ├── Constant.java
│ │ │ │ ├── JwtCredential.java
│ │ │ │ └── JwtServerInterceptor.java
│ │ │ └── proto
│ │ │ └── helloworld.proto
│ │ └── test
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── examples
│ │ └── jwtauth
│ │ └── AuthClientTest.java
│ ├── example-oauth
│ │ ├── build.gradle
│ │ ├── gradle
│ │ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── pom.xml
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── io
│ │ │ │ └── grpc
│ │ │ │ └── examples
│ │ │ │ └── oauth
│ │ │ │ ├── AuthClient.java
│ │ │ │ ├── AuthServer.java
│ │ │ │ ├── Constant.java
│ │ │ │ ├── ExampleOAuth2Credentials.java
│ │ │ │ └── OAuth2ServerInterceptor.java
│ │ │ └── proto
│ │ │ └── helloworld.proto
│ │ └── test
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── examples
│ │ └── oauth
│ │ └── AuthClientTest.java
│ ├── example-orca
│ │ ├── build.gradle
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── orca
│ │ │ ├── CustomBackendMetricsClient.java
│ │ │ ├── CustomBackendMetricsLoadBalancerProvider.java
│ │ │ └── CustomBackendMetricsServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
│ ├── example-reflection
│ │ ├── build.gradle
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── reflection
│ │ │ └── ReflectionServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
│ ├── example-servlet
│ │ ├── build.gradle
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── servlet
│ │ │ └── examples
│ │ │ └── helloworld
│ │ │ └── HelloWorldServlet.java
│ │ ├── proto
│ │ │ └── helloworld
│ │ │ └── helloworld.proto
│ │ └── webapp
│ │ └── WEB-INF
│ │ ├── glassfish-web.xml
│ │ └── jboss-web.xml
│ ├── example-tls
│ │ ├── BUILD.bazel
│ │ ├── build.gradle
│ │ ├── pom.xml
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── helloworldtls
│ │ │ ├── HelloWorldClientTls.java
│ │ │ └── HelloWorldServerTls.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
│ ├── example-xds
│ │ ├── build.gradle
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── helloworldxds
│ │ │ ├── HostnameGreeter.java
│ │ │ ├── XdsHelloWorldClient.java
│ │ │ └── XdsHelloWorldServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
│ ├── gradle
│ │ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── logging.properties
│ ├── pom.xml
│ ├── README.md
│ ├── settings.gradle
│ ├── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── io
│ │ │ │ └── grpc
│ │ │ │ └── examples
│ │ │ │ ├── advanced
│ │ │ │ │ ├── HelloJsonClient.java
│ │ │ │ │ ├── HelloJsonServer.java
│ │ │ │ │ └── JsonMarshaller.java
│ │ │ │ ├── cancellation
│ │ │ │ │ ├── CancellationClient.java
│ │ │ │ │ └── CancellationServer.java
│ │ │ │ ├── customloadbalance
│ │ │ │ │ ├── CustomLoadBalanceClient.java
│ │ │ │ │ ├── ShufflingPickFirstLoadBalancer.java
│ │ │ │ │ └── ShufflingPickFirstLoadBalancerProvider.java
│ │ │ │ ├── deadline
│ │ │ │ │ ├── DeadlineClient.java
│ │ │ │ │ └── DeadlineServer.java
│ │ │ │ ├── errordetails
│ │ │ │ │ └── ErrorDetailsExample.java
│ │ │ │ ├── errorhandling
│ │ │ │ │ ├── DetailErrorSample.java
│ │ │ │ │ └── ErrorHandlingClient.java
│ │ │ │ ├── experimental
│ │ │ │ │ ├── CompressingHelloWorldClient.java
│ │ │ │ │ ├── CompressingHelloWorldServerAllMethods.java
│ │ │ │ │ └── CompressingHelloWorldServerPerMethod.java
│ │ │ │ ├── grpcproxy
│ │ │ │ │ └── GrpcProxy.java
│ │ │ │ ├── header
│ │ │ │ │ ├── CustomHeaderClient.java
│ │ │ │ │ ├── CustomHeaderServer.java
│ │ │ │ │ ├── HeaderClientInterceptor.java
│ │ │ │ │ └── HeaderServerInterceptor.java
│ │ │ │ ├── healthservice
│ │ │ │ │ ├── HealthServiceClient.java
│ │ │ │ │ └── HealthServiceServer.java
│ │ │ │ ├── hedging
│ │ │ │ │ ├── HedgingHelloWorldClient.java
│ │ │ │ │ └── HedgingHelloWorldServer.java
│ │ │ │ ├── helloworld
│ │ │ │ │ ├── HelloWorldClient.java
│ │ │ │ │ └── HelloWorldServer.java
│ │ │ │ ├── keepalive
│ │ │ │ │ ├── KeepAliveClient.java
│ │ │ │ │ └── KeepAliveServer.java
│ │ │ │ ├── loadbalance
│ │ │ │ │ ├── ExampleNameResolver.java
│ │ │ │ │ ├── ExampleNameResolverProvider.java
│ │ │ │ │ ├── LoadBalanceClient.java
│ │ │ │ │ └── LoadBalanceServer.java
│ │ │ │ ├── manualflowcontrol
│ │ │ │ │ ├── ManualFlowControlClient.java
│ │ │ │ │ ├── ManualFlowControlServer.java
│ │ │ │ │ └── README.md
│ │ │ │ ├── multiplex
│ │ │ │ │ ├── EchoService.java
│ │ │ │ │ ├── MultiplexingServer.java
│ │ │ │ │ └── SharingClient.java
│ │ │ │ ├── nameresolve
│ │ │ │ │ ├── ExampleNameResolver.java
│ │ │ │ │ ├── ExampleNameResolverProvider.java
│ │ │ │ │ ├── NameResolveClient.java
│ │ │ │ │ └── NameResolveServer.java
│ │ │ │ ├── preserialized
│ │ │ │ │ ├── ByteArrayMarshaller.java
│ │ │ │ │ ├── PreSerializedClient.java
│ │ │ │ │ └── PreSerializedServer.java
│ │ │ │ ├── retrying
│ │ │ │ │ ├── RetryingHelloWorldClient.java
│ │ │ │ │ └── RetryingHelloWorldServer.java
│ │ │ │ ├── routeguide
│ │ │ │ │ ├── RouteGuideClient.java
│ │ │ │ │ ├── RouteGuideServer.java
│ │ │ │ │ └── RouteGuideUtil.java
│ │ │ │ └── waitforready
│ │ │ │ └── WaitForReadyClient.java
│ │ │ ├── proto
│ │ │ │ ├── grpc
│ │ │ │ │ └── examples
│ │ │ │ │ └── echo
│ │ │ │ │ └── echo.proto
│ │ │ │ ├── hello_streaming.proto
│ │ │ │ ├── helloworld.proto
│ │ │ │ └── route_guide.proto
│ │ │ └── resources
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ ├── hedging
│ │ │ │ └── hedging_service_config.json
│ │ │ ├── retrying
│ │ │ │ └── retrying_service_config.json
│ │ │ └── routeguide
│ │ │ └── route_guide_db.json
│ │ └── test
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── examples
│ │ ├── header
│ │ │ ├── HeaderClientInterceptorTest.java
│ │ │ └── HeaderServerInterceptorTest.java
│ │ ├── helloworld
│ │ │ ├── HelloWorldClientTest.java
│ │ │ └── HelloWorldServerTest.java
│ │ └── routeguide
│ │ ├── RouteGuideClientTest.java
│ │ └── RouteGuideServerTest.java
│ └── WORKSPACE
├── gae-interop-testing
│ ├── gae-jdk8
│ │ ├── build.gradle
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── testing
│ │ │ └── integration
│ │ │ ├── LongLivedChannel.java
│ │ │ └── NettyClientInteropServlet.java
│ │ └── webapp
│ │ └── WEB-INF
│ │ ├── appengine-web.xml
│ │ └── web.xml
│ └── README.md
├── gcp-observability
│ ├── build.gradle
│ ├── interop
│ │ ├── build.gradle
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── gcp
│ │ └── observability
│ │ └── interop
│ │ └── TestServiceInterop.java
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── gcp
│ │ │ └── observability
│ │ │ ├── GcpObservability.java
│ │ │ ├── interceptors
│ │ │ │ ├── ConditionalClientInterceptor.java
│ │ │ │ ├── ConfigFilterHelper.java
│ │ │ │ ├── InetAddressUtil.java
│ │ │ │ ├── InternalLoggingChannelInterceptor.java
│ │ │ │ ├── InternalLoggingServerInterceptor.java
│ │ │ │ └── LogHelper.java
│ │ │ ├── logging
│ │ │ │ ├── GcpLogSink.java
│ │ │ │ ├── Sink.java
│ │ │ │ └── TraceLoggingHelper.java
│ │ │ ├── ObservabilityConfigImpl.java
│ │ │ └── ObservabilityConfig.java
│ │ └── proto
│ │ └── grpc
│ │ └── observabilitylog
│ │ └── v1
│ │ └── observabilitylog.proto
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── gcp
│ └── observability
│ ├── GcpObservabilityTest.java
│ ├── interceptors
│ │ ├── ConditionalClientInterceptorTest.java
│ │ ├── ConfigFilterHelperTest.java
│ │ ├── InternalLoggingChannelInterceptorTest.java
│ │ ├── InternalLoggingServerInterceptorTest.java
│ │ └── LogHelperTest.java
│ ├── logging
│ │ ├── GcpLogSinkTest.java
│ │ └── TraceLoggingHelperTest.java
│ ├── LoggingTest.java
│ ├── MetricsTest.java
│ ├── ObservabilityConfigImplTest.java
│ ├── ObservabilityTestHelper.java
│ └── TracesTest.java
├── googleapis
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── googleapis
│ │ │ ├── GoogleCloudToProdExperimentalNameResolverProvider.java
│ │ │ ├── GoogleCloudToProdNameResolver.java
│ │ │ └── GoogleCloudToProdNameResolverProvider.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── io.grpc.NameResolverProvider
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── googleapis
│ ├── GoogleCloudToProdNameResolverProviderTest.java
│ └── GoogleCloudToProdNameResolverTest.java
├── GOVERNANCE.md
├── gradle
│ ├── libs.versions.toml
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── grpclb
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── generated
│ │ └── main
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── lb
│ │ └── v1
│ │ └── LoadBalancerGrpc.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── grpclb
│ │ │ ├── BackendAddressGroup.java
│ │ │ ├── CachedSubchannelPool.java
│ │ │ ├── DropType.java
│ │ │ ├── GrpclbClientLoadRecorder.java
│ │ │ ├── GrpclbConfig.java
│ │ │ ├── GrpclbConstants.java
│ │ │ ├── GrpclbLoadBalancer.java
│ │ │ ├── GrpclbLoadBalancerProvider.java
│ │ │ ├── GrpclbNameResolver.java
│ │ │ ├── GrpclbState.java
│ │ │ ├── InternalGrpclbConstantsAccessor.java
│ │ │ ├── SecretGrpclbNameResolverProvider.java
│ │ │ ├── SubchannelPool.java
│ │ │ └── TokenAttachingTracerFactory.java
│ │ ├── proto
│ │ │ └── grpc
│ │ │ └── lb
│ │ │ └── v1
│ │ │ └── load_balancer.proto
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── io.grpc.LoadBalancerProvider
│ │ └── io.grpc.NameResolverProvider
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── grpclb
│ ├── CachedSubchannelPoolTest.java
│ ├── FakeSocketAddress.java
│ ├── GrpclbLoadBalancerProviderTest.java
│ ├── GrpclbLoadBalancerTest.java
│ ├── GrpclbNameResolverTest.java
│ ├── SecretGrpclbNameResolverProviderTest.java
│ └── TokenAttachingTracerFactoryTest.java
├── inprocess
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── inprocess
│ │ ├── AnonymousInProcessSocketAddress.java
│ │ ├── InProcessChannelBuilder.java
│ │ ├── InProcessServerBuilder.java
│ │ ├── InProcessServer.java
│ │ ├── InProcessSocketAddress.java
│ │ ├── InProcessTransport.java
│ │ ├── InternalInProcessChannelBuilder.java
│ │ ├── InternalInProcess.java
│ │ ├── InternalInProcessServerBuilder.java
│ │ └── package-info.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── inprocess
│ ├── AnonymousInProcessSocketAddressTest.java
│ ├── AnonymousInProcessTransportTest.java
│ ├── InProcessChannelBuilderTest.java
│ ├── InProcessClientTransportFactoryTest.java
│ ├── InProcessServerBuilderTest.java
│ ├── InProcessServerTest.java
│ ├── InProcessSocketAddressTest.java
│ ├── InProcessTransportTest.java
│ └── StandaloneInProcessTransportTest.java
├── interop-testing
│ ├── build.gradle
│ └── src
│ ├── generated
│ │ └── main
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── testing
│ │ └── integration
│ │ ├── LoadBalancerStatsServiceGrpc.java
│ │ ├── MetricsServiceGrpc.java
│ │ ├── ReconnectServiceGrpc.java
│ │ ├── TestServiceGrpc.java
│ │ ├── UnimplementedServiceGrpc.java
│ │ ├── XdsUpdateClientConfigureServiceGrpc.java
│ │ └── XdsUpdateHealthServiceGrpc.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── testing
│ │ │ └── integration
│ │ │ ├── AbstractInteropTest.java
│ │ │ ├── AltsHandshakerTestService.java
│ │ │ ├── CustomBackendMetricsLoadBalancerProvider.java
│ │ │ ├── GrpclbFallbackTestClient.java
│ │ │ ├── GrpclbLongLivedAffinityTestClient.java
│ │ │ ├── Http2Client.java
│ │ │ ├── Http2TestCases.java
│ │ │ ├── ReconnectTestClient.java
│ │ │ ├── RpcBehaviorLoadBalancerProvider.java
│ │ │ ├── StressTestClient.java
│ │ │ ├── TestCases.java
│ │ │ ├── TestServiceClient.java
│ │ │ ├── TestServiceImpl.java
│ │ │ ├── TestServiceServer.java
│ │ │ ├── Util.java
│ │ │ ├── XdsFederationTestClient.java
│ │ │ ├── XdsTestClient.java
│ │ │ └── XdsTestServer.java
│ │ ├── proto
│ │ │ └── grpc
│ │ │ └── testing
│ │ │ ├── empty.proto
│ │ │ ├── messages.proto
│ │ │ ├── metrics.proto
│ │ │ └── test.proto
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── io.grpc.LoadBalancerProvider
│ └── test
│ └── java
│ └── io
│ └── grpc
│ ├── ChannelAndServerBuilderTest.java
│ ├── stub
│ │ └── StubConfigTest.java
│ └── testing
│ └── integration
│ ├── AltsHandshakerTest.java
│ ├── AutoWindowSizingOnTest.java
│ ├── CascadingTest.java
│ ├── CompressionTest.java
│ ├── ConcurrencyTest.java
│ ├── Http2NettyLocalChannelTest.java
│ ├── Http2NettyTest.java
│ ├── Http2OkHttpTest.java
│ ├── Http2Test.java
│ ├── InProcessTest.java
│ ├── ManagedChannelBuilderSpiTest.java
│ ├── MoreInProcessTest.java
│ ├── NettyFlowControlTest.java
│ ├── ProxyTest.java
│ ├── RetryTest.java
│ ├── RpcBehaviorLoadBalancerProviderTest.java
│ ├── StressTestClientTest.java
│ ├── TestCasesTest.java
│ ├── TestServiceClientTest.java
│ ├── TrafficControlProxy.java
│ └── TransportCompressionTest.java
├── istio-interop-testing
│ ├── build.gradle
│ ├── src
│ │ ├── generated
│ │ │ └── main
│ │ │ └── grpc
│ │ │ └── io
│ │ │ └── istio
│ │ │ └── test
│ │ │ └── EchoTestServiceGrpc.java
│ │ ├── main
│ │ │ └── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── testing
│ │ │ └── istio
│ │ │ └── EchoTestServer.java
│ │ └── test
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── testing
│ │ └── istio
│ │ └── EchoTestServerTest.java
│ └── third_party
│ └── istio
│ ├── import.sh
│ ├── LICENSE
│ └── src
│ └── main
│ └── proto
│ └── test
│ └── echo
│ └── proto
│ └── echo.proto
├── java_grpc_library.bzl
├── LICENSE
├── MAINTAINERS.md
├── netty
│ ├── BUILD.bazel
│ ├── build.gradle
│ ├── shaded
│ │ ├── BUILD.bazel
│ │ ├── build.gradle
│ │ └── src
│ │ └── testShadow
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── netty
│ │ └── shaded
│ │ └── ShadingTest.java
│ └── src
│ ├── jmh
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── netty
│ │ ├── InboundHeadersBenchmark.java
│ │ ├── MethodDescriptorBenchmark.java
│ │ └── OutboundHeadersBenchmark.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── netty
│ │ │ ├── AbstractHttp2Headers.java
│ │ │ ├── AbstractNettyHandler.java
│ │ │ ├── CancelClientStreamCommand.java
│ │ │ ├── CancelServerStreamCommand.java
│ │ │ ├── ClientTransportLifecycleManager.java
│ │ │ ├── CreateStreamCommand.java
│ │ │ ├── FixedKeyManagerFactory.java
│ │ │ ├── FixedTrustManagerFactory.java
│ │ │ ├── ForcefulCloseCommand.java
│ │ │ ├── GracefulCloseCommand.java
│ │ │ ├── GracefulServerCloseCommand.java
│ │ │ ├── GrpcHttp2ConnectionHandler.java
│ │ │ ├── GrpcHttp2HeadersUtils.java
│ │ │ ├── GrpcHttp2OutboundHeaders.java
│ │ │ ├── GrpcSslContexts.java
│ │ │ ├── Http2ControlFrameLimitEncoder.java
│ │ │ ├── InsecureFromHttp1ChannelCredentials.java
│ │ │ ├── InternalGracefulServerCloseCommand.java
│ │ │ ├── InternalNettyChannelBuilder.java
│ │ │ ├── InternalNettyChannelCredentials.java
│ │ │ ├── InternalNettyServerBuilder.java
│ │ │ ├── InternalNettyServerCredentials.java
│ │ │ ├── InternalNettySocketSupport.java
│ │ │ ├── InternalProtocolNegotiationEvent.java
│ │ │ ├── InternalProtocolNegotiator.java
│ │ │ ├── InternalProtocolNegotiators.java
│ │ │ ├── InternalWriteBufferingAndExceptionHandlerUtils.java
│ │ │ ├── JettyTlsUtil.java
│ │ │ ├── NegotiationType.java
│ │ │ ├── NettyAdaptiveCumulator.java
│ │ │ ├── NettyChannelBuilder.java
│ │ │ ├── NettyChannelCredentials.java
│ │ │ ├── NettyChannelProvider.java
│ │ │ ├── NettyClientHandler.java
│ │ │ ├── NettyClientStream.java
│ │ │ ├── NettyClientTransport.java
│ │ │ ├── NettyReadableBuffer.java
│ │ │ ├── NettyServerBuilder.java
│ │ │ ├── NettyServerCredentials.java
│ │ │ ├── NettyServerHandler.java
│ │ │ ├── NettyServer.java
│ │ │ ├── NettyServerProvider.java
│ │ │ ├── NettyServerStream.java
│ │ │ ├── NettyServerTransport.java
│ │ │ ├── NettySocketSupport.java
│ │ │ ├── NettySslContextChannelCredentials.java
│ │ │ ├── NettySslContextServerCredentials.java
│ │ │ ├── NettyWritableBufferAllocator.java
│ │ │ ├── NettyWritableBuffer.java
│ │ │ ├── package-info.java
│ │ │ ├── ProtocolNegotiationEvent.java
│ │ │ ├── ProtocolNegotiator.java
│ │ │ ├── ProtocolNegotiators.java
│ │ │ ├── SendGrpcFrameCommand.java
│ │ │ ├── SendPingCommand.java
│ │ │ ├── SendResponseHeadersCommand.java
│ │ │ ├── StreamIdHolder.java
│ │ │ ├── UdsNameResolver.java
│ │ │ ├── UdsNameResolverProvider.java
│ │ │ ├── UdsNettyChannelProvider.java
│ │ │ ├── UnhelpfulSecurityProvider.java
│ │ │ ├── Utils.java
│ │ │ ├── WriteBufferingAndExceptionHandler.java
│ │ │ └── WriteQueue.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── io.grpc.ManagedChannelProvider
│ │ ├── io.grpc.NameResolverProvider
│ │ └── io.grpc.ServerProvider
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── netty
│ ├── AbstractHttp2HeadersTest.java
│ ├── AdvancedTlsTest.java
│ ├── GrpcHttp2HeadersUtilsTest.java
│ ├── GrpcHttp2InboundHeadersTest.java
│ ├── NettyAdaptiveCumulatorTest.java
│ ├── NettyChannelBuilderTest.java
│ ├── NettyChannelCredentialsTest.java
│ ├── NettyChannelProviderTest.java
│ ├── NettyClientHandlerTest.java
│ ├── NettyClientStreamTest.java
│ ├── NettyClientTransportFactoryTest.java
│ ├── NettyClientTransportTest.java
│ ├── NettyHandlerTestBase.java
│ ├── NettyReadableBufferTest.java
│ ├── NettyServerBuilderTest.java
│ ├── NettyServerHandlerTest.java
│ ├── NettyServerProviderTest.java
│ ├── NettyServerStreamTest.java
│ ├── NettyServerTest.java
│ ├── NettyServerTransportTest.java
│ ├── NettyStreamTestBase.java
│ ├── NettyTestUtil.java
│ ├── NettyTransportTest.java
│ ├── NettyWritableBufferAllocatorTest.java
│ ├── NettyWritableBufferTest.java
│ ├── ProtocolNegotiatorsTest.java
│ ├── TlsTest.java
│ ├── UdsNameResolverProviderTest.java
│ ├── UdsNameResolverTest.java
│ ├── UdsNettyChannelProviderTest.java
│ ├── UtilsTest.java
│ ├── WriteBufferingAndExceptionHandlerTest.java
│ └── WriteQueueTest.java
├── NOTICE.txt
├── okhttp
│ ├── BUILD.bazel
│ ├── build.gradle
│ ├── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── io
│ │ │ │ └── grpc
│ │ │ │ └── okhttp
│ │ │ │ ├── AsyncSink.java
│ │ │ │ ├── ExceptionHandlingFrameWriter.java
│ │ │ │ ├── ForwardingFrameWriter.java
│ │ │ │ ├── HandshakerSocketFactory.java
│ │ │ │ ├── Headers.java
│ │ │ │ ├── InternalOkHttpChannelBuilder.java
│ │ │ │ ├── InternalOkHttpServerBuilder.java
│ │ │ │ ├── NegotiationType.java
│ │ │ │ ├── OkHttpChannelBuilder.java
│ │ │ │ ├── OkHttpChannelProvider.java
│ │ │ │ ├── OkHttpClientStream.java
│ │ │ │ ├── OkHttpClientTransport.java
│ │ │ │ ├── OkHttpFrameLogger.java
│ │ │ │ ├── OkHttpProtocolNegotiator.java
│ │ │ │ ├── OkHttpReadableBuffer.java
│ │ │ │ ├── OkHttpServerBuilder.java
│ │ │ │ ├── OkHttpServer.java
│ │ │ │ ├── OkHttpServerProvider.java
│ │ │ │ ├── OkHttpServerStream.java
│ │ │ │ ├── OkHttpServerTransport.java
│ │ │ │ ├── OkHttpSettingsUtil.java
│ │ │ │ ├── OkHttpTlsUpgrader.java
│ │ │ │ ├── OkHttpWritableBufferAllocator.java
│ │ │ │ ├── OkHttpWritableBuffer.java
│ │ │ │ ├── OutboundFlowController.java
│ │ │ │ ├── package-info.java
│ │ │ │ ├── PlaintextHandshakerSocketFactory.java
│ │ │ │ ├── SslSocketFactoryChannelCredentials.java
│ │ │ │ ├── SslSocketFactoryServerCredentials.java
│ │ │ │ ├── TlsServerHandshakerSocketFactory.java
│ │ │ │ └── Utils.java
│ │ │ └── resources
│ │ │ └── META-INF
│ │ │ └── services
│ │ │ ├── io.grpc.ManagedChannelProvider
│ │ │ └── io.grpc.ServerProvider
│ │ └── test
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── okhttp
│ │ ├── AsyncSinkTest.java
│ │ ├── ExceptionHandlingFrameWriterTest.java
│ │ ├── HeadersTest.java
│ │ ├── OkHttpChannelBuilderTest.java
│ │ ├── OkHttpChannelProviderTest.java
│ │ ├── OkHttpClientStreamTest.java
│ │ ├── OkHttpClientTransportFactoryTest.java
│ │ ├── OkHttpClientTransportTest.java
│ │ ├── OkHttpProtocolNegotiatorTest.java
│ │ ├── OkHttpReadableBufferTest.java
│ │ ├── OkHttpServerProviderTest.java
│ │ ├── OkHttpServerTransportTest.java
│ │ ├── OkHttpTlsUpgraderTest.java
│ │ ├── OkHttpTransportTest.java
│ │ ├── OkHttpWritableBufferAllocatorTest.java
│ │ ├── OkHttpWritableBufferTest.java
│ │ ├── OptionalMethodTest.java
│ │ ├── SslSocketFactoryChannelCredentialsTest.java
│ │ ├── TlsTest.java
│ │ └── UtilsTest.java
│ └── third_party
│ └── okhttp
│ ├── LICENSE
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── okhttp
│ │ └── internal
│ │ ├── CipherSuite.java
│ │ ├── ConnectionSpec.java
│ │ ├── Credentials.java
│ │ ├── DistinguishedNameParser.java
│ │ ├── framed
│ │ │ ├── ErrorCode.java
│ │ │ ├── FrameReader.java
│ │ │ ├── FrameWriter.java
│ │ │ ├── Header.java
│ │ │ ├── HeadersMode.java
│ │ │ ├── Hpack.java
│ │ │ ├── Http2.java
│ │ │ ├── Huffman.java
│ │ │ ├── Settings.java
│ │ │ └── Variant.java
│ │ ├── Headers.java
│ │ ├── OkHostnameVerifier.java
│ │ ├── OptionalMethod.java
│ │ ├── Platform.java
│ │ ├── Protocol.java
│ │ ├── proxy
│ │ │ ├── HttpUrl.java
│ │ │ └── Request.java
│ │ ├── StatusLine.java
│ │ ├── TlsVersion.java
│ │ └── Util.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── okhttp
│ └── internal
│ └── framed
│ ├── HpackTest.java
│ └── Http2Test.java
├── opentelemetry
│ ├── build.gradle
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── opentelemetry
│ │ ├── internal
│ │ │ └── OpenTelemetryConstants.java
│ │ ├── OpenTelemetryMetricsModule.java
│ │ ├── OpenTelemetryMetricsResource.java
│ │ └── OpenTelemetryModule.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── opentelemetry
│ ├── OpenTelemetryMetricsModuleTest.java
│ └── OpenTelemetryModuleTest.java
├── protobuf
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── protobuf
│ │ ├── package-info.java
│ │ ├── ProtoFileDescriptorSupplier.java
│ │ ├── ProtoMethodDescriptorSupplier.java
│ │ ├── ProtoServiceDescriptorSupplier.java
│ │ ├── ProtoUtils.java
│ │ └── StatusProto.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── protobuf
│ ├── ProtoUtilsTest.java
│ └── StatusProtoTest.java
├── protobuf-lite
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── protobuf
│ │ └── lite
│ │ ├── package-info.java
│ │ ├── ProtoInputStream.java
│ │ └── ProtoLiteUtils.java
│ └── test
│ ├── java
│ │ └── io
│ │ └── grpc
│ │ └── protobuf
│ │ └── lite
│ │ └── ProtoLiteUtilsTest.java
│ └── proto
│ └── simple_recursive.proto
├── README.md
├── RELEASING.md
├── repositories.bzl
├── rls
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── generated
│ │ └── main
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── lookup
│ │ └── v1
│ │ └── RouteLookupServiceGrpc.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── rls
│ │ │ ├── AdaptiveThrottler.java
│ │ │ ├── CachingRlsLbClient.java
│ │ │ ├── ChildLbResolvedAddressFactory.java
│ │ │ ├── ChildLoadBalancerHelper.java
│ │ │ ├── LbPolicyConfiguration.java
│ │ │ ├── LinkedHashLruCache.java
│ │ │ ├── LruCache.java
│ │ │ ├── ResolvedAddressFactory.java
│ │ │ ├── RlsLoadBalancer.java
│ │ │ ├── RlsLoadBalancerProvider.java
│ │ │ ├── RlsProtoConverters.java
│ │ │ ├── RlsProtoData.java
│ │ │ ├── RlsRequestFactory.java
│ │ │ ├── SubchannelStateManagerImpl.java
│ │ │ ├── SubchannelStateManager.java
│ │ │ └── Throttler.java
│ │ ├── proto
│ │ │ └── grpc
│ │ │ └── lookup
│ │ │ └── v1
│ │ │ ├── rls_config.proto
│ │ │ └── rls.proto
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── io.grpc.LoadBalancerProvider
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── rls
│ ├── AdaptiveThrottlerTest.java
│ ├── CachingRlsLbClientTest.java
│ ├── ChildLbResolvedAddressFactoryTest.java
│ ├── ChildLoadBalancerHelperTest.java
│ ├── LbPolicyConfigurationTest.java
│ ├── LinkedHashLruCacheTest.java
│ ├── RlsLoadBalancerTest.java
│ ├── RlsProtoConvertersTest.java
│ ├── RlsRequestFactoryTest.java
│ └── SubchannelStateManagerImplTest.java
├── run-test-client.sh
├── run-test-server.sh
├── SECURITY.md
├── services
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── generated
│ │ ├── main
│ │ │ └── grpc
│ │ │ └── io
│ │ │ └── grpc
│ │ │ ├── channelz
│ │ │ │ └── v1
│ │ │ │ └── ChannelzGrpc.java
│ │ │ ├── health
│ │ │ │ └── v1
│ │ │ │ └── HealthGrpc.java
│ │ │ └── reflection
│ │ │ └── v1alpha
│ │ │ └── ServerReflectionGrpc.java
│ │ └── test
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── reflection
│ │ └── testing
│ │ ├── AnotherDynamicServiceGrpc.java
│ │ ├── AnotherReflectableServiceGrpc.java
│ │ ├── DynamicServiceGrpc.java
│ │ └── ReflectableServiceGrpc.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ ├── protobuf
│ │ │ │ └── services
│ │ │ │ ├── BinaryLogProviderImpl.java
│ │ │ │ ├── BinaryLogProvider.java
│ │ │ │ ├── BinaryLogSink.java
│ │ │ │ ├── BinaryLogs.java
│ │ │ │ ├── BinlogHelper.java
│ │ │ │ ├── ChannelzProtoUtil.java
│ │ │ │ ├── ChannelzService.java
│ │ │ │ ├── HealthCheckingLoadBalancerFactory.java
│ │ │ │ ├── HealthCheckingLoadBalancerUtil.java
│ │ │ │ ├── HealthServiceImpl.java
│ │ │ │ ├── HealthStatusManager.java
│ │ │ │ ├── InetAddressUtil.java
│ │ │ │ ├── internal
│ │ │ │ │ └── HealthCheckingRoundRobinLoadBalancerProvider.java
│ │ │ │ ├── package-info.java
│ │ │ │ ├── ProtoReflectionService.java
│ │ │ │ └── TempFileSink.java
│ │ │ └── services
│ │ │ ├── AdminInterface.java
│ │ │ ├── CallMetricRecorder.java
│ │ │ ├── ChannelzService.java
│ │ │ ├── HealthStatusManager.java
│ │ │ ├── InternalCallMetricRecorder.java
│ │ │ ├── InternalMetricRecorder.java
│ │ │ ├── MetricRecorderHelper.java
│ │ │ ├── MetricRecorder.java
│ │ │ ├── MetricReport.java
│ │ │ └── package-info.java
│ │ ├── proto
│ │ │ └── grpc
│ │ │ ├── binlog
│ │ │ │ └── v1
│ │ │ │ └── binarylog.proto
│ │ │ ├── channelz
│ │ │ │ └── v1
│ │ │ │ └── channelz.proto
│ │ │ ├── health
│ │ │ │ └── v1
│ │ │ │ └── health.proto
│ │ │ └── reflection
│ │ │ └── v1alpha
│ │ │ └── reflection.proto
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── io.grpc.LoadBalancerProvider
│ └── test
│ ├── java
│ │ └── io
│ │ └── grpc
│ │ ├── protobuf
│ │ │ └── services
│ │ │ ├── BinaryLogProviderImplTest.java
│ │ │ ├── BinaryLogProviderTest.java
│ │ │ ├── BinlogHelperTest.java
│ │ │ ├── ChannelzProtoUtilTest.java
│ │ │ ├── ChannelzServiceTest.java
│ │ │ ├── ChannelzTestHelper.java
│ │ │ ├── HealthCheckingLoadBalancerFactoryTest.java
│ │ │ ├── HealthStatusManagerTest.java
│ │ │ ├── internal
│ │ │ │ └── HealthCheckingRoundRobinLoadBalancerProviderTest.java
│ │ │ ├── ProtoReflectionServiceTest.java
│ │ │ └── TempFileSinkTest.java
│ │ └── services
│ │ ├── AdminInterfaceChannelzTest.java
│ │ └── CallMetricRecorderTest.java
│ └── proto
│ └── io
│ └── grpc
│ └── reflection
│ └── testing
│ ├── dynamic_reflection_test_depth_two.proto
│ ├── dynamic_reflection_test.proto
│ ├── reflection_test_depth_three.proto
│ ├── reflection_test_depth_two_alternate.proto
│ ├── reflection_test_depth_two.proto
│ └── reflection_test.proto
├── servlet
│ ├── build.gradle
│ ├── jakarta
│ │ └── build.gradle
│ └── src
│ ├── jettyTest
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── servlet
│ │ ├── GrpcServletSmokeTest.java
│ │ ├── JettyInteropTest.java
│ │ └── JettyTransportTest.java
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── servlet
│ │ ├── AsyncServletOutputStreamWriter.java
│ │ ├── GrpcServlet.java
│ │ ├── package-info.java
│ │ ├── ServletAdapter.java
│ │ ├── ServletServerBuilder.java
│ │ └── ServletServerStream.java
│ ├── test
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── servlet
│ │ └── ServletServerBuilderTest.java
│ ├── threadingTest
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── servlet
│ │ └── AsyncServletOutputStreamWriterConcurrencyTest.java
│ ├── tomcatTest
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── servlet
│ │ ├── TomcatInteropTest.java
│ │ └── TomcatTransportTest.java
│ └── undertowTest
│ └── java
│ └── io
│ └── grpc
│ └── servlet
│ ├── UndertowInteropTest.java
│ └── UndertowTransportTest.java
├── settings.gradle
├── stub
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── stub
│ │ ├── AbstractAsyncStub.java
│ │ ├── AbstractBlockingStub.java
│ │ ├── AbstractFutureStub.java
│ │ ├── AbstractStub.java
│ │ ├── annotations
│ │ │ ├── GrpcGenerated.java
│ │ │ └── RpcMethod.java
│ │ ├── CallStreamObserver.java
│ │ ├── ClientCalls.java
│ │ ├── ClientCallStreamObserver.java
│ │ ├── ClientResponseObserver.java
│ │ ├── InternalClientCalls.java
│ │ ├── MetadataUtils.java
│ │ ├── package-info.java
│ │ ├── ServerCalls.java
│ │ ├── ServerCallStreamObserver.java
│ │ ├── StreamObserver.java
│ │ └── StreamObservers.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── stub
│ ├── AbstractAsyncStubTest.java
│ ├── AbstractBlockingStubTest.java
│ ├── AbstractFutureStubTest.java
│ ├── AbstractStubTest.java
│ ├── BaseAbstractStubTest.java
│ ├── ClientCallsTest.java
│ └── ServerCallsTest.java
├── testing
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ ├── internal
│ │ │ │ └── testing
│ │ │ │ ├── FakeNameResolverProvider.java
│ │ │ │ ├── StatsTestUtils.java
│ │ │ │ ├── StreamRecorder.java
│ │ │ │ ├── TestClientStreamTracer.java
│ │ │ │ ├── TestServerStreamTracer.java
│ │ │ │ ├── TestStreamTracer.java
│ │ │ │ └── TestUtils.java
│ │ │ └── testing
│ │ │ ├── GrpcCleanupRule.java
│ │ │ ├── GrpcServerRule.java
│ │ │ ├── package-info.java
│ │ │ ├── StreamRecorder.java
│ │ │ ├── TestMethodDescriptors.java
│ │ │ ├── TestUtils.java
│ │ │ └── TlsTesting.java
│ │ └── resources
│ │ └── certs
│ │ ├── badclient.key
│ │ ├── badclient.pem
│ │ ├── badserver.key
│ │ ├── badserver.pem
│ │ ├── ca.key
│ │ ├── ca-openssl.cnf
│ │ ├── ca.pem
│ │ ├── client.key
│ │ ├── client.pem
│ │ ├── ecdsa.key
│ │ ├── index.txt
│ │ ├── openssl.cnf
│ │ ├── README
│ │ ├── server0.key
│ │ ├── server0.pem
│ │ ├── server1.key
│ │ ├── server1-openssl.cnf
│ │ └── server1.pem
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── testing
│ ├── GrpcCleanupRuleTest.java
│ ├── GrpcServerRuleTest.java
│ └── TlsTestingTest.java
├── testing-proto
│ ├── build.gradle
│ └── src
│ ├── generated
│ │ └── main
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── testing
│ │ └── protobuf
│ │ └── SimpleServiceGrpc.java
│ ├── main
│ │ └── proto
│ │ └── io
│ │ └── grpc
│ │ └── testing
│ │ └── protobuf
│ │ └── simpleservice.proto
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── testing
│ └── protobuf
│ └── SimpleServiceTest.java
├── util
│ ├── BUILD.bazel
│ ├── build.gradle
│ └── src
│ ├── jmh
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── util
│ │ └── HandlerRegistryBenchmark.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── util
│ │ │ ├── AdvancedTlsX509KeyManager.java
│ │ │ ├── AdvancedTlsX509TrustManager.java
│ │ │ ├── CertificateUtils.java
│ │ │ ├── ForwardingClientStreamTracer.java
│ │ │ ├── ForwardingLoadBalancerHelper.java
│ │ │ ├── ForwardingLoadBalancer.java
│ │ │ ├── ForwardingSubchannel.java
│ │ │ ├── GracefulSwitchLoadBalancer.java
│ │ │ ├── HealthProducerHelper.java
│ │ │ ├── MultiChildLoadBalancer.java
│ │ │ ├── MutableHandlerRegistry.java
│ │ │ ├── OutlierDetectionLoadBalancer.java
│ │ │ ├── OutlierDetectionLoadBalancerProvider.java
│ │ │ ├── package-info.java
│ │ │ ├── RoundRobinLoadBalancer.java
│ │ │ ├── SecretRoundRobinLoadBalancerProvider.java
│ │ │ └── TransmitStatusRuntimeExceptionInterceptor.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── io.grpc.LoadBalancerProvider
│ ├── test
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── util
│ │ ├── CertificateUtilsTest.java
│ │ ├── ForwardingClientStreamTracerTest.java
│ │ ├── ForwardingLoadBalancerHelperTest.java
│ │ ├── ForwardingLoadBalancerTest.java
│ │ ├── ForwardingSubchannelTest.java
│ │ ├── GracefulSwitchLoadBalancerTest.java
│ │ ├── HealthProducerHelperTest.java
│ │ ├── MultiChildLoadBalancerTest.java
│ │ ├── MutableHandlerRegistryTest.java
│ │ ├── OutlierDetectionLoadBalancerProviderTest.java
│ │ ├── OutlierDetectionLoadBalancerTest.java
│ │ ├── RoundRobinLoadBalancerTest.java
│ │ └── UtilServerInterceptorsTest.java
│ └── testFixtures
│ └── java
│ └── io
│ └── grpc
│ └── util
│ └── AbstractTestHelper.java
├── WORKSPACE
└── xds
├── BUILD.bazel
├── build.gradle
├── src
│ ├── generated
│ │ └── thirdparty
│ │ └── grpc
│ │ ├── com
│ │ │ └── github
│ │ │ └── xds
│ │ │ └── service
│ │ │ └── orca
│ │ │ └── v3
│ │ │ └── OpenRcaServiceGrpc.java
│ │ └── io
│ │ └── envoyproxy
│ │ └── envoy
│ │ ├── api
│ │ │ └── v2
│ │ │ ├── ClusterDiscoveryServiceGrpc.java
│ │ │ ├── EndpointDiscoveryServiceGrpc.java
│ │ │ ├── ListenerDiscoveryServiceGrpc.java
│ │ │ ├── RouteDiscoveryServiceGrpc.java
│ │ │ ├── ScopedRoutesDiscoveryServiceGrpc.java
│ │ │ └── VirtualHostDiscoveryServiceGrpc.java
│ │ └── service
│ │ ├── discovery
│ │ │ ├── v2
│ │ │ │ ├── AggregatedDiscoveryServiceGrpc.java
│ │ │ │ └── SecretDiscoveryServiceGrpc.java
│ │ │ └── v3
│ │ │ └── AggregatedDiscoveryServiceGrpc.java
│ │ ├── load_stats
│ │ │ ├── v2
│ │ │ │ └── LoadReportingServiceGrpc.java
│ │ │ └── v3
│ │ │ └── LoadReportingServiceGrpc.java
│ │ └── status
│ │ └── v3
│ │ └── ClientStatusDiscoveryServiceGrpc.java
│ ├── main
│ │ ├── java
│ │ │ └── io
│ │ │ └── grpc
│ │ │ └── xds
│ │ │ ├── AddressFilter.java
│ │ │ ├── BootstrapperImpl.java
│ │ │ ├── Bootstrapper.java
│ │ │ ├── CdsLoadBalancer2.java
│ │ │ ├── CdsLoadBalancerProvider.java
│ │ │ ├── ClusterImplLoadBalancer.java
│ │ │ ├── ClusterImplLoadBalancerProvider.java
│ │ │ ├── ClusterManagerLoadBalancer.java
│ │ │ ├── ClusterManagerLoadBalancerProvider.java
│ │ │ ├── ClusterResolverLoadBalancer.java
│ │ │ ├── ClusterResolverLoadBalancerProvider.java
│ │ │ ├── ClusterSpecifierPlugin.java
│ │ │ ├── ClusterSpecifierPluginRegistry.java
│ │ │ ├── ConfigOrError.java
│ │ │ ├── ControlPlaneClient.java
│ │ │ ├── CsdsService.java
│ │ │ ├── Endpoints.java
│ │ │ ├── EnvoyProtoData.java
│ │ │ ├── EnvoyServerProtoData.java
│ │ │ ├── FaultConfig.java
│ │ │ ├── FaultFilter.java
│ │ │ ├── FilterChainMatchingProtocolNegotiators.java
│ │ │ ├── FilterChainSelectorManager.java
│ │ │ ├── Filter.java
│ │ │ ├── FilterRegistry.java
│ │ │ ├── GrpcXdsTransportFactory.java
│ │ │ ├── HttpConnectionManager.java
│ │ │ ├── internal
│ │ │ │ ├── GoogleDefaultXdsCredentialsProvider.java
│ │ │ │ ├── InsecureXdsCredentialsProvider.java
│ │ │ │ ├── MatcherParser.java
│ │ │ │ ├── Matchers.java
│ │ │ │ ├── package-info.java
│ │ │ │ ├── rbac
│ │ │ │ │ └── engine
│ │ │ │ │ └── GrpcAuthorizationEngine.java
│ │ │ │ ├── security
│ │ │ │ │ ├── certprovider
│ │ │ │ │ │ ├── CertificateProvider.java
│ │ │ │ │ │ ├── CertificateProviderProvider.java
│ │ │ │ │ │ ├── CertificateProviderRegistry.java
│ │ │ │ │ │ ├── CertificateProviderStore.java
│ │ │ │ │ │ ├── CertProviderClientSslContextProviderFactory.java
│ │ │ │ │ │ ├── CertProviderClientSslContextProvider.java
│ │ │ │ │ │ ├── CertProviderServerSslContextProviderFactory.java
│ │ │ │ │ │ ├── CertProviderServerSslContextProvider.java
│ │ │ │ │ │ ├── CertProviderSslContextProvider.java
│ │ │ │ │ │ ├── FileWatcherCertificateProvider.java
│ │ │ │ │ │ └── FileWatcherCertificateProviderProvider.java
│ │ │ │ │ ├── ClientSslContextProviderFactory.java
│ │ │ │ │ ├── Closeable.java
│ │ │ │ │ ├── CommonTlsContextUtil.java
│ │ │ │ │ ├── DynamicSslContextProvider.java
│ │ │ │ │ ├── ReferenceCountingMap.java
│ │ │ │ │ ├── SecurityProtocolNegotiators.java
│ │ │ │ │ ├── ServerSslContextProviderFactory.java
│ │ │ │ │ ├── SslContextProvider.java
│ │ │ │ │ ├── SslContextProviderSupplier.java
│ │ │ │ │ ├── TlsContextManagerImpl.java
│ │ │ │ │ └── trust
│ │ │ │ │ ├── CertificateUtils.java
│ │ │ │ │ ├── XdsTrustManagerFactory.java
│ │ │ │ │ └── XdsX509TrustManager.java
│ │ │ │ └── TlsXdsCredentialsProvider.java
│ │ │ ├── InternalRbacFilter.java
│ │ │ ├── InternalSharedXdsClientPoolProvider.java
│ │ │ ├── InternalXdsAttributes.java
│ │ │ ├── LeastRequestLoadBalancer.java
│ │ │ ├── LeastRequestLoadBalancerProvider.java
│ │ │ ├── LoadBalancerConfigFactory.java
│ │ │ ├── LoadReportClient.java
│ │ │ ├── LoadStatsManager2.java
│ │ │ ├── Locality.java
│ │ │ ├── MessagePrinter.java
│ │ │ ├── orca
│ │ │ │ ├── OrcaMetricReportingServerInterceptor.java
│ │ │ │ ├── OrcaOobUtil.java
│ │ │ │ ├── OrcaPerRequestUtil.java
│ │ │ │ └── OrcaServiceImpl.java
│ │ │ ├── package-info.java
│ │ │ ├── PriorityLoadBalancer.java
│ │ │ ├── PriorityLoadBalancerProvider.java
│ │ │ ├── RbacConfig.java
│ │ │ ├── RbacFilter.java
│ │ │ ├── ReferenceCounted.java
│ │ │ ├── RingHashLoadBalancer.java
│ │ │ ├── RingHashLoadBalancerProvider.java
│ │ │ ├── RingHashOptions.java
│ │ │ ├── RouteLookupServiceClusterSpecifierPlugin.java
│ │ │ ├── RouterFilter.java
│ │ │ ├── RoutingUtils.java
│ │ │ ├── SharedCallCounterMap.java
│ │ │ ├── SharedXdsClientPoolProvider.java
│ │ │ ├── Stats.java
│ │ │ ├── ThreadSafeRandom.java
│ │ │ ├── TlsContextManager.java
│ │ │ ├── VirtualHost.java
│ │ │ ├── WeightedRandomPicker.java
│ │ │ ├── WeightedRoundRobinLoadBalancer.java
│ │ │ ├── WeightedRoundRobinLoadBalancerProvider.java
│ │ │ ├── WeightedTargetLoadBalancer.java
│ │ │ ├── WeightedTargetLoadBalancerProvider.java
│ │ │ ├── WrrLocalityLoadBalancer.java
│ │ │ ├── WrrLocalityLoadBalancerProvider.java
│ │ │ ├── XdsChannelCredentials.java
│ │ │ ├── XdsClientImpl.java
│ │ │ ├── XdsClient.java
│ │ │ ├── XdsClusterResource.java
│ │ │ ├── XdsCredentialsProvider.java
│ │ │ ├── XdsCredentialsRegistry.java
│ │ │ ├── XdsEndpointResource.java
│ │ │ ├── XdsInitializationException.java
│ │ │ ├── XdsLbPolicies.java
│ │ │ ├── XdsListenerResource.java
│ │ │ ├── XdsLogger.java
│ │ │ ├── XdsNameResolver.java
│ │ │ ├── XdsNameResolverProvider.java
│ │ │ ├── XdsResourceType.java
│ │ │ ├── XdsRouteConfigureResource.java
│ │ │ ├── XdsServerBuilder.java
│ │ │ ├── XdsServerCredentials.java
│ │ │ ├── XdsServerWrapper.java
│ │ │ └── XdsTransportFactory.java
│ │ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── io.grpc.LoadBalancerProvider
│ │ ├── io.grpc.NameResolverProvider
│ │ └── io.grpc.xds.XdsCredentialsProvider
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── xds
│ ├── AddressFilterTest.java
│ ├── BootstrapperImplTest.java
│ ├── CdsLoadBalancer2Test.java
│ ├── CdsLoadBalancerProviderTest.java
│ ├── ClusterImplLoadBalancerProviderTest.java
│ ├── ClusterImplLoadBalancerTest.java
│ ├── ClusterManagerLoadBalancerProviderTest.java
│ ├── ClusterManagerLoadBalancerTest.java
│ ├── ClusterResolverLoadBalancerProviderTest.java
│ ├── ClusterResolverLoadBalancerTest.java
│ ├── ClusterSpecifierPluginRegistryTest.java
│ ├── CommonBootstrapperTestUtils.java
│ ├── ControlPlaneRule.java
│ ├── CsdsServiceTest.java
│ ├── DataPlaneRule.java
│ ├── EnvoyProtoDataTest.java
│ ├── FakeControlPlaneXdsIntegrationTest.java
│ ├── FaultFilterTest.java
│ ├── FilterChainMatchingProtocolNegotiatorsTest.java
│ ├── FilterChainSelectorManagerTest.java
│ ├── GrpcXdsTransportFactoryTest.java
│ ├── internal
│ │ ├── GoogleDefaultXdsCredentialsProviderTest.java
│ │ ├── InsecureXdsCredentialsProviderTest.java
│ │ ├── MatcherTest.java
│ │ ├── rbac
│ │ │ └── engine
│ │ │ └── GrpcAuthorizationEngineTest.java
│ │ ├── security
│ │ │ ├── certprovider
│ │ │ │ ├── CertificateProviderStoreTest.java
│ │ │ │ ├── CertProviderClientSslContextProviderTest.java
│ │ │ │ ├── CertProviderServerSslContextProviderTest.java
│ │ │ │ ├── CommonCertProviderTestUtils.java
│ │ │ │ ├── FileWatcherCertificateProviderProviderTest.java
│ │ │ │ ├── FileWatcherCertificateProviderTest.java
│ │ │ │ └── TestCertificateProvider.java
│ │ │ ├── ClientSslContextProviderFactoryTest.java
│ │ │ ├── CommonTlsContextTestsUtil.java
│ │ │ ├── ReferenceCountingMapTest.java
│ │ │ ├── SecurityProtocolNegotiatorsTest.java
│ │ │ ├── ServerSslContextProviderFactoryTest.java
│ │ │ ├── SslContextProviderSupplierTest.java
│ │ │ ├── TlsContextManagerTest.java
│ │ │ └── trust
│ │ │ ├── XdsTrustManagerFactoryTest.java
│ │ │ └── XdsX509TrustManagerTest.java
│ │ └── TlsXdsCredentialsProviderTest.java
│ ├── LeastRequestLoadBalancerProviderTest.java
│ ├── LeastRequestLoadBalancerTest.java
│ ├── LoadBalancerConfigFactoryTest.java
│ ├── LoadReportClientTest.java
│ ├── LoadStatsManager2Test.java
│ ├── MessagePrinterTest.java
│ ├── MetadataLoadBalancerProvider.java
│ ├── orca
│ │ ├── OrcaMetricReportingServerInterceptorTest.java
│ │ ├── OrcaOobUtilTest.java
│ │ ├── OrcaPerRequestUtilTest.java
│ │ └── OrcaServiceImplTest.java
│ ├── PriorityLoadBalancerProviderTest.java
│ ├── PriorityLoadBalancerTest.java
│ ├── RbacFilterTest.java
│ ├── RingHashLoadBalancerProviderTest.java
│ ├── RingHashLoadBalancerTest.java
│ ├── RouteLookupServiceClusterSpecifierPluginTest.java
│ ├── RoutingUtilsTest.java
│ ├── SharedCallCounterMapTest.java
│ ├── SharedXdsClientPoolProviderTest.java
│ ├── WeightedRandomPickerTest.java
│ ├── WeightedRoundRobinLoadBalancerProviderTest.java
│ ├── WeightedRoundRobinLoadBalancerTest.java
│ ├── WeightedTargetLoadBalancerProviderTest.java
│ ├── WeightedTargetLoadBalancerTest.java
│ ├── WrrLocalityLoadBalancerProviderTest.java
│ ├── WrrLocalityLoadBalancerTest.java
│ ├── XdsClientFederationTest.java
│ ├── XdsClientImplDataTest.java
│ ├── XdsClientImplTestBase.java
│ ├── XdsClientImplV3Test.java
│ ├── XdsClientWrapperForServerSdsTestMisc.java
│ ├── XdsCredentialsRegistryTest.java
│ ├── XdsNameResolverProviderTest.java
│ ├── XdsNameResolverTest.java
│ ├── XdsSecurityClientServerTest.java
│ ├── XdsServerBuilderTest.java
│ ├── XdsServerTestHelper.java
│ ├── XdsServerWrapperTest.java
│ ├── XdsTestControlPlaneService.java
│ └── XdsTestLoadReportingService.java
└── third_party
├── envoy
│ ├── import.sh
│ ├── LICENSE
│ ├── NOTICE
│ └── src
│ └── main
│ └── proto
│ └── envoy
│ ├── admin
│ │ └── v3
│ │ ├── config_dump.proto
│ │ └── config_dump_shared.proto
│ ├── annotations
│ │ ├── deprecation.proto
│ │ └── resource.proto
│ ├── api
│ │ └── v2
│ │ ├── auth
│ │ │ ├── cert.proto
│ │ │ ├── common.proto
│ │ │ ├── secret.proto
│ │ │ └── tls.proto
│ │ ├── cds.proto
│ │ ├── cluster
│ │ │ ├── circuit_breaker.proto
│ │ │ ├── filter.proto
│ │ │ └── outlier_detection.proto
│ │ ├── cluster.proto
│ │ ├── core
│ │ │ ├── address.proto
│ │ │ ├── backoff.proto
│ │ │ ├── base.proto
│ │ │ ├── config_source.proto
│ │ │ ├── event_service_config.proto
│ │ │ ├── grpc_service.proto
│ │ │ ├── health_check.proto
│ │ │ ├── http_uri.proto
│ │ │ ├── protocol.proto
│ │ │ └── socket_option.proto
│ │ ├── discovery.proto
│ │ ├── eds.proto
│ │ ├── endpoint
│ │ │ ├── endpoint_components.proto
│ │ │ ├── endpoint.proto
│ │ │ └── load_report.proto
│ │ ├── endpoint.proto
│ │ ├── lds.proto
│ │ ├── listener
│ │ │ ├── listener_components.proto
│ │ │ ├── listener.proto
│ │ │ └── udp_listener_config.proto
│ │ ├── listener.proto
│ │ ├── rds.proto
│ │ ├── route
│ │ │ ├── route_components.proto
│ │ │ └── route.proto
│ │ ├── route.proto
│ │ ├── scoped_route.proto
│ │ └── srds.proto
│ ├── config
│ │ ├── accesslog
│ │ │ └── v3
│ │ │ └── accesslog.proto
│ │ ├── bootstrap
│ │ │ └── v3
│ │ │ └── bootstrap.proto
│ │ ├── cluster
│ │ │ ├── aggregate
│ │ │ │ └── v2alpha
│ │ │ │ └── cluster.proto
│ │ │ └── v3
│ │ │ ├── circuit_breaker.proto
│ │ │ ├── cluster.proto
│ │ │ ├── filter.proto
│ │ │ └── outlier_detection.proto
│ │ ├── core
│ │ │ └── v3
│ │ │ ├── address.proto
│ │ │ ├── backoff.proto
│ │ │ ├── base.proto
│ │ │ ├── config_source.proto
│ │ │ ├── event_service_config.proto
│ │ │ ├── extension.proto
│ │ │ ├── grpc_service.proto
│ │ │ ├── health_check.proto
│ │ │ ├── http_service.proto
│ │ │ ├── http_uri.proto
│ │ │ ├── protocol.proto
│ │ │ ├── proxy_protocol.proto
│ │ │ ├── resolver.proto
│ │ │ ├── socket_option.proto
│ │ │ ├── substitution_format_string.proto
│ │ │ └── udp_socket_config.proto
│ │ ├── endpoint
│ │ │ └── v3
│ │ │ ├── endpoint_components.proto
│ │ │ ├── endpoint.proto
│ │ │ └── load_report.proto
│ │ ├── filter
│ │ │ ├── accesslog
│ │ │ │ └── v2
│ │ │ │ └── accesslog.proto
│ │ │ ├── fault
│ │ │ │ └── v2
│ │ │ │ └── fault.proto
│ │ │ ├── http
│ │ │ │ ├── fault
│ │ │ │ │ └── v2
│ │ │ │ │ └── fault.proto
│ │ │ │ └── router
│ │ │ │ └── v2
│ │ │ │ └── router.proto
│ │ │ └── network
│ │ │ └── http_connection_manager
│ │ │ └── v2
│ │ │ └── http_connection_manager.proto
│ │ ├── listener
│ │ │ ├── v2
│ │ │ │ └── api_listener.proto
│ │ │ └── v3
│ │ │ ├── api_listener.proto
│ │ │ ├── listener_components.proto
│ │ │ ├── listener.proto
│ │ │ ├── quic_config.proto
│ │ │ └── udp_listener_config.proto
│ │ ├── metrics
│ │ │ └── v3
│ │ │ └── stats.proto
│ │ ├── overload
│ │ │ └── v3
│ │ │ └── overload.proto
│ │ ├── rbac
│ │ │ ├── v2
│ │ │ │ └── rbac.proto
│ │ │ └── v3
│ │ │ └── rbac.proto
│ │ ├── route
│ │ │ └── v3
│ │ │ ├── route_components.proto
│ │ │ ├── route.proto
│ │ │ └── scoped_route.proto
│ │ └── trace
│ │ ├── v2
│ │ │ ├── datadog.proto
│ │ │ ├── dynamic_ot.proto
│ │ │ ├── http_tracer.proto
│ │ │ ├── lightstep.proto
│ │ │ ├── opencensus.proto
│ │ │ ├── service.proto
│ │ │ ├── trace.proto
│ │ │ └── zipkin.proto
│ │ └── v3
│ │ ├── datadog.proto
│ │ ├── dynamic_ot.proto
│ │ ├── http_tracer.proto
│ │ ├── lightstep.proto
│ │ ├── opencensus.proto
│ │ ├── opentelemetry.proto
│ │ ├── service.proto
│ │ ├── trace.proto
│ │ └── zipkin.proto
│ ├── data
│ │ └── accesslog
│ │ └── v3
│ │ └── accesslog.proto
│ ├── extensions
│ │ ├── clusters
│ │ │ └── aggregate
│ │ │ └── v3
│ │ │ └── cluster.proto
│ │ ├── filters
│ │ │ ├── common
│ │ │ │ └── fault
│ │ │ │ └── v3
│ │ │ │ └── fault.proto
│ │ │ ├── http
│ │ │ │ ├── fault
│ │ │ │ │ └── v3
│ │ │ │ │ └── fault.proto
│ │ │ │ ├── rbac
│ │ │ │ │ └── v3
│ │ │ │ │ └── rbac.proto
│ │ │ │ └── router
│ │ │ │ └── v3
│ │ │ │ └── router.proto
│ │ │ └── network
│ │ │ └── http_connection_manager
│ │ │ └── v3
│ │ │ └── http_connection_manager.proto
│ │ ├── load_balancing_policies
│ │ │ ├── client_side_weighted_round_robin
│ │ │ │ └── v3
│ │ │ │ └── client_side_weighted_round_robin.proto
│ │ │ ├── common
│ │ │ │ └── v3
│ │ │ │ └── common.proto
│ │ │ ├── least_request
│ │ │ │ └── v3
│ │ │ │ └── least_request.proto
│ │ │ ├── pick_first
│ │ │ │ └── v3
│ │ │ │ └── pick_first.proto
│ │ │ ├── ring_hash
│ │ │ │ └── v3
│ │ │ │ └── ring_hash.proto
│ │ │ ├── round_robin
│ │ │ │ └── v3
│ │ │ │ └── round_robin.proto
│ │ │ └── wrr_locality
│ │ │ └── v3
│ │ │ └── wrr_locality.proto
│ │ └── transport_sockets
│ │ └── tls
│ │ └── v3
│ │ ├── cert.proto
│ │ ├── common.proto
│ │ ├── secret.proto
│ │ └── tls.proto
│ ├── service
│ │ ├── discovery
│ │ │ ├── v2
│ │ │ │ ├── ads.proto
│ │ │ │ └── sds.proto
│ │ │ └── v3
│ │ │ ├── ads.proto
│ │ │ └── discovery.proto
│ │ ├── load_stats
│ │ │ ├── v2
│ │ │ │ └── lrs.proto
│ │ │ └── v3
│ │ │ └── lrs.proto
│ │ └── status
│ │ └── v3
│ │ └── csds.proto
│ └── type
│ ├── http
│ │ └── v3
│ │ └── path_transformation.proto
│ ├── http.proto
│ ├── matcher
│ │ ├── metadata.proto
│ │ ├── number.proto
│ │ ├── path.proto
│ │ ├── regex.proto
│ │ ├── string.proto
│ │ ├── v3
│ │ │ ├── filter_state.proto
│ │ │ ├── metadata.proto
│ │ │ ├── node.proto
│ │ │ ├── number.proto
│ │ │ ├── path.proto
│ │ │ ├── regex.proto
│ │ │ ├── string.proto
│ │ │ ├── struct.proto
│ │ │ └── value.proto
│ │ └── value.proto
│ ├── metadata
│ │ ├── v2
│ │ │ └── metadata.proto
│ │ └── v3
│ │ └── metadata.proto
│ ├── percent.proto
│ ├── range.proto
│ ├── semantic_version.proto
│ ├── tracing
│ │ ├── v2
│ │ │ └── custom_tag.proto
│ │ └── v3
│ │ └── custom_tag.proto
│ └── v3
│ ├── http.proto
│ ├── percent.proto
│ ├── range.proto
│ └── semantic_version.proto
├── googleapis
│ ├── import.sh
│ ├── LICENSE
│ └── src
│ └── main
│ └── proto
│ └── api
│ └── expr
│ └── v1alpha1
│ ├── checked.proto
│ └── syntax.proto
├── protoc-gen-validate
│ ├── import.sh
│ ├── LICENSE
│ ├── NOTICE
│ └── src
│ └── main
│ └── proto
│ └── validate
│ └── validate.proto
├── xds
│ ├── import.sh
│ ├── LICENSE
│ └── src
│ └── main
│ └── proto
│ ├── udpa
│ │ ├── annotations
│ │ │ ├── migrate.proto
│ │ │ ├── security.proto
│ │ │ ├── sensitive.proto
│ │ │ ├── status.proto
│ │ │ └── versioning.proto
│ │ └── type
│ │ └── v1
│ │ └── typed_struct.proto
│ └── xds
│ ├── annotations
│ │ └── v3
│ │ ├── migrate.proto
│ │ ├── security.proto
│ │ ├── sensitive.proto
│ │ ├── status.proto
│ │ └── versioning.proto
│ ├── core
│ │ └── v3
│ │ ├── authority.proto
│ │ ├── collection_entry.proto
│ │ ├── context_params.proto
│ │ ├── extension.proto
│ │ ├── resource_locator.proto
│ │ └── resource_name.proto
│ ├── data
│ │ └── orca
│ │ └── v3
│ │ └── orca_load_report.proto
│ ├── service
│ │ └── orca
│ │ └── v3
│ │ └── orca.proto
│ └── type
│ ├── matcher
│ │ └── v3
│ │ ├── matcher.proto
│ │ ├── regex.proto
│ │ └── string.proto
│ └── v3
│ └── typed_struct.proto
└── zero-allocation-hashing
├── LICENSE
├── main
│ └── java
│ └── io
│ └── grpc
│ └── xds
│ └── XxHash64.java
├── NOTICE
└── test
└── java
└── io
└── grpc
└── xds
└── XxHash64Test.java
1183 directories, 1992 files
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论