* Add failing end2end test for inconsistent percent-decoding of URIs
* Add passing h2_local_abstract_uds end2end tests
* null-safe string_view
* mac doesn't UDS
* mac doesn't do *abstract* UDS
* [BinderTransport] Avoid depending on NdkBinder at compile time
We would like to make it possible to use BinderTransport in a APK that
has min sdk version lower than 29 (NdkBinder was introduced at 29)
We copies constants and type definitions from Ndk headers, creates a
same name wrapper for every NdkBinder API we use in
grpc_binder::ndk_util namespace.
We will try to load libbinder_ndk.so and resolve the symbol when the
NdkBinder API wrappers are invoked.
* regenerate projects
* Add GRPC_NO_BINDER guard
* Fix all lint errors in repo.
* Use strict buildifier by default
* Whoops. That file does not exist
* Attempt fix to buildifier invocation
* Add missing copyright
A config option is provided so user can pass --define=grpc_no_binder=true to bazel, or passing `-DGRPC_NO_BINDER` to compiler to disable the dependency.
* Expose experimental binder transport API
New headers are added
`grpcpp/create_channel_binder.h `: interfaces for creating client
channel
`grpcpp/security/binder_credentials.h`: interfaces for binder server
credentials
`grpcpp/security/binder_security_policy.h`: interfaces for binder
security policy, which is used by both server and client. Individual
security policies are merged into this single header.
Users can now depend on the `grpc++_binder` target to use the headers
listed above.
* Regenerate projects
* Revert "fix mobile builds to properly exclude xDS (#27855)"
This reverts commit 64d026e234.
* Revert "don't build RLS on mobile (#27838)"
This reverts commit 2a69c525b8.
* [BinderTransport] Create client channel instead of direct channel
In this commit we create a client channel instead of direct channel.
BinderConnector is added to connect subchannel when the user actually
make RPC call using the channel.
BindToOnDeviceServerService() is not required anymore since now the
actual connection is delay until the channel is used.
* Regenerate projects.
* don't use inline for JSON helper functions
* remove ErrorVectorType template parameter, which is no longer needed
* go back to inlining the variants of ExtractJsonType()
* use absl::string_view instead of std::string
* nope, go back to non-inlining ExtractJsonType()
* clang-format
* Revert "nope, go back to non-inlining ExtractJsonType()"
This reverts commit 935d68589d.
* Support generic_xds_config in GCE/GKE frameworks and Python tests
* Correct the field name
* Address comments
* Add new CSDS support to the regular K8s testcases
* Support incomplete CSDS config dump
* Add a class for generating readable connection id for binder
This class will be used to generate a connection IDs that are used to
identify binder transport connections. For now we have not migrated to
client channel yet so we simply use this new class to generate a
connection id for the only connection we support.
* Regenerate projects.
* ChannelStackModifier class
* Regenerate projects
* clang-tidy
* Use CoreConfiguration for inserting xDS HTTP filters
* New lines
* Move test to test/core/xds
* Add comment for placement of filter stack
* Fix sanity
* Fix memory leak - destroy builder
* Don't build xds_channel_stack_modifier_test on non-bazel build systems due to census dependency
* Move most py_proto_library macro contents into rule.
The _generate_pb2_src rule is modified to produce a valid PyInfo
provider that can be depended on directly by py_.* rules.
Keeping an intermediate macro in place increases complexity without
adding any real value.
* Move most py_grpc_library macro contents into rule.
The _generate_pb2_grpc_src rule is modified to produce a valid PyInfo
provider that can be depended on directly by py_.* rules.
Keeping an intermediate macro in place increase complexity without
adding any real value.
* Remove support for additional plugins.
It's easy enough for a plugin author to build their own rule-set, and it
adds extra unused (and untested) complexity to gRPC's rules.
* Rewrite py_proto_library to track dependencies correctly.
* Propagate Python dependencies of py_grpc_library rules to consumers.
* Add test coverage for aspect-based py_proto_library.
This commit is part of the effort to create binder channel with
GRPC_CLIENT_CHANNEL type.
The resolver will be used during name resolution, and the result will
later be used to identify the corresponding endpoint binder in
SubchannelConnector.
Besides the unit test, this change is tested with other changes locally
end to end on real device.
* Wait for in-flight requests to complete during shutdown
This fixes a race condition between AllocatingRequestMatcherBase::MatchOrQueue()
implementations and ShutdownAndNotify(). In MatchOrQueue(), the server may
shutdown and delete the completion queue right after the shutdown check but
before the batch call allocation, resulting in a use-after-free case.
To fix, once the shutdown ref is unrefed and no new requests are accepted, the
server can wait for all requests in-flight at the moment to complete. The last
request that unrefs the shutdown ref unblocks the shutdown.
* Add must-use-value and locks-required annotations