├── .bazelignore
├── .bazelrc
├── .gitattributes
├── .github
├── ISSUE_TEMPLATE
│ ├── ask_question.md
│ ├── bug_report.md
│ └── feature_report.md
└── workflows
│ ├── branch-testing.yml
│ ├── gradle-wrapper-validation.yml
│ ├── lock.yml
│ └── testing.yml
├── .gitignore
├── AUTHORS
├── BUILD.bazel
├── CODE-OF-CONDUCT.md
├── COMPILING.md
├── CONTRIBUTING.md
├── GOVERNANCE.md
├── LICENSE
├── MAINTAINERS.md
├── MODULE.bazel
├── NOTICE.txt
├── README.md
├── RELEASING.md
├── SECURITY.md
├── WORKSPACE
├── WORKSPACE.bzlmod
├── 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
│ │ │ ├── DualCallCredentials.java
│ │ │ ├── FailingCallCredentials.java
│ │ │ ├── FailingClientCall.java
│ │ │ ├── GoogleDefaultChannelBuilder.java
│ │ │ ├── GoogleDefaultChannelCredentials.java
│ │ │ ├── HandshakerServiceChannel.java
│ │ │ ├── InternalCheckGcpEnvironment.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
│ │ │ ├── TsiHandshaker.java
│ │ │ ├── TsiHandshakerFactory.java
│ │ │ └── TsiPeer.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
│ ├── DualCallCredentialsTest.java
│ ├── GoogleDefaultChannelBuilderTest.java
│ ├── HandshakerServiceChannelTest.java
│ ├── InternalCheckGcpEnvironmentTest.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
├── android-interop-testing
├── README.md
├── build.gradle
├── proguard-rules.pro
├── 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
├── android
├── build.gradle
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── android
│ │ ├── AndroidChannelBuilder.java
│ │ ├── UdsChannelBuilder.java
│ │ ├── UdsSocket.java
│ │ └── UdsSocketFactory.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── android
│ └── AndroidChannelBuilderTest.java
├── 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
│ │ ├── CallbackMetricInstrument.java
│ │ ├── Channel.java
│ │ ├── ChannelCredentials.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
│ │ ├── Configurator.java
│ │ ├── ConfiguratorRegistry.java
│ │ ├── ConnectivityState.java
│ │ ├── ConnectivityStateInfo.java
│ │ ├── Contexts.java
│ │ ├── Decompressor.java
│ │ ├── DecompressorRegistry.java
│ │ ├── Detachable.java
│ │ ├── DoubleCounterMetricInstrument.java
│ │ ├── DoubleHistogramMetricInstrument.java
│ │ ├── Drainable.java
│ │ ├── EquivalentAddressGroup.java
│ │ ├── ExperimentalApi.java
│ │ ├── ForwardingChannelBuilder.java
│ │ ├── ForwardingChannelBuilder2.java
│ │ ├── ForwardingClientCall.java
│ │ ├── ForwardingClientCallListener.java
│ │ ├── ForwardingServerBuilder.java
│ │ ├── ForwardingServerCall.java
│ │ ├── ForwardingServerCallListener.java
│ │ ├── Grpc.java
│ │ ├── HandlerRegistry.java
│ │ ├── HasByteBuffer.java
│ │ ├── HttpConnectProxiedSocketAddress.java
│ │ ├── IgnoreJRERequirement.java
│ │ ├── InsecureChannelCredentials.java
│ │ ├── InsecureServerCredentials.java
│ │ ├── Internal.java
│ │ ├── InternalCallOptions.java
│ │ ├── InternalChannelz.java
│ │ ├── InternalClientInterceptors.java
│ │ ├── InternalConfigSelector.java
│ │ ├── InternalConfigurator.java
│ │ ├── InternalConfiguratorRegistry.java
│ │ ├── InternalDecompressorRegistry.java
│ │ ├── InternalInstrumented.java
│ │ ├── InternalKnownTransport.java
│ │ ├── InternalLogId.java
│ │ ├── InternalManagedChannelBuilder.java
│ │ ├── InternalManagedChannelProvider.java
│ │ ├── InternalMayRequireSpecificExecutor.java
│ │ ├── InternalMetadata.java
│ │ ├── InternalMethodDescriptor.java
│ │ ├── InternalServer.java
│ │ ├── InternalServerInterceptors.java
│ │ ├── InternalServerProvider.java
│ │ ├── InternalServiceProviders.java
│ │ ├── InternalStatus.java
│ │ ├── InternalStatusRuntimeException.java
│ │ ├── InternalSubchannelAddressAttributes.java
│ │ ├── InternalTimeUtils.java
│ │ ├── InternalWithLogId.java
│ │ ├── KnownLength.java
│ │ ├── LoadBalancer.java
│ │ ├── LoadBalancerProvider.java
│ │ ├── LoadBalancerRegistry.java
│ │ ├── LongCounterMetricInstrument.java
│ │ ├── LongGaugeMetricInstrument.java
│ │ ├── LongHistogramMetricInstrument.java
│ │ ├── ManagedChannel.java
│ │ ├── ManagedChannelBuilder.java
│ │ ├── ManagedChannelProvider.java
│ │ ├── ManagedChannelRegistry.java
│ │ ├── Metadata.java
│ │ ├── MethodDescriptor.java
│ │ ├── MetricInstrument.java
│ │ ├── MetricInstrumentRegistry.java
│ │ ├── MetricRecorder.java
│ │ ├── MetricSink.java
│ │ ├── NameResolver.java
│ │ ├── NameResolverProvider.java
│ │ ├── NameResolverRegistry.java
│ │ ├── PartialForwardingClientCall.java
│ │ ├── PartialForwardingClientCallListener.java
│ │ ├── PartialForwardingServerCall.java
│ │ ├── PartialForwardingServerCallListener.java
│ │ ├── PartialMetricInstrument.java
│ │ ├── ProxiedSocketAddress.java
│ │ ├── ProxyDetector.java
│ │ ├── SecurityLevel.java
│ │ ├── Server.java
│ │ ├── ServerBuilder.java
│ │ ├── ServerCall.java
│ │ ├── ServerCallExecutorSupplier.java
│ │ ├── ServerCallHandler.java
│ │ ├── ServerCredentials.java
│ │ ├── ServerInterceptor.java
│ │ ├── ServerInterceptors.java
│ │ ├── ServerMethodDefinition.java
│ │ ├── ServerProvider.java
│ │ ├── ServerRegistry.java
│ │ ├── ServerServiceDefinition.java
│ │ ├── ServerStreamTracer.java
│ │ ├── ServerTransportFilter.java
│ │ ├── ServiceDescriptor.java
│ │ ├── ServiceProviders.java
│ │ ├── Status.java
│ │ ├── StatusException.java
│ │ ├── StatusOr.java
│ │ ├── StatusRuntimeException.java
│ │ ├── StreamTracer.java
│ │ ├── SynchronizationContext.java
│ │ ├── TimeUtils.java
│ │ ├── TlsChannelCredentials.java
│ │ ├── TlsServerCredentials.java
│ │ └── package-info.java
│ ├── test
│ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ ├── AttributesTest.java
│ │ │ ├── CallOptionsTest.java
│ │ │ ├── ChoiceChannelCredentialsTest.java
│ │ │ ├── ClientInterceptorsTest.java
│ │ │ ├── ClientStreamTracerTest.java
│ │ │ ├── CompositeCallCredentialsTest.java
│ │ │ ├── CompositeChannelCredentialsTest.java
│ │ │ ├── ConfiguratorRegistryTest.java
│ │ │ ├── ConnectivityStateInfoTest.java
│ │ │ ├── ContextTest.java
│ │ │ ├── ContextsTest.java
│ │ │ ├── DeadlineTest.java
│ │ │ ├── DecompressorRegistryTest.java
│ │ │ ├── ForwardingChannelBuilder2Test.java
│ │ │ ├── ForwardingChannelBuilderTest.java
│ │ │ ├── ForwardingScheduledExecutorService.java
│ │ │ ├── ForwardingServerBuilderTest.java
│ │ │ ├── ForwardingServerCallListenerTest.java
│ │ │ ├── ForwardingServerCallTest.java
│ │ │ ├── InsecureChannelCredentialsTest.java
│ │ │ ├── InternalChannelzTest.java
│ │ │ ├── InternalConfigSelectorTest.java
│ │ │ ├── InternalLogIdTest.java
│ │ │ ├── LoadBalancerRegistryTest.java
│ │ │ ├── LoadBalancerTest.java
│ │ │ ├── ManagedChannelRegistryTest.java
│ │ │ ├── MetadataTest.java
│ │ │ ├── MethodDescriptorTest.java
│ │ │ ├── MetricInstrumentRegistryTest.java
│ │ │ ├── NameResolverRegistryTest.java
│ │ │ ├── NameResolverTest.java
│ │ │ ├── PersistentHashArrayMappedTrieTest.java
│ │ │ ├── ReplacingClassLoader.java
│ │ │ ├── ServerInterceptorsTest.java
│ │ │ ├── ServerRegistryTest.java
│ │ │ ├── ServerServiceDefinitionTest.java
│ │ │ ├── ServiceDescriptorTest.java
│ │ │ ├── ServiceProvidersTest.java
│ │ │ ├── ServiceProvidersTestAbstractProvider.java
│ │ │ ├── ServiceProvidersTestUtil.java
│ │ │ ├── StatusExceptionTest.java
│ │ │ ├── StatusOrTest.java
│ │ │ ├── StatusRuntimeExceptionTest.java
│ │ │ ├── StatusTest.java
│ │ │ ├── SynchronizationContextTest.java
│ │ │ ├── ThreadLocalContextStorageTest.java
│ │ │ ├── TimeUtilsTest.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
│ ├── MetricInstrumentRegistryAccessor.java
│ ├── NoopClientCall.java
│ ├── NoopMetricSink.java
│ ├── NoopServerCall.java
│ ├── PickSubchannelArgsMatcher.java
│ ├── ServerRegistryAccessor.java
│ ├── StaticTestingClassLoader.java
│ ├── StatusMatcher.java
│ ├── StatusOrMatcher.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
├── 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
├── README.md
├── build.gradle
└── src
│ ├── generated
│ └── main
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── benchmarks
│ │ └── proto
│ │ ├── BenchmarkServiceGrpc.java
│ │ ├── ReportQpsScenarioServiceGrpc.java
│ │ └── WorkerServiceGrpc.java
│ ├── jmh
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── benchmarks
│ │ ├── CancellableInterceptor.java
│ │ ├── ThreadlessExecutor.java
│ │ ├── TransportBenchmark.java
│ │ └── netty
│ │ ├── AbstractBenchmark.java
│ │ ├── StreamingPingPongsPerSecondBenchmark.java
│ │ └── UnaryCallQpsBenchmark.java
│ ├── main
│ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── benchmarks
│ │ │ ├── ByteBufInputStream.java
│ │ │ ├── ByteBufOutputMarshaller.java
│ │ │ ├── SocketAddressValidator.java
│ │ │ ├── Transport.java
│ │ │ ├── Utils.java
│ │ │ ├── driver
│ │ │ ├── LoadClient.java
│ │ │ ├── LoadServer.java
│ │ │ └── LoadWorker.java
│ │ │ └── qps
│ │ │ ├── AbstractConfigurationBuilder.java
│ │ │ ├── AsyncClient.java
│ │ │ ├── AsyncServer.java
│ │ │ ├── ClientConfiguration.java
│ │ │ ├── Configuration.java
│ │ │ ├── OpenLoopClient.java
│ │ │ └── ServerConfiguration.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
│ │ └── OneWayBinderProxies.java
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── binder
│ │ ├── AndroidComponentAddress.java
│ │ ├── ApiConstants.java
│ │ ├── AsyncSecurityPolicy.java
│ │ ├── BindServiceFlags.java
│ │ ├── BinderChannelBuilder.java
│ │ ├── BinderChannelCredentials.java
│ │ ├── BinderInternal.java
│ │ ├── BinderServerBuilder.java
│ │ ├── IBinderReceiver.java
│ │ ├── InboundParcelablePolicy.java
│ │ ├── LifecycleOnDestroyHelper.java
│ │ ├── ParcelableUtils.java
│ │ ├── PeerUid.java
│ │ ├── PeerUids.java
│ │ ├── SecurityPolicies.java
│ │ ├── SecurityPolicy.java
│ │ ├── ServerSecurityPolicy.java
│ │ ├── UntrustedSecurityPolicies.java
│ │ └── internal
│ │ ├── ActiveTransportTracker.java
│ │ ├── Bindable.java
│ │ ├── BinderClientTransportFactory.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
│ │ ├── ParcelHolder.java
│ │ ├── ParcelableInputStream.java
│ │ ├── PendingAuthListener.java
│ │ ├── PingTracker.java
│ │ ├── ServiceBinding.java
│ │ ├── SingleMessageClientStream.java
│ │ ├── SingleMessageServerStream.java
│ │ └── TransactionUtils.java
│ ├── test
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── binder
│ │ ├── AndroidComponentAddressTest.java
│ │ ├── BindServiceFlagsTest.java
│ │ ├── BinderChannelBuilderTest.java
│ │ ├── BinderChannelCredentialsTest.java
│ │ ├── BinderServerBuilderTest.java
│ │ ├── LifecycleOnDestroyHelperTest.java
│ │ ├── PeerUidTest.java
│ │ ├── PeerUidTestHelperTest.java
│ │ ├── PeerUidsTest.java
│ │ ├── RobolectricBinderSecurityTest.java
│ │ ├── SecurityPoliciesTest.java
│ │ ├── ServerSecurityPolicyTest.java
│ │ └── internal
│ │ ├── ActiveTransportTrackerTest.java
│ │ ├── BinderServerTransportTest.java
│ │ ├── BlockInputStreamTest.java
│ │ ├── BoundClientAddressTest.java
│ │ ├── FlowControllerTest.java
│ │ ├── OneWayBinderProxyTest.java
│ │ ├── ParcelableInputStreamTest.java
│ │ ├── PendingAuthListenerTest.java
│ │ ├── PingTrackerTest.java
│ │ ├── RobolectricBinderTransportTest.java
│ │ ├── ServiceBindingTest.java
│ │ └── TestParcelable.java
│ └── testFixtures
│ └── java
│ └── io
│ └── grpc
│ └── binder
│ ├── PeerUidTestHelper.java
│ └── internal
│ └── MainThreadScheduledExecutorService.java
├── bom
└── build.gradle
├── build.gradle
├── buildSrc
├── build.gradle
└── src
│ └── main
│ └── java
│ └── io
│ └── grpc
│ └── gradle
│ ├── CheckForUpdatesTask.java
│ ├── CheckPackageLeakageTask.java
│ └── RequireUpperBoundDepsMatchTask.java
├── 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-interop.cfg
│ ├── android-interop.sh
│ ├── android.cfg
│ ├── android.sh
│ ├── gae-interop.cfg
│ ├── gae-interop.sh
│ ├── kokoro.sh
│ ├── linux_artifacts.cfg
│ ├── linux_artifacts.sh
│ ├── macos.cfg
│ ├── macos.sh
│ ├── psm-cloud-run.cfg
│ ├── psm-csm.cfg
│ ├── psm-dualstack.cfg
│ ├── psm-interop-build-java.sh
│ ├── psm-interop-test-java.sh
│ ├── psm-light.cfg
│ ├── psm-security.cfg
│ ├── release_artifacts.cfg
│ ├── release_artifacts.sh
│ ├── unix.sh
│ ├── upload_artifacts.cfg
│ ├── upload_artifacts.sh
│ ├── windows.bat
│ ├── windows.cfg
│ ├── windows32.bat
│ ├── windows64.bat
│ ├── xds_k8s_lb.cfg
│ ├── xds_url_map.cfg
│ ├── xds_v3.cfg
│ └── xds_v3.sh
├── make_dependencies.bat
├── make_dependencies.sh
├── observability-test
│ ├── Dockerfile
│ ├── build_docker.sh
│ └── run.sh
├── run_in_docker.sh
├── sign-local-repo.sh
├── sonatype-upload.sh
├── sync-protos.sh
├── toolchain.cmake
├── xds-k8s
│ ├── cloudbuild.yaml
│ ├── logging-debug.properties
│ ├── logging-json.properties
│ ├── logging.properties
│ ├── test-client.Dockerfile
│ └── test-server.Dockerfile
└── xds_logging.properties
├── census
├── BUILD.bazel
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── census
│ │ ├── CensusStatsModule.java
│ │ ├── CensusTracingModule.java
│ │ ├── InternalCensusStatsAccessor.java
│ │ ├── InternalCensusTracingAccessor.java
│ │ └── internal
│ │ ├── DeprecatedCensusConstants.java
│ │ └── ObservabilityCensusConstants.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── census
│ ├── CensusModulesTest.java
│ └── CensusTracingAnnotationEventTest.java
├── codecov.yml
├── compiler
├── BUILD.bazel
├── README.md
├── build.gradle
├── check-artifact.sh
└── 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
├── context
├── BUILD.bazel
└── build.gradle
├── contextstorage
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── override
│ │ ├── ContextStorageOverride.java
│ │ └── OpenTelemetryContextStorage.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── override
│ └── OpenTelemetryContextStorageTest.java
├── 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
│ │ │ ├── AuthorityVerifier.java
│ │ │ ├── AutoConfiguredLoadBalancerFactory.java
│ │ │ ├── BackoffPolicy.java
│ │ │ ├── BackoffPolicyRetryScheduler.java
│ │ │ ├── CallCredentialsApplyingTransportFactory.java
│ │ │ ├── CallTracer.java
│ │ │ ├── CertificateUtils.java
│ │ │ ├── ChannelLoggerImpl.java
│ │ │ ├── ChannelTracer.java
│ │ │ ├── ClientCallImpl.java
│ │ │ ├── ClientStream.java
│ │ │ ├── ClientStreamListener.java
│ │ │ ├── ClientTransport.java
│ │ │ ├── ClientTransportFactory.java
│ │ │ ├── CompositeReadableBuffer.java
│ │ │ ├── ConcurrentTimeProvider.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
│ │ │ ├── InUseStateAggregator.java
│ │ │ ├── InsightBuilder.java
│ │ │ ├── InstantTimeProvider.java
│ │ │ ├── InternalHandlerRegistry.java
│ │ │ ├── InternalServer.java
│ │ │ ├── InternalSubchannel.java
│ │ │ ├── JndiResourceResolverFactory.java
│ │ │ ├── JsonParser.java
│ │ │ ├── JsonUtil.java
│ │ │ ├── KeepAliveEnforcer.java
│ │ │ ├── KeepAliveManager.java
│ │ │ ├── LogExceptionRunnable.java
│ │ │ ├── LongCounter.java
│ │ │ ├── LongCounterFactory.java
│ │ │ ├── ManagedChannelImpl.java
│ │ │ ├── ManagedChannelImplBuilder.java
│ │ │ ├── ManagedChannelOrphanWrapper.java
│ │ │ ├── ManagedChannelServiceConfig.java
│ │ │ ├── ManagedClientTransport.java
│ │ │ ├── MaxConnectionIdleManager.java
│ │ │ ├── MessageDeframer.java
│ │ │ ├── MessageFramer.java
│ │ │ ├── MetadataApplierImpl.java
│ │ │ ├── MetricRecorderImpl.java
│ │ │ ├── MigratingThreadDeframer.java
│ │ │ ├── NameResolverFactoryToProviderFacade.java
│ │ │ ├── NoopClientStream.java
│ │ │ ├── NoopSslSession.java
│ │ │ ├── ObjectPool.java
│ │ │ ├── OobChannel.java
│ │ │ ├── PickDetailsConsumerImpl.java
│ │ │ ├── PickFirstLeafLoadBalancer.java
│ │ │ ├── PickFirstLoadBalancer.java
│ │ │ ├── PickFirstLoadBalancerProvider.java
│ │ │ ├── PickSubchannelArgsImpl.java
│ │ │ ├── ProxyDetectorImpl.java
│ │ │ ├── ReadableBuffer.java
│ │ │ ├── ReadableBuffers.java
│ │ │ ├── ReflectionLongAdderCounter.java
│ │ │ ├── Rescheduler.java
│ │ │ ├── RetriableStream.java
│ │ │ ├── RetryPolicy.java
│ │ │ ├── RetryScheduler.java
│ │ │ ├── RetryingNameResolver.java
│ │ │ ├── ScParser.java
│ │ │ ├── SerializeReentrantCallsDirectExecutor.java
│ │ │ ├── SerializingExecutor.java
│ │ │ ├── ServerCallImpl.java
│ │ │ ├── ServerCallInfoImpl.java
│ │ │ ├── ServerImpl.java
│ │ │ ├── ServerImplBuilder.java
│ │ │ ├── ServerListener.java
│ │ │ ├── ServerStream.java
│ │ │ ├── ServerStreamListener.java
│ │ │ ├── ServerTransport.java
│ │ │ ├── ServerTransportListener.java
│ │ │ ├── ServiceConfigState.java
│ │ │ ├── ServiceConfigUtil.java
│ │ │ ├── SharedResourceHolder.java
│ │ │ ├── SharedResourcePool.java
│ │ │ ├── SpiffeUtil.java
│ │ │ ├── SquelchLateMessagesAvailableDeframerListener.java
│ │ │ ├── StatsTraceContext.java
│ │ │ ├── Stream.java
│ │ │ ├── StreamListener.java
│ │ │ ├── SubchannelChannel.java
│ │ │ ├── ThreadOptimizedDeframer.java
│ │ │ ├── TimeProvider.java
│ │ │ ├── TimeProviderResolverFactory.java
│ │ │ ├── TransportFrameUtil.java
│ │ │ ├── TransportProvider.java
│ │ │ ├── TransportTracer.java
│ │ │ ├── WritableBuffer.java
│ │ │ ├── WritableBufferAllocator.java
│ │ │ └── package-info.java
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── io.grpc.LoadBalancerProvider
│ │ └── io.grpc.NameResolverProvider
│ ├── test
│ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── 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
│ │ │ ├── ConcurrentTimeProviderTest.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
│ │ │ ├── InUseStateAggregatorTest.java
│ │ │ ├── InstantTimeProviderTest.java
│ │ │ ├── InternalSubchannelTest.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
│ │ │ ├── MetricRecorderImplTest.java
│ │ │ ├── PickFirstLeafLoadBalancerTest.java
│ │ │ ├── PickFirstLoadBalancerProviderTest.java
│ │ │ ├── PickFirstLoadBalancerTest.java
│ │ │ ├── ProxyDetectorImplTest.java
│ │ │ ├── ReadableBuffersArrayTest.java
│ │ │ ├── ReadableBuffersByteBufferTest.java
│ │ │ ├── ReadableBuffersTest.java
│ │ │ ├── ReflectionLongAdderCounterTest.java
│ │ │ ├── ReschedulerTest.java
│ │ │ ├── RetriableStreamTest.java
│ │ │ ├── RetryPolicyTest.java
│ │ │ ├── RetryingNameResolverTest.java
│ │ │ ├── SerializeReentrantCallsDirectExecutorTest.java
│ │ │ ├── SerializingExecutorTest.java
│ │ │ ├── ServerCallImplTest.java
│ │ │ ├── ServerImplBuilderTest.java
│ │ │ ├── ServerImplTest.java
│ │ │ ├── ServiceConfigErrorHandlingTest.java
│ │ │ ├── ServiceConfigStateTest.java
│ │ │ ├── ServiceConfigUtilTest.java
│ │ │ ├── SharedResourceHolderTest.java
│ │ │ ├── SpiffeUtilTest.java
│ │ │ └── TransportFrameUtilTest.java
│ └── resources
│ │ └── io
│ │ └── grpc
│ │ └── internal
│ │ ├── spiffebundle.json
│ │ ├── spiffebundle_corrupted_cert.json
│ │ ├── spiffebundle_duplicates.json
│ │ ├── spiffebundle_malformed.json
│ │ ├── spiffebundle_wrong_kid.json
│ │ ├── spiffebundle_wrong_kty.json
│ │ ├── spiffebundle_wrong_multi_certs.json
│ │ ├── spiffebundle_wrong_root.json
│ │ ├── spiffebundle_wrong_seq_type.json
│ │ ├── spiffebundle_wrong_use.json
│ │ ├── 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
│ ├── PickFirstLoadBalancerProviderAccessor.java
│ ├── ReadableBufferTestBase.java
│ ├── SingleMessageProducer.java
│ ├── TestUtils.java
│ ├── WritableBufferAllocatorTestBase.java
│ └── WritableBufferTestBase.java
├── cronet
├── .gitignore
├── README.md
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── cronet
│ │ ├── CronetChannelBuilder.java
│ │ ├── CronetClientStream.java
│ │ ├── CronetClientTransport.java
│ │ ├── CronetWritableBuffer.java
│ │ ├── CronetWritableBufferAllocator.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
├── .bazelrc
├── BUILD.bazel
├── MODULE.bazel
├── README.md
├── WORKSPACE
├── WORKSPACE.bzlmod
├── android
│ ├── README.md
│ ├── 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
│ │ ├── .gitignore
│ │ ├── 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
│ ├── routeguide
│ │ ├── .gitignore
│ │ ├── app
│ │ │ ├── .gitignore
│ │ │ ├── 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
│ │ ├── README.md
│ │ ├── 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
│ │ └── settings.gradle
├── build.gradle
├── example-alts
│ ├── BUILD.bazel
│ ├── README.md
│ ├── build.gradle
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── alts
│ │ │ ├── HelloWorldAltsClient.java
│ │ │ └── HelloWorldAltsServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
├── example-debug
│ ├── README.md
│ ├── build.gradle
│ ├── pom.xml
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── debug
│ │ │ ├── HelloWorldDebuggableClient.java
│ │ │ ├── HostnameDebuggableServer.java
│ │ │ └── HostnameGreeter.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
├── example-dualstack
│ ├── README.md
│ ├── build.gradle
│ ├── pom.xml
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── dualstack
│ │ │ ├── DualStackClient.java
│ │ │ ├── DualStackServer.java
│ │ │ ├── ExampleDualStackNameResolver.java
│ │ │ └── ExampleDualStackNameResolverProvider.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
├── example-gauth
│ ├── BUILD.bazel
│ ├── README.md
│ ├── build.gradle
│ ├── pom.xml
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ └── java
│ │ └── io
│ │ └── grpc
│ │ └── examples
│ │ └── googleAuth
│ │ └── GoogleAuthClient.java
├── example-gcp-csm-observability
│ ├── README.md
│ ├── build.gradle
│ ├── csm-client.Dockerfile
│ ├── csm-server.Dockerfile
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── csmobservability
│ │ │ ├── CsmObservabilityClient.java
│ │ │ └── CsmObservabilityServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
├── example-gcp-observability
│ ├── README.md
│ ├── build.gradle
│ ├── 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
│ ├── README.md
│ ├── build.gradle
│ ├── pom.xml
│ ├── 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
│ ├── README.md
│ ├── build.gradle
│ ├── pom.xml
│ ├── 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
│ ├── README.md
│ ├── build.gradle
│ ├── pom.xml
│ ├── 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-opentelemetry
│ ├── README.md
│ ├── build.gradle
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── example
│ │ │ └── opentelemetry
│ │ │ ├── OpenTelemetryClient.java
│ │ │ ├── OpenTelemetryServer.java
│ │ │ └── logging
│ │ │ ├── LoggingOpenTelemetryClient.java
│ │ │ └── LoggingOpenTelemetryServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
├── example-orca
│ ├── README.md
│ ├── build.gradle
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── orca
│ │ │ ├── CustomBackendMetricsClient.java
│ │ │ ├── CustomBackendMetricsLoadBalancerProvider.java
│ │ │ └── CustomBackendMetricsServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
├── example-reflection
│ ├── README.md
│ ├── build.gradle
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── reflection
│ │ │ └── ReflectionServer.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
├── example-servlet
│ ├── README.md
│ ├── build.gradle
│ ├── 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
│ ├── README.md
│ ├── build.gradle
│ ├── pom.xml
│ ├── settings.gradle
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ └── helloworldtls
│ │ │ ├── HelloWorldClientTls.java
│ │ │ └── HelloWorldServerTls.java
│ │ └── proto
│ │ └── helloworld
│ │ └── helloworld.proto
├── example-xds
│ ├── README.md
│ ├── build.gradle
│ ├── 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
├── settings.gradle
└── src
│ ├── main
│ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── examples
│ │ │ ├── advanced
│ │ │ ├── HelloJsonClient.java
│ │ │ ├── HelloJsonServer.java
│ │ │ ├── JsonMarshaller.java
│ │ │ └── README.md
│ │ │ ├── cancellation
│ │ │ ├── CancellationClient.java
│ │ │ ├── CancellationServer.java
│ │ │ └── README.md
│ │ │ ├── customloadbalance
│ │ │ ├── CustomLoadBalanceClient.java
│ │ │ ├── README.md
│ │ │ ├── ShufflingPickFirstLoadBalancer.java
│ │ │ └── ShufflingPickFirstLoadBalancerProvider.java
│ │ │ ├── deadline
│ │ │ ├── DeadlineClient.java
│ │ │ ├── DeadlineServer.java
│ │ │ └── README.md
│ │ │ ├── errordetails
│ │ │ ├── ErrorDetailsExample.java
│ │ │ └── README.md
│ │ │ ├── errorhandling
│ │ │ ├── DetailErrorSample.java
│ │ │ ├── ErrorHandlingClient.java
│ │ │ └── README.md
│ │ │ ├── experimental
│ │ │ ├── CompressingHelloWorldClient.java
│ │ │ ├── CompressingHelloWorldServerAllMethods.java
│ │ │ ├── CompressingHelloWorldServerPerMethod.java
│ │ │ └── README.md
│ │ │ ├── grpcproxy
│ │ │ ├── GrpcProxy.java
│ │ │ └── README.md
│ │ │ ├── header
│ │ │ ├── CustomHeaderClient.java
│ │ │ ├── CustomHeaderServer.java
│ │ │ ├── HeaderClientInterceptor.java
│ │ │ ├── HeaderServerInterceptor.java
│ │ │ └── README.md
│ │ │ ├── healthservice
│ │ │ ├── HealthServiceClient.java
│ │ │ ├── HealthServiceServer.java
│ │ │ └── README.md
│ │ │ ├── hedging
│ │ │ ├── HedgingHelloWorldClient.java
│ │ │ ├── HedgingHelloWorldServer.java
│ │ │ └── README.md
│ │ │ ├── helloworld
│ │ │ ├── HelloWorldClient.java
│ │ │ ├── HelloWorldServer.java
│ │ │ └── README.md
│ │ │ ├── keepalive
│ │ │ ├── KeepAliveClient.java
│ │ │ ├── KeepAliveServer.java
│ │ │ └── README.md
│ │ │ ├── loadbalance
│ │ │ ├── ExampleNameResolver.java
│ │ │ ├── ExampleNameResolverProvider.java
│ │ │ ├── LoadBalanceClient.java
│ │ │ ├── LoadBalanceServer.java
│ │ │ └── README.md
│ │ │ ├── manualflowcontrol
│ │ │ ├── BidiBlockingClient.java
│ │ │ ├── ManualFlowControlClient.java
│ │ │ ├── ManualFlowControlServer.java
│ │ │ └── README.md
│ │ │ ├── multiplex
│ │ │ ├── EchoService.java
│ │ │ ├── MultiplexingServer.java
│ │ │ ├── README.md
│ │ │ └── SharingClient.java
│ │ │ ├── nameresolve
│ │ │ ├── ExampleNameResolver.java
│ │ │ ├── ExampleNameResolverProvider.java
│ │ │ ├── NameResolveClient.java
│ │ │ ├── NameResolveServer.java
│ │ │ └── README.md
│ │ │ ├── preserialized
│ │ │ ├── ByteArrayMarshaller.java
│ │ │ ├── PreSerializedClient.java
│ │ │ ├── PreSerializedServer.java
│ │ │ └── README.md
│ │ │ ├── retrying
│ │ │ ├── README.md
│ │ │ ├── RetryingHelloWorldClient.java
│ │ │ └── RetryingHelloWorldServer.java
│ │ │ ├── routeguide
│ │ │ ├── README.md
│ │ │ ├── RouteGuideClient.java
│ │ │ ├── RouteGuideServer.java
│ │ │ └── RouteGuideUtil.java
│ │ │ └── waitforready
│ │ │ ├── README.md
│ │ │ └── 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
├── gae-interop-testing
├── README.md
└── gae-jdk8
│ ├── build.gradle
│ └── src
│ └── main
│ ├── java
│ └── io
│ │ └── grpc
│ │ └── testing
│ │ └── integration
│ │ ├── LongLivedChannel.java
│ │ └── NettyClientInteropServlet.java
│ └── webapp
│ └── WEB-INF
│ ├── appengine-web.xml
│ └── web.xml
├── gcp-csm-observability
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── gcp
│ │ └── csm
│ │ └── observability
│ │ ├── CsmObservability.java
│ │ └── MetadataExchanger.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── gcp
│ └── csm
│ └── observability
│ ├── CsmObservabilityTest.java
│ └── MetadataExchangerTest.java
├── 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
│ │ │ ├── ObservabilityConfig.java
│ │ │ ├── ObservabilityConfigImpl.java
│ │ │ ├── interceptors
│ │ │ ├── ConditionalClientInterceptor.java
│ │ │ ├── ConfigFilterHelper.java
│ │ │ ├── InetAddressUtil.java
│ │ │ ├── InternalLoggingChannelInterceptor.java
│ │ │ ├── InternalLoggingServerInterceptor.java
│ │ │ └── LogHelper.java
│ │ │ └── logging
│ │ │ ├── GcpLogSink.java
│ │ │ ├── Sink.java
│ │ │ └── TraceLoggingHelper.java
│ └── proto
│ │ └── grpc
│ │ └── observabilitylog
│ │ └── v1
│ │ └── observabilitylog.proto
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── gcp
│ └── observability
│ ├── GcpObservabilityTest.java
│ ├── LoggingTest.java
│ ├── MetricsTest.java
│ ├── ObservabilityConfigImplTest.java
│ ├── ObservabilityTestHelper.java
│ ├── TracesTest.java
│ ├── interceptors
│ ├── ConditionalClientInterceptorTest.java
│ ├── ConfigFilterHelperTest.java
│ ├── InternalLoggingChannelInterceptorTest.java
│ ├── InternalLoggingServerInterceptorTest.java
│ └── LogHelperTest.java
│ └── logging
│ ├── GcpLogSinkTest.java
│ └── TraceLoggingHelperTest.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
├── gradle
├── javadoc
│ ├── docs.oracle.com-javase-8-docs-api
│ │ └── package-list
│ ├── netty.io-4.1-api
│ │ └── package-list
│ ├── protobuf.dev-reference-java-api-docs
│ │ └── package-list
│ └── square.github.io-okhttp-2.x-okhttp
│ │ └── package-list
├── 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
│ │ ├── InProcessServer.java
│ │ ├── InProcessServerBuilder.java
│ │ ├── InProcessSocketAddress.java
│ │ ├── InProcessTransport.java
│ │ ├── InternalInProcessChannelBuilder.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
├── 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
│ │ │ ├── SoakClient.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
│ ├── Http2Test.java
│ ├── InProcessTest.java
│ ├── ManagedChannelBuilderSpiTest.java
│ ├── ManagedChannelImplIntegrationTest.java
│ ├── MoreInProcessTest.java
│ ├── NettyFlowControlTest.java
│ ├── OpenTelemetryContextPropagationTest.java
│ ├── ProxyTest.java
│ ├── RetryTest.java
│ ├── RpcBehaviorLoadBalancerProviderTest.java
│ ├── StressTestClientTest.java
│ ├── TestCasesTest.java
│ ├── TestServiceClientTest.java
│ ├── TrafficControlProxy.java
│ ├── TransportCompressionTest.java
│ └── XdsTestServerTest.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
│ ├── LICENSE
│ ├── import.sh
│ └── src
│ └── main
│ └── proto
│ └── test
│ └── echo
│ └── proto
│ └── echo.proto
├── java_grpc_library.bzl
├── 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
│ │ │ ├── NettyServer.java
│ │ │ ├── NettyServerBuilder.java
│ │ │ ├── NettyServerCredentials.java
│ │ │ ├── NettyServerHandler.java
│ │ │ ├── NettyServerProvider.java
│ │ │ ├── NettyServerStream.java
│ │ │ ├── NettyServerTransport.java
│ │ │ ├── NettySocketSupport.java
│ │ │ ├── NettySslContextChannelCredentials.java
│ │ │ ├── NettySslContextServerCredentials.java
│ │ │ ├── NettyWritableBuffer.java
│ │ │ ├── NettyWritableBufferAllocator.java
│ │ │ ├── NoopSslEngine.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
│ │ │ ├── X509AuthorityVerifier.java
│ │ │ └── package-info.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
├── 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
│ │ │ │ ├── NoopSslSocket.java
│ │ │ │ ├── OkHttpChannelBuilder.java
│ │ │ │ ├── OkHttpChannelProvider.java
│ │ │ │ ├── OkHttpClientStream.java
│ │ │ │ ├── OkHttpClientTransport.java
│ │ │ │ ├── OkHttpFrameLogger.java
│ │ │ │ ├── OkHttpProtocolNegotiator.java
│ │ │ │ ├── OkHttpReadableBuffer.java
│ │ │ │ ├── OkHttpServer.java
│ │ │ │ ├── OkHttpServerBuilder.java
│ │ │ │ ├── OkHttpServerProvider.java
│ │ │ │ ├── OkHttpServerStream.java
│ │ │ │ ├── OkHttpServerTransport.java
│ │ │ │ ├── OkHttpSettingsUtil.java
│ │ │ │ ├── OkHttpTlsUpgrader.java
│ │ │ │ ├── OkHttpWritableBuffer.java
│ │ │ │ ├── OkHttpWritableBufferAllocator.java
│ │ │ │ ├── OutboundFlowController.java
│ │ │ │ ├── PlaintextHandshakerSocketFactory.java
│ │ │ │ ├── SslSocketFactoryChannelCredentials.java
│ │ │ │ ├── SslSocketFactoryServerCredentials.java
│ │ │ │ ├── TlsServerHandshakerSocketFactory.java
│ │ │ │ ├── Utils.java
│ │ │ │ └── package-info.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
│ │ ├── Headers.java
│ │ ├── OkHostnameVerifier.java
│ │ ├── OptionalMethod.java
│ │ ├── Platform.java
│ │ ├── Protocol.java
│ │ ├── StatusLine.java
│ │ ├── TlsVersion.java
│ │ ├── Util.java
│ │ ├── framed
│ │ ├── ErrorCode.java
│ │ ├── FrameReader.java
│ │ ├── FrameWriter.java
│ │ ├── Header.java
│ │ ├── HeadersMode.java
│ │ ├── Hpack.java
│ │ ├── Http2.java
│ │ ├── Huffman.java
│ │ ├── Settings.java
│ │ └── Variant.java
│ │ └── proxy
│ │ ├── HttpUrl.java
│ │ └── Request.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── okhttp
│ └── internal
│ └── framed
│ ├── HpackTest.java
│ └── Http2Test.java
├── opentelemetry
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── opentelemetry
│ │ ├── BinaryFormat.java
│ │ ├── GrpcOpenTelemetry.java
│ │ ├── GrpcTraceBinContextPropagator.java
│ │ ├── InternalGrpcOpenTelemetry.java
│ │ ├── InternalOpenTelemetryPlugin.java
│ │ ├── MetadataGetter.java
│ │ ├── MetadataSetter.java
│ │ ├── OpenTelemetryMetricSink.java
│ │ ├── OpenTelemetryMetricsModule.java
│ │ ├── OpenTelemetryMetricsResource.java
│ │ ├── OpenTelemetryPlugin.java
│ │ ├── OpenTelemetryTracingModule.java
│ │ └── internal
│ │ └── OpenTelemetryConstants.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── opentelemetry
│ ├── GrpcOpenTelemetryTest.java
│ ├── GrpcTraceBinContextPropagatorTest.java
│ ├── MetadataGetterTest.java
│ ├── MetadataSetterTest.java
│ ├── OpenTelemetryMetricSinkTest.java
│ ├── OpenTelemetryMetricsModuleTest.java
│ └── OpenTelemetryTracingModuleTest.java
├── protobuf-lite
├── BUILD.bazel
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── protobuf
│ │ └── lite
│ │ ├── ProtoInputStream.java
│ │ ├── ProtoLiteUtils.java
│ │ └── package-info.java
│ └── test
│ ├── java
│ └── io
│ │ └── grpc
│ │ └── protobuf
│ │ └── lite
│ │ └── ProtoLiteUtilsTest.java
│ └── proto
│ └── simple_recursive.proto
├── protobuf
├── BUILD.bazel
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── protobuf
│ │ ├── ProtoFileDescriptorSupplier.java
│ │ ├── ProtoMethodDescriptorSupplier.java
│ │ ├── ProtoServiceDescriptorSupplier.java
│ │ ├── ProtoUtils.java
│ │ ├── StatusProto.java
│ │ └── package-info.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── protobuf
│ ├── ProtoUtilsTest.java
│ └── StatusProtoTest.java
├── 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
│ │ │ ├── SubchannelStateManager.java
│ │ │ ├── SubchannelStateManagerImpl.java
│ │ │ └── Throttler.java
│ ├── proto
│ │ └── grpc
│ │ │ └── lookup
│ │ │ └── v1
│ │ │ ├── rls.proto
│ │ │ └── rls_config.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
├── s2a
├── BUILD.bazel
├── build.gradle
└── src
│ ├── main
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── s2a
│ │ ├── S2AChannelCredentials.java
│ │ └── internal
│ │ ├── channel
│ │ └── S2AHandshakerServiceChannel.java
│ │ └── handshaker
│ │ ├── ConnectionClosedException.java
│ │ ├── GetAuthenticationMechanisms.java
│ │ ├── ProtoUtil.java
│ │ ├── S2AConnectionException.java
│ │ ├── S2AIdentity.java
│ │ ├── S2APrivateKeyMethod.java
│ │ ├── S2AProtocolNegotiatorFactory.java
│ │ ├── S2AStub.java
│ │ ├── S2ATrustManager.java
│ │ ├── SslContextFactory.java
│ │ └── tokenmanager
│ │ ├── AccessTokenManager.java
│ │ ├── SingleTokenFetcher.java
│ │ └── TokenFetcher.java
│ └── test
│ ├── java
│ └── io
│ │ └── grpc
│ │ └── s2a
│ │ ├── IntegrationTest.java
│ │ ├── S2AChannelCredentialsTest.java
│ │ └── internal
│ │ ├── channel
│ │ └── S2AHandshakerServiceChannelTest.java
│ │ └── handshaker
│ │ ├── FakeS2AServer.java
│ │ ├── FakeS2AServerTest.java
│ │ ├── FakeWriter.java
│ │ ├── GetAuthenticationMechanismsTest.java
│ │ ├── ProtoUtilTest.java
│ │ ├── S2APrivateKeyMethodTest.java
│ │ ├── S2AProtocolNegotiatorFactoryTest.java
│ │ ├── S2AStubTest.java
│ │ ├── S2ATrustManagerTest.java
│ │ ├── SslContextFactoryTest.java
│ │ └── tokenmanager
│ │ └── SingleTokenAccessTokenManagerTest.java
│ └── resources
│ ├── README.md
│ ├── cert_chain_ec.pem
│ ├── client_cert.pem
│ ├── client_key.pem
│ ├── config.cnf
│ ├── int_cert1_.cnf
│ ├── int_cert1_ec.pem
│ ├── int_cert2.cnf
│ ├── int_cert2_ec.pem
│ ├── int_key1_ec.pem
│ ├── int_key2_ec.pem
│ ├── leaf.cnf
│ ├── leaf_cert_ec.pem
│ ├── leaf_key_ec.pem
│ ├── root_cert.pem
│ ├── root_cert_ec.pem
│ ├── root_ec.cnf
│ ├── root_key.pem
│ ├── root_key_ec.pem
│ ├── server_cert.pem
│ └── server_key.pem
├── services
├── BUILD.bazel
├── build.gradle
└── src
│ ├── generated
│ ├── main
│ │ └── grpc
│ │ │ └── io
│ │ │ └── grpc
│ │ │ ├── channelz
│ │ │ └── v1
│ │ │ │ └── ChannelzGrpc.java
│ │ │ ├── health
│ │ │ └── v1
│ │ │ │ └── HealthGrpc.java
│ │ │ └── reflection
│ │ │ ├── v1
│ │ │ └── ServerReflectionGrpc.java
│ │ │ └── v1alpha
│ │ │ └── ServerReflectionGrpc.java
│ └── test
│ │ └── grpc
│ │ └── io
│ │ └── grpc
│ │ └── reflection
│ │ └── testing
│ │ ├── AnotherDynamicServiceGrpc.java
│ │ ├── AnotherReflectableServiceGrpc.java
│ │ ├── DynamicServiceGrpc.java
│ │ └── ReflectableServiceGrpc.java
│ ├── main
│ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ ├── protobuf
│ │ │ └── services
│ │ │ │ ├── BinaryLogProvider.java
│ │ │ │ ├── BinaryLogProviderImpl.java
│ │ │ │ ├── BinaryLogSink.java
│ │ │ │ ├── BinaryLogs.java
│ │ │ │ ├── BinlogHelper.java
│ │ │ │ ├── ChannelzProtoUtil.java
│ │ │ │ ├── ChannelzService.java
│ │ │ │ ├── HealthCheckingLoadBalancerFactory.java
│ │ │ │ ├── HealthCheckingLoadBalancerUtil.java
│ │ │ │ ├── HealthServiceImpl.java
│ │ │ │ ├── HealthStatusManager.java
│ │ │ │ ├── InetAddressUtil.java
│ │ │ │ ├── ProtoReflectionService.java
│ │ │ │ ├── ProtoReflectionServiceV1.java
│ │ │ │ ├── TempFileSink.java
│ │ │ │ ├── internal
│ │ │ │ └── HealthCheckingRoundRobinLoadBalancerProvider.java
│ │ │ │ └── package-info.java
│ │ │ └── services
│ │ │ ├── AdminInterface.java
│ │ │ ├── CallMetricRecorder.java
│ │ │ ├── ChannelzService.java
│ │ │ ├── HealthStatusManager.java
│ │ │ ├── InternalCallMetricRecorder.java
│ │ │ ├── InternalMetricRecorder.java
│ │ │ ├── MetricRecorder.java
│ │ │ ├── MetricRecorderHelper.java
│ │ │ ├── MetricReport.java
│ │ │ └── package-info.java
│ ├── proto
│ │ └── grpc
│ │ │ ├── binlog
│ │ │ └── v1
│ │ │ │ └── binarylog.proto
│ │ │ ├── channelz
│ │ │ └── v1
│ │ │ │ └── channelz.proto
│ │ │ ├── health
│ │ │ └── v1
│ │ │ │ └── health.proto
│ │ │ └── reflection
│ │ │ ├── v1
│ │ │ └── reflection.proto
│ │ │ └── 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
│ │ │ ├── ProtoReflectionServiceTest.java
│ │ │ ├── ProtoReflectionServiceV1Test.java
│ │ │ ├── TempFileSinkTest.java
│ │ │ └── internal
│ │ │ └── HealthCheckingRoundRobinLoadBalancerProviderTest.java
│ │ └── services
│ │ ├── AdminInterfaceChannelzTest.java
│ │ └── CallMetricRecorderTest.java
│ └── proto
│ └── io
│ └── grpc
│ └── reflection
│ └── testing
│ ├── dynamic_reflection_test.proto
│ ├── dynamic_reflection_test_depth_two.proto
│ ├── reflection_test.proto
│ ├── reflection_test_depth_three.proto
│ ├── reflection_test_depth_two.proto
│ └── reflection_test_depth_two_alternate.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
│ │ ├── ServletAdapter.java
│ │ ├── ServletServerBuilder.java
│ │ ├── ServletServerStream.java
│ │ └── package-info.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
│ │ ├── BlockingClientCall.java
│ │ ├── CallStreamObserver.java
│ │ ├── ClientCallStreamObserver.java
│ │ ├── ClientCalls.java
│ │ ├── ClientResponseObserver.java
│ │ ├── InternalClientCalls.java
│ │ ├── MetadataUtils.java
│ │ ├── ServerCallStreamObserver.java
│ │ ├── ServerCalls.java
│ │ ├── StreamObserver.java
│ │ ├── StreamObservers.java
│ │ ├── annotations
│ │ ├── GrpcGenerated.java
│ │ └── RpcMethod.java
│ │ └── package-info.java
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── stub
│ ├── AbstractAsyncStubTest.java
│ ├── AbstractBlockingStubTest.java
│ ├── AbstractFutureStubTest.java
│ ├── AbstractStubTest.java
│ ├── BaseAbstractStubTest.java
│ ├── BlockingClientCallTest.java
│ ├── ClientCallsTest.java
│ ├── MetadataUtilsTest.java
│ ├── ServerCallsTest.java
│ └── StreamObserversTest.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
├── 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
│ │ │ ├── StreamRecorder.java
│ │ │ ├── TestMethodDescriptors.java
│ │ │ ├── TestUtils.java
│ │ │ ├── TlsTesting.java
│ │ │ └── package-info.java
│ └── resources
│ │ └── certs
│ │ ├── README
│ │ ├── badclient.key
│ │ ├── badclient.pem
│ │ ├── badserver.key
│ │ ├── badserver.pem
│ │ ├── ca-openssl.cnf
│ │ ├── ca.key
│ │ ├── ca.pem
│ │ ├── client.key
│ │ ├── client.pem
│ │ ├── client_spiffe.pem
│ │ ├── ecdsa.key
│ │ ├── index.txt
│ │ ├── openssl.cnf
│ │ ├── server0.key
│ │ ├── server0.pem
│ │ ├── server1-openssl.cnf
│ │ ├── server1.key
│ │ ├── server1.pem
│ │ ├── server1_spiffe.pem
│ │ ├── spiffe-openssl.cnf
│ │ ├── spiffe_cert.pem
│ │ ├── spiffe_multi_uri_san_cert.pem
│ │ ├── spiffebundle.json
│ │ └── spiffebundle1.json
│ └── test
│ └── java
│ └── io
│ └── grpc
│ └── testing
│ ├── GrpcCleanupRuleTest.java
│ ├── GrpcServerRuleTest.java
│ └── TlsTestingTest.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
│ │ │ ├── ForwardingLoadBalancer.java
│ │ │ ├── ForwardingLoadBalancerHelper.java
│ │ │ ├── ForwardingSubchannel.java
│ │ │ ├── GracefulSwitchLoadBalancer.java
│ │ │ ├── HealthProducerHelper.java
│ │ │ ├── MultiChildLoadBalancer.java
│ │ │ ├── MutableHandlerRegistry.java
│ │ │ ├── OutlierDetectionLoadBalancer.java
│ │ │ ├── OutlierDetectionLoadBalancerProvider.java
│ │ │ ├── RoundRobinLoadBalancer.java
│ │ │ ├── SecretRoundRobinLoadBalancerProvider.java
│ │ │ ├── TransmitStatusRuntimeExceptionInterceptor.java
│ │ │ └── package-info.java
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ └── io.grpc.LoadBalancerProvider
│ ├── test
│ └── java
│ │ └── io
│ │ └── grpc
│ │ └── util
│ │ ├── AdvancedTlsX509KeyManagerTest.java
│ │ ├── AdvancedTlsX509TrustManagerTest.java
│ │ ├── 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
│ └── GracefulSwitchLoadBalancerAccessor.java
└── xds
├── BUILD.bazel
├── build.gradle
├── src
├── generated
│ └── thirdparty
│ │ └── grpc
│ │ ├── com
│ │ └── github
│ │ │ └── xds
│ │ │ └── service
│ │ │ └── orca
│ │ │ └── v3
│ │ │ └── OpenRcaServiceGrpc.java
│ │ └── io
│ │ └── envoyproxy
│ │ └── envoy
│ │ └── service
│ │ ├── discovery
│ │ └── v3
│ │ │ └── AggregatedDiscoveryServiceGrpc.java
│ │ ├── load_stats
│ │ └── v3
│ │ │ └── LoadReportingServiceGrpc.java
│ │ ├── rate_limit_quota
│ │ └── v3
│ │ │ └── RateLimitQuotaServiceGrpc.java
│ │ └── status
│ │ └── v3
│ │ └── ClientStatusDiscoveryServiceGrpc.java
├── main
│ ├── java
│ │ └── io
│ │ │ └── grpc
│ │ │ └── xds
│ │ │ ├── AddressFilter.java
│ │ │ ├── CdsLoadBalancer2.java
│ │ │ ├── CdsLoadBalancerProvider.java
│ │ │ ├── ClusterImplLoadBalancer.java
│ │ │ ├── ClusterImplLoadBalancerProvider.java
│ │ │ ├── ClusterManagerLoadBalancer.java
│ │ │ ├── ClusterManagerLoadBalancerProvider.java
│ │ │ ├── ClusterResolverLoadBalancer.java
│ │ │ ├── ClusterResolverLoadBalancerProvider.java
│ │ │ ├── ClusterSpecifierPlugin.java
│ │ │ ├── ClusterSpecifierPluginRegistry.java
│ │ │ ├── ConfigOrError.java
│ │ │ ├── CsdsService.java
│ │ │ ├── Endpoints.java
│ │ │ ├── EnvoyServerProtoData.java
│ │ │ ├── FaultConfig.java
│ │ │ ├── FaultFilter.java
│ │ │ ├── Filter.java
│ │ │ ├── FilterChainMatchingProtocolNegotiators.java
│ │ │ ├── FilterChainSelectorManager.java
│ │ │ ├── FilterRegistry.java
│ │ │ ├── GcpAuthenticationFilter.java
│ │ │ ├── GrpcBootstrapperImpl.java
│ │ │ ├── GrpcXdsTransportFactory.java
│ │ │ ├── HttpConnectionManager.java
│ │ │ ├── InternalGrpcBootstrapperImpl.java
│ │ │ ├── InternalRbacFilter.java
│ │ │ ├── InternalSharedXdsClientPoolProvider.java
│ │ │ ├── InternalXdsAttributes.java
│ │ │ ├── LazyLoadBalancer.java
│ │ │ ├── LeastRequestLoadBalancer.java
│ │ │ ├── LeastRequestLoadBalancerProvider.java
│ │ │ ├── LoadBalancerConfigFactory.java
│ │ │ ├── MessagePrinter.java
│ │ │ ├── MetadataRegistry.java
│ │ │ ├── PriorityLoadBalancer.java
│ │ │ ├── PriorityLoadBalancerProvider.java
│ │ │ ├── RbacConfig.java
│ │ │ ├── RbacFilter.java
│ │ │ ├── RingHashLoadBalancer.java
│ │ │ ├── RingHashLoadBalancerProvider.java
│ │ │ ├── RingHashOptions.java
│ │ │ ├── RouteLookupServiceClusterSpecifierPlugin.java
│ │ │ ├── RouterFilter.java
│ │ │ ├── RoutingUtils.java
│ │ │ ├── SharedCallCounterMap.java
│ │ │ ├── SharedXdsClientPoolProvider.java
│ │ │ ├── StructOrError.java
│ │ │ ├── ThreadSafeRandom.java
│ │ │ ├── TlsContextManager.java
│ │ │ ├── VirtualHost.java
│ │ │ ├── WeightedRandomPicker.java
│ │ │ ├── WeightedRoundRobinLoadBalancer.java
│ │ │ ├── WeightedRoundRobinLoadBalancerProvider.java
│ │ │ ├── WeightedTargetLoadBalancer.java
│ │ │ ├── WeightedTargetLoadBalancerProvider.java
│ │ │ ├── WrrLocalityLoadBalancer.java
│ │ │ ├── WrrLocalityLoadBalancerProvider.java
│ │ │ ├── XdsAttributes.java
│ │ │ ├── XdsChannelCredentials.java
│ │ │ ├── XdsClientMetricReporterImpl.java
│ │ │ ├── XdsClientPoolFactory.java
│ │ │ ├── XdsClusterResource.java
│ │ │ ├── XdsConfig.java
│ │ │ ├── XdsCredentialsProvider.java
│ │ │ ├── XdsCredentialsRegistry.java
│ │ │ ├── XdsDependencyManager.java
│ │ │ ├── XdsEndpointResource.java
│ │ │ ├── XdsLbPolicies.java
│ │ │ ├── XdsListenerResource.java
│ │ │ ├── XdsNameResolver.java
│ │ │ ├── XdsNameResolverProvider.java
│ │ │ ├── XdsRouteConfigureResource.java
│ │ │ ├── XdsServerBuilder.java
│ │ │ ├── XdsServerCredentials.java
│ │ │ ├── XdsServerWrapper.java
│ │ │ ├── client
│ │ │ ├── Bootstrapper.java
│ │ │ ├── BootstrapperImpl.java
│ │ │ ├── ControlPlaneClient.java
│ │ │ ├── EnvoyProtoData.java
│ │ │ ├── LoadReportClient.java
│ │ │ ├── LoadStatsManager2.java
│ │ │ ├── Locality.java
│ │ │ ├── MessagePrettyPrinter.java
│ │ │ ├── ReferenceCounted.java
│ │ │ ├── Stats.java
│ │ │ ├── XdsClient.java
│ │ │ ├── XdsClientImpl.java
│ │ │ ├── XdsClientMetricReporter.java
│ │ │ ├── XdsInitializationException.java
│ │ │ ├── XdsLogger.java
│ │ │ ├── XdsResourceType.java
│ │ │ └── XdsTransportFactory.java
│ │ │ ├── internal
│ │ │ ├── GoogleDefaultXdsCredentialsProvider.java
│ │ │ ├── InsecureXdsCredentialsProvider.java
│ │ │ ├── MatcherParser.java
│ │ │ ├── Matchers.java
│ │ │ ├── ProtobufJsonConverter.java
│ │ │ ├── TlsXdsCredentialsProvider.java
│ │ │ ├── package-info.java
│ │ │ ├── rbac
│ │ │ │ └── engine
│ │ │ │ │ └── GrpcAuthorizationEngine.java
│ │ │ └── security
│ │ │ │ ├── ClientSslContextProviderFactory.java
│ │ │ │ ├── Closeable.java
│ │ │ │ ├── CommonTlsContextUtil.java
│ │ │ │ ├── DynamicSslContextProvider.java
│ │ │ │ ├── ReferenceCountingMap.java
│ │ │ │ ├── SecurityProtocolNegotiators.java
│ │ │ │ ├── ServerSslContextProviderFactory.java
│ │ │ │ ├── SslContextProvider.java
│ │ │ │ ├── SslContextProviderSupplier.java
│ │ │ │ ├── TlsContextManagerImpl.java
│ │ │ │ ├── certprovider
│ │ │ │ ├── CertProviderClientSslContextProvider.java
│ │ │ │ ├── CertProviderClientSslContextProviderFactory.java
│ │ │ │ ├── CertProviderServerSslContextProvider.java
│ │ │ │ ├── CertProviderServerSslContextProviderFactory.java
│ │ │ │ ├── CertProviderSslContextProvider.java
│ │ │ │ ├── CertificateProvider.java
│ │ │ │ ├── CertificateProviderProvider.java
│ │ │ │ ├── CertificateProviderRegistry.java
│ │ │ │ ├── CertificateProviderStore.java
│ │ │ │ ├── FileWatcherCertificateProvider.java
│ │ │ │ └── FileWatcherCertificateProviderProvider.java
│ │ │ │ └── trust
│ │ │ │ ├── CertificateUtils.java
│ │ │ │ ├── XdsTrustManagerFactory.java
│ │ │ │ └── XdsX509TrustManager.java
│ │ │ ├── orca
│ │ │ ├── OrcaMetricReportingServerInterceptor.java
│ │ │ ├── OrcaOobUtil.java
│ │ │ ├── OrcaPerRequestUtil.java
│ │ │ └── OrcaServiceImpl.java
│ │ │ └── package-info.java
│ └── resources
│ │ └── META-INF
│ │ └── services
│ │ ├── io.grpc.LoadBalancerProvider
│ │ ├── io.grpc.NameResolverProvider
│ │ └── io.grpc.xds.XdsCredentialsProvider
└── test
│ └── java
│ └── io
│ └── grpc
│ └── xds
│ ├── AddressFilterTest.java
│ ├── CdsLoadBalancer2Test.java
│ ├── CdsLoadBalancerProviderTest.java
│ ├── ClusterImplLoadBalancerProviderTest.java
│ ├── ClusterImplLoadBalancerTest.java
│ ├── ClusterManagerLoadBalancerProviderTest.java
│ ├── ClusterManagerLoadBalancerTest.java
│ ├── ClusterResolverLoadBalancerProviderTest.java
│ ├── ClusterResolverLoadBalancerTest.java
│ ├── ClusterSpecifierPluginRegistryTest.java
│ ├── ControlPlaneRule.java
│ ├── CsdsServiceTest.java
│ ├── DataPlaneRule.java
│ ├── FakeControlPlaneXdsIntegrationTest.java
│ ├── FaultFilterTest.java
│ ├── FilterChainMatchingProtocolNegotiatorsTest.java
│ ├── FilterChainSelectorManagerTest.java
│ ├── GcpAuthenticationFilterTest.java
│ ├── GrpcBootstrapperImplTest.java
│ ├── GrpcXdsClientImplDataTest.java
│ ├── GrpcXdsClientImplTestBase.java
│ ├── GrpcXdsClientImplV3Test.java
│ ├── GrpcXdsTransportFactoryTest.java
│ ├── LeastRequestLoadBalancerProviderTest.java
│ ├── LeastRequestLoadBalancerTest.java
│ ├── LoadBalancerConfigFactoryTest.java
│ ├── LoadReportClientTest.java
│ ├── MessagePrinterTest.java
│ ├── MetadataLoadBalancerProvider.java
│ ├── PriorityLoadBalancerProviderTest.java
│ ├── PriorityLoadBalancerTest.java
│ ├── RbacFilterTest.java
│ ├── RingHashLoadBalancerProviderTest.java
│ ├── RingHashLoadBalancerTest.java
│ ├── RouteLookupServiceClusterSpecifierPluginTest.java
│ ├── RouterFilterTest.java
│ ├── RoutingUtilsTest.java
│ ├── SharedCallCounterMapTest.java
│ ├── SharedXdsClientPoolProviderTest.java
│ ├── StatefulFilter.java
│ ├── WeightedRandomPickerTest.java
│ ├── WeightedRoundRobinLoadBalancerProviderTest.java
│ ├── WeightedRoundRobinLoadBalancerTest.java
│ ├── WeightedTargetLoadBalancerProviderTest.java
│ ├── WeightedTargetLoadBalancerTest.java
│ ├── WrrLocalityLoadBalancerProviderTest.java
│ ├── WrrLocalityLoadBalancerTest.java
│ ├── XdsClientFallbackTest.java
│ ├── XdsClientFederationTest.java
│ ├── XdsClientMetricReporterImplTest.java
│ ├── XdsClientWrapperForServerSdsTestMisc.java
│ ├── XdsCredentialsRegistryTest.java
│ ├── XdsDependencyManagerTest.java
│ ├── XdsNameResolverProviderTest.java
│ ├── XdsNameResolverTest.java
│ ├── XdsSecurityClientServerTest.java
│ ├── XdsServerBuilderTest.java
│ ├── XdsServerTestHelper.java
│ ├── XdsServerWrapperTest.java
│ ├── XdsTestControlPlaneService.java
│ ├── XdsTestLoadReportingService.java
│ ├── XdsTestUtils.java
│ ├── client
│ ├── CommonBootstrapperTestUtils.java
│ ├── EnvoyProtoDataTest.java
│ └── LoadStatsManager2Test.java
│ ├── internal
│ ├── GoogleDefaultXdsCredentialsProviderTest.java
│ ├── InsecureXdsCredentialsProviderTest.java
│ ├── MatcherTest.java
│ ├── ProtobufJsonConverterTest.java
│ ├── TlsXdsCredentialsProviderTest.java
│ ├── rbac
│ │ └── engine
│ │ │ └── GrpcAuthorizationEngineTest.java
│ └── security
│ │ ├── ClientSslContextProviderFactoryTest.java
│ │ ├── CommonTlsContextTestsUtil.java
│ │ ├── ReferenceCountingMapTest.java
│ │ ├── SecurityProtocolNegotiatorsTest.java
│ │ ├── ServerSslContextProviderFactoryTest.java
│ │ ├── SslContextProviderSupplierTest.java
│ │ ├── TlsContextManagerTest.java
│ │ ├── certprovider
│ │ ├── CertProviderClientSslContextProviderTest.java
│ │ ├── CertProviderServerSslContextProviderTest.java
│ │ ├── CertificateProviderStoreTest.java
│ │ ├── CommonCertProviderTestUtils.java
│ │ ├── FileWatcherCertificateProviderProviderTest.java
│ │ ├── FileWatcherCertificateProviderTest.java
│ │ └── TestCertificateProvider.java
│ │ └── trust
│ │ ├── XdsTrustManagerFactoryTest.java
│ │ └── XdsX509TrustManagerTest.java
│ └── orca
│ ├── OrcaMetricReportingServerInterceptorTest.java
│ ├── OrcaOobUtilTest.java
│ ├── OrcaPerRequestUtilTest.java
│ └── OrcaServiceImplTest.java
└── third_party
├── cel-spec
├── LICENSE
├── import.sh
└── src
│ └── main
│ └── proto
│ └── cel
│ └── expr
│ ├── checked.proto
│ └── syntax.proto
├── envoy
├── LICENSE
├── NOTICE
├── import.sh
└── src
│ └── main
│ └── proto
│ └── envoy
│ ├── admin
│ └── v3
│ │ ├── config_dump.proto
│ │ └── config_dump_shared.proto
│ ├── annotations
│ └── deprecation.proto
│ ├── config
│ ├── accesslog
│ │ └── v3
│ │ │ └── accesslog.proto
│ ├── bootstrap
│ │ └── v3
│ │ │ └── bootstrap.proto
│ ├── cluster
│ │ └── 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_cmsg_headers.proto
│ │ │ ├── socket_option.proto
│ │ │ ├── substitution_format_string.proto
│ │ │ └── udp_socket_config.proto
│ ├── endpoint
│ │ └── v3
│ │ │ ├── endpoint.proto
│ │ │ ├── endpoint_components.proto
│ │ │ └── load_report.proto
│ ├── listener
│ │ └── v3
│ │ │ ├── api_listener.proto
│ │ │ ├── listener.proto
│ │ │ ├── listener_components.proto
│ │ │ ├── quic_config.proto
│ │ │ └── udp_listener_config.proto
│ ├── metrics
│ │ └── v3
│ │ │ └── stats.proto
│ ├── overload
│ │ └── v3
│ │ │ └── overload.proto
│ ├── rbac
│ │ └── v3
│ │ │ └── rbac.proto
│ ├── route
│ │ └── v3
│ │ │ ├── route.proto
│ │ │ ├── route_components.proto
│ │ │ └── scoped_route.proto
│ └── trace
│ │ └── v3
│ │ ├── datadog.proto
│ │ ├── dynamic_ot.proto
│ │ ├── http_tracer.proto
│ │ ├── lightstep.proto
│ │ ├── opentelemetry.proto
│ │ ├── service.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
│ │ │ ├── gcp_authn
│ │ │ │ └── v3
│ │ │ │ │ └── gcp_authn.proto
│ │ │ ├── rate_limit_quota
│ │ │ │ └── v3
│ │ │ │ │ └── rate_limit_quota.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
│ │ ├── http_11_proxy
│ │ └── v3
│ │ │ └── upstream_http_11_connect.proto
│ │ └── tls
│ │ └── v3
│ │ ├── cert.proto
│ │ ├── common.proto
│ │ ├── secret.proto
│ │ └── tls.proto
│ ├── service
│ ├── discovery
│ │ └── v3
│ │ │ ├── ads.proto
│ │ │ └── discovery.proto
│ ├── load_stats
│ │ └── v3
│ │ │ └── lrs.proto
│ ├── rate_limit_quota
│ │ └── v3
│ │ │ └── rlqs.proto
│ └── status
│ │ └── v3
│ │ └── csds.proto
│ └── type
│ ├── http
│ └── v3
│ │ └── path_transformation.proto
│ ├── matcher
│ └── v3
│ │ ├── filter_state.proto
│ │ ├── http_inputs.proto
│ │ ├── metadata.proto
│ │ ├── node.proto
│ │ ├── number.proto
│ │ ├── path.proto
│ │ ├── regex.proto
│ │ ├── string.proto
│ │ ├── struct.proto
│ │ └── value.proto
│ ├── metadata
│ └── v3
│ │ └── metadata.proto
│ ├── tracing
│ └── v3
│ │ └── custom_tag.proto
│ └── v3
│ ├── http.proto
│ ├── http_status.proto
│ ├── percent.proto
│ ├── range.proto
│ ├── ratelimit_strategy.proto
│ ├── ratelimit_unit.proto
│ ├── semantic_version.proto
│ └── token_bucket.proto
├── googleapis
├── LICENSE
├── import.sh
└── src
│ └── main
│ └── proto
│ └── google
│ └── api
│ └── expr
│ └── v1alpha1
│ ├── checked.proto
│ └── syntax.proto
├── protoc-gen-validate
├── LICENSE
├── NOTICE
├── import.sh
└── src
│ └── main
│ └── proto
│ └── validate
│ └── validate.proto
├── xds
├── LICENSE
├── import.sh
└── 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
│ │ ├── cel.proto
│ │ ├── http_inputs.proto
│ │ ├── matcher.proto
│ │ ├── regex.proto
│ │ └── string.proto
│ └── v3
│ ├── cel.proto
│ └── typed_struct.proto
└── zero-allocation-hashing
├── LICENSE
├── NOTICE
├── main
└── java
│ └── io
│ └── grpc
│ └── xds
│ └── XxHash64.java
└── test
└── java
└── io
└── grpc
└── xds
└── XxHash64Test.java
/.bazelignore:
--------------------------------------------------------------------------------
1 | # examples has its own WORKSPACE. Ignore as part of this root WORKSPACE so that
2 | # we don't need to repeat dependencies.
3 | examples/
4 |
--------------------------------------------------------------------------------
/.bazelrc:
--------------------------------------------------------------------------------
1 | build --cxxopt=-std=c++14 --host_cxxopt=-std=c++14
2 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | TestService.java.txt -text
2 | TestServiceLite.java.txt -text
3 | TestDeprecatedService.java.txt -text
4 | TestDeprecatedServiceLite.java.txt -text
5 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/ask_question.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Ask a question
3 | about: Asking a question related gRPC-Java
4 | labels: question
5 | ---
6 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Report a bug
3 | about: Create a bug report to help us improve
4 | ---
5 |
6 |
7 |
8 | ### What version of gRPC-Java are you using?
9 |
10 | ### What is your environment?
11 |
12 |
13 | ### What did you expect to see?
14 |
15 | ### What did you see instead?
16 |
17 | ### Steps to reproduce the bug
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Request a feature
3 | about: Suggest an enhancement for gRPC
4 | labels: enhancement
5 | ---
6 |
7 |
8 |
9 | ### Is your feature request related to a problem?
10 |
11 |
12 | ### Describe the solution you'd like
13 |
14 |
15 | ### Describe alternatives you've considered
16 |
17 |
18 | ### Additional context
19 |
20 |
--------------------------------------------------------------------------------
/.github/workflows/branch-testing.yml:
--------------------------------------------------------------------------------
1 | name: GitHub Actions Branch Testing
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | - 'v1.*'
8 | schedule:
9 | - cron: '54 19 * * SUN' # weekly at a "random" time
10 |
11 | permissions:
12 | contents: read
13 |
14 | jobs:
15 | arm64:
16 | runs-on: ubuntu-24.04-arm
17 | strategy:
18 | matrix:
19 | jre: [17]
20 | fail-fast: false # Should swap to true if we grow a large matrix
21 |
22 | steps:
23 | - uses: actions/checkout@v4
24 | - uses: actions/setup-java@v4
25 | with:
26 | java-version: ${{ matrix.jre }}
27 | distribution: 'temurin'
28 |
29 | - name: Gradle cache
30 | uses: actions/cache@v4
31 | with:
32 | path: |
33 | ~/.gradle/caches
34 | ~/.gradle/wrapper
35 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
36 | restore-keys: |
37 | ${{ runner.os }}-gradle-
38 |
39 | - name: Build
40 | run: ./gradlew -Dorg.gradle.parallel=true -Dorg.gradle.jvmargs='-Xmx1g' -PskipAndroid=true -PskipCodegen=true -PerrorProne=false test
41 |
42 |
--------------------------------------------------------------------------------
/.github/workflows/gradle-wrapper-validation.yml:
--------------------------------------------------------------------------------
1 | name: "Validate Gradle Wrapper"
2 | on: [push, pull_request]
3 |
4 | permissions:
5 | contents: read
6 |
7 | jobs:
8 | validation:
9 | name: "Gradle wrapper validation"
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v4
13 | - uses: gradle/actions/wrapper-validation@v4
14 |
--------------------------------------------------------------------------------
/.github/workflows/lock.yml:
--------------------------------------------------------------------------------
1 | name: 'Lock Threads'
2 |
3 | on:
4 | workflow_dispatch:
5 | schedule:
6 | - cron: '37 3 * * *'
7 |
8 | permissions:
9 | issues: write
10 | pull-requests: write
11 |
12 | jobs:
13 | lock:
14 | runs-on: ubuntu-latest
15 | steps:
16 | - uses: dessant/lock-threads@v5
17 | with:
18 | github-token: ${{ github.token }}
19 | issue-inactive-days: 90
20 | pr-inactive-days: 90
21 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Gradle
2 | build
3 | gradle.properties
4 | .gradle
5 | local.properties
6 | out
7 |
8 | # Maven (examples)
9 | target
10 |
11 | # Bazel
12 | bazel-bin
13 | bazel-examples
14 | bazel-genfiles
15 | bazel-grpc-java
16 | bazel-out
17 | bazel-testlogs
18 | MODULE.bazel.lock
19 |
20 | # IntelliJ IDEA
21 | .idea
22 | *.iml
23 | *.ipr
24 | *.iws
25 | .ijwb
26 |
27 | # Eclipse
28 | .classpath
29 | .project
30 | .settings
31 | .gitignore
32 | bin
33 |
34 | # OS X
35 | .DS_Store
36 |
37 | # Emacs
38 | *~
39 | \#*\#
40 |
41 | # ARM tests
42 | qemu-arm-static
43 |
44 | # Temporary output dir for artifacts
45 | mvn-artifacts
46 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
1 | Google Inc.
2 |
--------------------------------------------------------------------------------
/CODE-OF-CONDUCT.md:
--------------------------------------------------------------------------------
1 | ## Community Code of Conduct
2 |
3 | gRPC follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).
4 |
--------------------------------------------------------------------------------
/GOVERNANCE.md:
--------------------------------------------------------------------------------
1 | This repository is governed by the gRPC organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md).
2 |
--------------------------------------------------------------------------------
/WORKSPACE.bzlmod:
--------------------------------------------------------------------------------
1 | # When using bzlmod this makes sure nothing from the legacy WORKSPACE is loaded
2 |
--------------------------------------------------------------------------------
/alts/src/main/java/io/grpc/alts/internal/TsiHandshakerFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc.alts.internal;
18 |
19 | import io.grpc.ChannelLogger;
20 | import javax.annotation.Nullable;
21 |
22 | /** Factory that manufactures instances of {@link TsiHandshaker}. */
23 | public interface TsiHandshakerFactory {
24 |
25 | /** Creates a new handshaker. */
26 | TsiHandshaker newHandshaker(@Nullable String authority, ChannelLogger logger);
27 | }
28 |
--------------------------------------------------------------------------------
/alts/src/test/java/io/grpc/alts/AltsServerBuilderTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc.alts;
18 |
19 | import org.junit.Test;
20 | import org.junit.runner.RunWith;
21 | import org.junit.runners.JUnit4;
22 |
23 | @RunWith(JUnit4.class)
24 | public final class AltsServerBuilderTest {
25 |
26 | @Test
27 | public void buildsNettyServer() throws Exception {
28 | AltsServerBuilder.forPort(1234).enableUntrustedAltsForTesting().build();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/alts/src/test/java/io/grpc/alts/ComputeEngineChannelBuilderTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc.alts;
18 |
19 | import org.junit.Test;
20 | import org.junit.runner.RunWith;
21 | import org.junit.runners.JUnit4;
22 |
23 | @RunWith(JUnit4.class)
24 | public final class ComputeEngineChannelBuilderTest {
25 |
26 | @Test
27 | public void buildsNettyChannel() throws Exception {
28 | ComputeEngineChannelBuilder builder = ComputeEngineChannelBuilder.forTarget("localhost:8080");
29 | builder.build();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/alts/src/test/java/io/grpc/alts/GoogleDefaultChannelBuilderTest.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc.alts;
18 |
19 | import org.junit.Test;
20 | import org.junit.runner.RunWith;
21 | import org.junit.runners.JUnit4;
22 |
23 | @RunWith(JUnit4.class)
24 | public final class GoogleDefaultChannelBuilderTest {
25 |
26 | @Test
27 | public void buildsNettyChannel() throws Exception {
28 | GoogleDefaultChannelBuilder builder = GoogleDefaultChannelBuilder.forTarget("localhost:8080");
29 | builder.build();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/android-interop-testing/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in $ANDROID_HOME/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | -dontwarn android.test.**
13 | -dontwarn com.google.common.**
14 | -dontwarn javax.naming.**
15 | -dontwarn okio.**
16 | -dontwarn org.junit.**
17 | -dontwarn org.mockito.**
18 | -dontwarn sun.reflect.**
19 | # Ignores: can't find referenced class javax.lang.model.element.Modifier
20 | -dontwarn com.google.errorprone.annotations.**
21 |
22 | # Ignores: can't find referenced method from grpc-testing's compileOnly dependency on Truth
23 | -dontwarn io.grpc.testing.DeadlineSubject
24 |
25 | -keepclassmembers class io.grpc.testing.integration.Messages$* {
26 | *;
27 | }
--------------------------------------------------------------------------------
/android-interop-testing/src/androidTest/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
Make sure to update MethodDescriptor.rawMethodNames if this is changed.
23 | */
24 | @Internal
25 | public enum InternalKnownTransport {
26 | NETTY,
27 | NETTY_SHADED,
28 | ;
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/api/src/main/java/io/grpc/InternalMayRequireSpecificExecutor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2022 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc;
18 |
19 | @Internal
20 | public interface InternalMayRequireSpecificExecutor {
21 | boolean isSpecificExecutorRequired();
22 | }
23 |
--------------------------------------------------------------------------------
/api/src/main/java/io/grpc/InternalServer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc;
18 |
19 | /**
20 | * Internal accessor for getting the {@link Server} instance inside server RPC {@link Context}.
21 | * This is intended for usage internal to the gRPC team. If you think you need to use
22 | * this, contact the gRPC team first.
23 | */
24 | @Internal
25 | public class InternalServer {
26 | public static final Context.Key An interface to provide the attributes for address connected by subchannel.
23 | */
24 | @Internal
25 | public interface InternalSubchannelAddressAttributes {
26 |
27 | /**
28 | * Return attributes of the server address connected by sub channel.
29 | */
30 | public Attributes getConnectedAddressAttributes();
31 | }
32 |
--------------------------------------------------------------------------------
/api/src/main/java/io/grpc/InternalTimeUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc;
18 |
19 | import java.time.Duration;
20 |
21 | @Internal
22 | public final class InternalTimeUtils {
23 | public static long convert(Duration duration) {
24 | return TimeUtils.convertToNanos(duration);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/api/src/main/java/io/grpc/ProxiedSocketAddress.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2019 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc;
18 |
19 | import java.net.SocketAddress;
20 |
21 | /**
22 | * An address that contains the information about making a connection via a proxy. It is created by
23 | * a {@link ProxyDetector}.
24 | */
25 | public abstract class ProxiedSocketAddress extends SocketAddress {
26 | private static final long serialVersionUID = 0L;
27 | }
28 |
--------------------------------------------------------------------------------
/api/src/main/java/io/grpc/TimeUtils.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc;
18 |
19 | import java.time.Duration;
20 |
21 | final class TimeUtils {
22 | private TimeUtils() {}
23 |
24 | @IgnoreJRERequirement
25 | static long convertToNanos(Duration duration) {
26 | try {
27 | return duration.toNanos();
28 | } catch (ArithmeticException tooBig) {
29 | return duration.isNegative() ? Long.MIN_VALUE : Long.MAX_VALUE;
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/api/src/test/java/io/grpc/ServiceProvidersTestAbstractProvider.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2018 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc;
18 |
19 | /**
20 | * A provider class for the {@link ServiceProvidersTest}.
21 | */
22 | // Nesting the class inside the test leads to a class name that has a '$' in it, which causes
23 | // issues with our build pipeline.
24 | abstract class ServiceProvidersTestAbstractProvider {
25 | abstract boolean isAvailable();
26 |
27 | abstract int priority();
28 | }
29 |
--------------------------------------------------------------------------------
/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-empty.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/grpc/grpc-java/142e378cea0aa90aae36fec55f90c30ede95f965/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-empty.txt
--------------------------------------------------------------------------------
/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtAvailableProvider.txt:
--------------------------------------------------------------------------------
1 | io.grpc.ServiceProvidersTest$FailAtAvailableProvider
2 | io.grpc.ServiceProvidersTest$Available5Provider
3 |
--------------------------------------------------------------------------------
/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtInitProvider.txt:
--------------------------------------------------------------------------------
1 | io.grpc.ServiceProvidersTest$FailAtInitProvider
2 | io.grpc.ServiceProvidersTest$Available5Provider
3 |
--------------------------------------------------------------------------------
/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-failAtPriorityProvider.txt:
--------------------------------------------------------------------------------
1 | io.grpc.ServiceProvidersTest$FailAtPriorityProvider
2 | io.grpc.ServiceProvidersTest$Available5Provider
3 |
--------------------------------------------------------------------------------
/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-multipleProvider.txt:
--------------------------------------------------------------------------------
1 | io.grpc.ServiceProvidersTest$Available5Provider
2 | io.grpc.ServiceProvidersTest$Available7Provider
3 | io.grpc.ServiceProvidersTest$Available0Provider
4 |
--------------------------------------------------------------------------------
/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unavailableProvider.txt:
--------------------------------------------------------------------------------
1 | io.grpc.ServiceProvidersTest$UnavailableProvider
2 | io.grpc.ServiceProvidersTest$Available7Provider
3 |
--------------------------------------------------------------------------------
/api/src/test/resources/io/grpc/ServiceProvidersTestAbstractProvider-unknownClassProvider.txt:
--------------------------------------------------------------------------------
1 | io.grpc.ServiceProvidersTest$UnknownClassProvider
2 |
--------------------------------------------------------------------------------
/api/src/testFixtures/java/io/grpc/ManagedChannelRegistryAccessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc;
18 |
19 | /** Accesses test-only methods of {@link ManagedChannelRegistry}. */
20 | public final class ManagedChannelRegistryAccessor {
21 | private ManagedChannelRegistryAccessor() {}
22 |
23 | public static Iterable All the content under this package and its subpackages are considered annotated with {@link
21 | * io.grpc.Internal}.
22 | */
23 | @io.grpc.Internal
24 | package io.grpc.internal;
25 |
--------------------------------------------------------------------------------
/core/src/main/resources/META-INF/services/io.grpc.LoadBalancerProvider:
--------------------------------------------------------------------------------
1 | io.grpc.internal.PickFirstLoadBalancerProvider
2 |
--------------------------------------------------------------------------------
/core/src/main/resources/META-INF/services/io.grpc.NameResolverProvider:
--------------------------------------------------------------------------------
1 | io.grpc.internal.DnsNameResolverProvider
2 |
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/spiffebundle_corrupted_cert.json:
--------------------------------------------------------------------------------
1 | {
2 | "trust_domains": {
3 | "google.com": {
4 | "spiffe_sequence": 123,
5 | "keys": [
6 | {
7 | "kty": "RSA",
8 | "use": "x509-svid",
9 | "x5c": ["UNPARSABLE_CERTIFICATE"]
10 | }
11 | ]
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/spiffebundle_duplicates.json:
--------------------------------------------------------------------------------
1 | {
2 | "trust_domains": {
3 | "google.com": {
4 | "spiffe_sequence": 123,
5 | "keys": [
6 | {
7 | "x5c": "VALUE_DOESN'T_MATTER"
8 | }
9 | ]
10 | },
11 | "google.com": {
12 | "spiffe_sequence": 123,
13 | "keys": [
14 | {
15 | "use": "x509-svid",
16 | "kid": "some_value",
17 | "x5c": "VALUE_DOESN'T_MATTER"
18 | }
19 | ]
20 | },
21 | "test.google.com.au": {}
22 | }
23 | }
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/spiffebundle_malformed.json:
--------------------------------------------------------------------------------
1 | [
2 | "test.google.com",
3 | "test.google.com.au"
4 | ]
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/spiffebundle_wrong_kid.json:
--------------------------------------------------------------------------------
1 | {
2 | "trust_domains": {
3 | "google.com": {
4 | "spiffe_sequence": 123,
5 | "keys": [
6 | {
7 | "kty": "RSA",
8 | "use": "x509-svid",
9 | "kid": "some_value",
10 | "x5c": "VALUE_DOESN'T_MATTER"
11 | }
12 | ]
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/spiffebundle_wrong_kty.json:
--------------------------------------------------------------------------------
1 | {
2 | "trust_domains": {
3 | "google.com": {
4 | "spiffe_sequence": 123,
5 | "keys": [
6 | {
7 | "x5c": "VALUE_DOESN'T_MATTER"
8 | }
9 | ]
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/spiffebundle_wrong_root.json:
--------------------------------------------------------------------------------
1 | {
2 | "trustDomains": {
3 | "test.google.com": {},
4 | "test.google.com.au": {}
5 | }
6 | }
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/spiffebundle_wrong_seq_type.json:
--------------------------------------------------------------------------------
1 | {
2 | "trust_domains": {
3 | "google.com": {
4 | "spiffe_sequence": 123.5,
5 | "keys": [
6 | {
7 | "x5c": "VALUE_DOESN'T_MATTER"
8 | }
9 | ]
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/spiffebundle_wrong_use.json:
--------------------------------------------------------------------------------
1 | {
2 | "trust_domains": {
3 | "google.com": {
4 | "keys": [
5 | {
6 | "kty": "RSA",
7 | "use": "i_am_not_x509-svid",
8 | "x5c": "VALUE_DOESN'T_MATTER"
9 | }
10 | ]
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/core/src/test/resources/io/grpc/internal/uncompressable.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/grpc/grpc-java/142e378cea0aa90aae36fec55f90c30ede95f965/core/src/test/resources/io/grpc/internal/uncompressable.bin
--------------------------------------------------------------------------------
/core/src/testFixtures/java/io/grpc/internal/PickFirstLoadBalancerProviderAccessor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2024 The gRPC Authors
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.grpc.internal;
18 |
19 | /**
20 | * Accessor for PickFirstLoadBalancerProvider, allowing access only during tests.
21 | */
22 | public final class PickFirstLoadBalancerProviderAccessor {
23 | private PickFirstLoadBalancerProviderAccessor() {}
24 |
25 | public static void setEnableNewPickFirst(boolean enableNewPickFirst) {
26 | PickFirstLoadBalancerProvider.enableNewPickFirst = enableNewPickFirst;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/cronet/.gitignore:
--------------------------------------------------------------------------------
1 | libs/
2 |
--------------------------------------------------------------------------------
/cronet/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in $ANDROID_HOME/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | -dontwarn org.chromium.**
13 | -dontnote org.chromium.**
14 |
--------------------------------------------------------------------------------
/cronet/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |