15 #ifndef GRPC_CORE_EXT_TRANSPORT_BINDER_UTILS_NDK_BINDER_H
16 #define GRPC_CORE_EXT_TRANSPORT_BINDER_UTILS_NDK_BINDER_H
20 #ifdef GPR_SUPPORT_BINDER_TRANSPORT
40 struct AIBinder_Class;
48 STATUS_UNKNOWN_ERROR = (-2147483647 - 1),
51 typedef int32_t binder_status_t;
59 typedef void* (*AIBinder_Class_onCreate)(
void*
args);
60 typedef void (*AIBinder_Class_onDestroy)(
void* userData);
61 typedef binder_status_t (*AIBinder_Class_onTransact)(AIBinder* binder,
66 void AIBinder_Class_disableInterfaceTokenHeader(AIBinder_Class* clazz);
67 void* AIBinder_getUserData(AIBinder* binder);
68 uid_t AIBinder_getCallingUid();
69 AIBinder* AIBinder_fromJavaBinder(JNIEnv*
env, jobject binder);
70 AIBinder_Class* AIBinder_Class_define(
const char* interfaceDescriptor,
71 AIBinder_Class_onCreate onCreate,
72 AIBinder_Class_onDestroy onDestroy,
73 AIBinder_Class_onTransact onTransact);
74 AIBinder* AIBinder_new(
const AIBinder_Class* clazz,
void*
args);
75 bool AIBinder_associateClass(AIBinder* binder,
const AIBinder_Class* clazz);
76 void AIBinder_incStrong(AIBinder* binder);
77 void AIBinder_decStrong(AIBinder* binder);
79 AParcel**
in, AParcel**
out,
80 binder_flags_t
flags);
81 binder_status_t AParcel_readByteArray(
const AParcel* parcel,
void* arrayData,
82 AParcel_byteArrayAllocator allocator);
83 void AParcel_delete(AParcel* parcel);
84 int32_t AParcel_getDataSize(
const AParcel* parcel);
85 binder_status_t AParcel_writeInt32(AParcel* parcel,
int32_t value);
86 binder_status_t AParcel_writeInt64(AParcel* parcel,
int64_t value);
87 binder_status_t AParcel_writeStrongBinder(AParcel* parcel, AIBinder* binder);
88 binder_status_t AParcel_writeString(AParcel* parcel,
const char*
string,
90 binder_status_t AParcel_readInt32(
const AParcel* parcel,
int32_t*
value);
91 binder_status_t AParcel_readInt64(
const AParcel* parcel,
int64_t*
value);
92 binder_status_t AParcel_readString(
const AParcel* parcel,
void* stringData,
93 AParcel_stringAllocator allocator);
94 binder_status_t AParcel_readStrongBinder(
const AParcel* parcel,
96 binder_status_t AParcel_writeByteArray(AParcel* parcel,
const int8_t* arrayData,
98 binder_status_t AIBinder_prepareTransaction(AIBinder* binder, AParcel**
in);
99 jobject AIBinder_toJavaBinder(JNIEnv*
env, AIBinder* binder);
107 #endif // GRPC_CORE_EXT_TRANSPORT_BINDER_UTILS_NDK_BINDER_H