在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → grpc:Java gRPC实现.基于HTTP/2的RPC

grpc:Java gRPC实现.基于HTTP/2的RPC

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:4.89M
  • 下载次数:1
  • 浏览次数:27
  • 发布时间:2024-02-28
  • 实例类别:一般编程问题
  • 发 布 人:chenxiaolan
  • 文件格式:.zip
  • 所需积分:2
 相关标签: java http RPC Tt Pc

实例介绍

【实例简介】
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动态安全提供程序。


Getting Started对于一次导览,请查看快速入门指南或更详细的gRPC基础知识。示例和Android示例是展示gRPC用法的独立项目。下载下载JAR文件。或对于非Android的Maven,请添加到您的pom.xml:
<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
            │               └── google
            │                   └── 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

标签: java http RPC Tt Pc

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警