15 #ifndef GRPC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_BINDER_ANDROID_H
16 #define GRPC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_BINDER_ANDROID_H
20 #ifdef GPR_SUPPORT_BINDER_TRANSPORT
26 #include "absl/memory/memory.h"
35 ndk_util::SpAIBinder FromJavaBinder(JNIEnv* jni_env, jobject binder);
39 class WritableParcelAndroid final :
public WritableParcel {
41 WritableParcelAndroid() =
default;
42 explicit WritableParcelAndroid(ndk_util::AParcel* parcel) : parcel_(parcel) {}
43 ~WritableParcelAndroid()
override =
default;
45 int32_t GetDataSize()
const override;
53 ndk_util::AParcel* parcel_ =
nullptr;
55 friend class BinderAndroid;
58 class ReadableParcelAndroid final :
public ReadableParcel {
60 ReadableParcelAndroid() =
default;
62 explicit ReadableParcelAndroid(
const ndk_util::AParcel* parcel)
64 ~ReadableParcelAndroid()
override =
default;
66 int32_t GetDataSize()
const override;
74 const ndk_util::AParcel* parcel_ =
nullptr;
76 friend class BinderAndroid;
79 class BinderAndroid final :
public Binder {
81 explicit BinderAndroid(ndk_util::SpAIBinder binder)
84 ~BinderAndroid()
override =
default;
86 void* GetRawBinder()
override {
return binder_.get(); }
92 WritableParcel* GetWritableParcel()
const override {
93 return input_parcel_.get();
96 std::unique_ptr<TransactionReceiver> ConstructTxReceiver(
101 ndk_util::SpAIBinder binder_;
102 std::unique_ptr<WritableParcelAndroid> input_parcel_;
105 class TransactionReceiverAndroid final :
public TransactionReceiver {
107 TransactionReceiverAndroid(
109 OnTransactCb transaction_cb);
110 ~TransactionReceiverAndroid()
override;
111 void* GetRawBinder()
override {
return binder_; }
114 ndk_util::AIBinder* binder_;
115 OnTransactCb transact_cb_;
122 #endif // GRPC_CORE_EXT_TRANSPORT_BINDER_WIRE_FORMAT_BINDER_ANDROID_H