diff options
author | kharcheva <kharcheva@yandex-team.com> | 2024-10-02 11:05:02 +0300 |
---|---|---|
committer | kharcheva <kharcheva@yandex-team.com> | 2024-10-02 11:16:26 +0300 |
commit | 2cfac96412e943de3a142da74b90da74fece6920 (patch) | |
tree | 0c6f3c78d97d4fad6d2cf2d2647e47c44a8596a4 | |
parent | 11097c25778aa8dbd4cdec5d0b6eb02b6e44efbc (diff) | |
download | ydb-2cfac96412e943de3a142da74b90da74fece6920.tar.gz |
Support Android build for gRPC
commit_hash:273b353454e6490ebf71ed39743b7059c188690b
9 files changed, 85 insertions, 9 deletions
diff --git a/contrib/libs/grpc/include/grpcpp/create_channel_binder.h b/contrib/libs/grpc/include/grpcpp/create_channel_binder.h index 1a2963b40e..56ae80882c 100644 --- a/contrib/libs/grpc/include/grpcpp/create_channel_binder.h +++ b/contrib/libs/grpc/include/grpcpp/create_channel_binder.h @@ -19,7 +19,7 @@ #ifdef GPR_ANDROID -#error #include <jni.h> +#include <jni.h> #include <memory> diff --git a/contrib/libs/grpc/include/grpcpp/security/binder_security_policy.h b/contrib/libs/grpc/include/grpcpp/security/binder_security_policy.h index fa14a98f79..e1c951fc66 100644 --- a/contrib/libs/grpc/include/grpcpp/security/binder_security_policy.h +++ b/contrib/libs/grpc/include/grpcpp/security/binder_security_policy.h @@ -19,7 +19,7 @@ #ifdef GPR_ANDROID -#error #include <jni.h> +#include <jni.h> #endif diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc b/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc index 2b41c1db9a..5ecae2a775 100644 --- a/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc +++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/endpoint_binder_pool.cc @@ -22,7 +22,7 @@ #ifdef GPR_SUPPORT_BINDER_TRANSPORT -#error #include <jni.h> +#include <jni.h> #include "src/core/ext/transport/binder/wire_format/binder_android.h" diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h b/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h index cd05b90e02..234c7be99a 100644 --- a/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h +++ b/contrib/libs/grpc/src/core/ext/transport/binder/client/jni_utils.h @@ -19,7 +19,7 @@ #include <grpc/support/port_platform.h> -#error #include <jni.h> +#include <jni.h> #include <functional> #include <util/generic/string.h> diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/security_policy/binder_security_policy.cc b/contrib/libs/grpc/src/core/ext/transport/binder/security_policy/binder_security_policy.cc index 5da1ec9507..a97bb6c945 100644 --- a/contrib/libs/grpc/src/core/ext/transport/binder/security_policy/binder_security_policy.cc +++ b/contrib/libs/grpc/src/core/ext/transport/binder/security_policy/binder_security_policy.cc @@ -20,7 +20,7 @@ #ifdef GPR_ANDROID -#error #include <jni.h> +#include <jni.h> #include <unistd.h> #include <grpc/support/log.h> diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc b/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc index 59bbf9654a..7141aded3f 100644 --- a/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc +++ b/contrib/libs/grpc/src/core/ext/transport/binder/server/binder_server.cc @@ -36,7 +36,7 @@ #ifdef GPR_SUPPORT_BINDER_TRANSPORT -#error #include <jni.h> +#include <jni.h> extern "C" { diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/utils/binder_auto_utils.h b/contrib/libs/grpc/src/core/ext/transport/binder/utils/binder_auto_utils.h new file mode 100644 index 0000000000..c72f776076 --- /dev/null +++ b/contrib/libs/grpc/src/core/ext/transport/binder/utils/binder_auto_utils.h @@ -0,0 +1,76 @@ +// Copyright 2021 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_UTILS_BINDER_AUTO_UTILS_H +#define GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_UTILS_BINDER_AUTO_UTILS_H + +#include <grpc/support/port_platform.h> + +#ifdef GPR_SUPPORT_BINDER_TRANSPORT + +#include "src/core/ext/transport/binder/utils/ndk_binder.h" + +namespace grpc_binder { +namespace ndk_util { + +/// +/// Represents one strong pointer to an AIBinder object. +/// Copied from binder/ndk/include_cpp/android/binder_auto_utils.h +/// +class SpAIBinder { + public: + SpAIBinder() : mBinder(nullptr) {} + explicit SpAIBinder(AIBinder* binder) : mBinder(binder) {} + SpAIBinder(std::nullptr_t) + : SpAIBinder() {} // NOLINT(google-explicit-constructor) + SpAIBinder(const SpAIBinder& other) { *this = other; } + + ~SpAIBinder() { set(nullptr); } + SpAIBinder& operator=(const SpAIBinder& other) { + if (this == &other) { + return *this; + } + AIBinder_incStrong(other.mBinder); + set(other.mBinder); + return *this; + } + + void set(AIBinder* binder) { + AIBinder* old = *const_cast<AIBinder* volatile*>(&mBinder); + if (old != nullptr) AIBinder_decStrong(old); + if (old != *const_cast<AIBinder* volatile*>(&mBinder)) { + __assert(__FILE__, __LINE__, "Race detected."); + } + mBinder = binder; + } + + AIBinder* get() const { return mBinder; } + AIBinder** getR() { return &mBinder; } + + bool operator!=(const SpAIBinder& rhs) const { return get() != rhs.get(); } + bool operator<(const SpAIBinder& rhs) const { return get() < rhs.get(); } + bool operator<=(const SpAIBinder& rhs) const { return get() <= rhs.get(); } + bool operator==(const SpAIBinder& rhs) const { return get() == rhs.get(); } + bool operator>(const SpAIBinder& rhs) const { return get() > rhs.get(); } + bool operator>=(const SpAIBinder& rhs) const { return get() >= rhs.get(); } + + private: + AIBinder* mBinder = nullptr; +}; +} // namespace ndk_util +} // namespace grpc_binder + +#endif + +#endif // GRPC_SRC_CORE_EXT_TRANSPORT_BINDER_UTILS_BINDER_AUTO_UTILS_H diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.h b/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.h index cabf21a7b5..1ca82c8162 100644 --- a/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.h +++ b/contrib/libs/grpc/src/core/ext/transport/binder/utils/ndk_binder.h @@ -20,7 +20,7 @@ #ifdef GPR_SUPPORT_BINDER_TRANSPORT #include <assert.h> -#error #include <jni.h> +#include <jni.h> #include <memory> diff --git a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_android.h b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_android.h index c1844e94f6..32c8b17354 100644 --- a/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_android.h +++ b/contrib/libs/grpc/src/core/ext/transport/binder/wire_format/binder_android.h @@ -19,13 +19,13 @@ #ifdef GPR_SUPPORT_BINDER_TRANSPORT -#error #include <jni.h> +#include <jni.h> #include <memory> #include "y_absl/memory/memory.h" -#error #include "src/core/ext/transport/binder/utils/binder_auto_utils.h" +#include "src/core/ext/transport/binder/utils/binder_auto_utils.h" #include "src/core/ext/transport/binder/utils/ndk_binder.h" #include "src/core/ext/transport/binder/wire_format/binder.h" #include "src/core/ext/transport/binder/wire_format/wire_reader.h" |