diff options
| author | kharcheva <[email protected]> | 2024-10-02 11:05:02 +0300 |
|---|---|---|
| committer | kharcheva <[email protected]> | 2024-10-02 11:16:26 +0300 |
| commit | 2cfac96412e943de3a142da74b90da74fece6920 (patch) | |
| tree | 0c6f3c78d97d4fad6d2cf2d2647e47c44a8596a4 | |
| parent | 11097c25778aa8dbd4cdec5d0b6eb02b6e44efbc (diff) | |
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 1a2963b40ef..56ae80882c0 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 fa14a98f79d..e1c951fc660 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 2b41c1db9aa..5ecae2a7755 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 cd05b90e022..234c7be99a8 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 5da1ec95071..a97bb6c9459 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 59bbf9654a8..7141aded3f0 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 00000000000..c72f7760761 --- /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 cabf21a7b5b..1ca82c81625 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 c1844e94f6d..32c8b173544 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" |
