Loading include/binder/Parcel.h +22 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #include <utils/Flattenable.h> #include <linux/binder.h> #include <binder/IInterface.h> // --------------------------------------------------------------------------- namespace android { Loading Loading @@ -196,8 +198,12 @@ public: status_t readString16(String16* pArg) const; const char16_t* readString16Inplace(size_t* outLen) const; sp<IBinder> readStrongBinder() const; status_t readStrongBinder(sp<IBinder>* val) const; wp<IBinder> readWeakBinder() const; template<typename T> status_t readStrongBinder(sp<T>* val) const; status_t readByteVector(std::vector<int8_t>* val) const; status_t readInt32Vector(std::vector<int32_t>* val) const; status_t readInt64Vector(std::vector<int64_t>* val) const; Loading Loading @@ -432,6 +438,22 @@ status_t Parcel::read(LightFlattenable<T>& val) const { return NO_ERROR; } template<typename T> status_t Parcel::readStrongBinder(sp<T>* val) const { sp<IBinder> tmp; status_t ret = readStrongBinder(&tmp); if (ret == OK) { *val = interface_cast<T>(tmp); if (val->get() == nullptr) { return UNKNOWN_ERROR; } } return ret; } // --------------------------------------------------------------------------- inline TextOutput& operator<<(TextOutput& to, const Parcel& parcel) Loading libs/binder/Parcel.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -1805,10 +1805,15 @@ const char16_t* Parcel::readString16Inplace(size_t* outLen) const return NULL; } status_t Parcel::readStrongBinder(sp<IBinder>* val) const { return unflatten_binder(ProcessState::self(), *this, val); } sp<IBinder> Parcel::readStrongBinder() const { sp<IBinder> val; unflatten_binder(ProcessState::self(), *this, &val); readStrongBinder(&val); return val; } Loading Loading
include/binder/Parcel.h +22 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ #include <utils/Flattenable.h> #include <linux/binder.h> #include <binder/IInterface.h> // --------------------------------------------------------------------------- namespace android { Loading Loading @@ -196,8 +198,12 @@ public: status_t readString16(String16* pArg) const; const char16_t* readString16Inplace(size_t* outLen) const; sp<IBinder> readStrongBinder() const; status_t readStrongBinder(sp<IBinder>* val) const; wp<IBinder> readWeakBinder() const; template<typename T> status_t readStrongBinder(sp<T>* val) const; status_t readByteVector(std::vector<int8_t>* val) const; status_t readInt32Vector(std::vector<int32_t>* val) const; status_t readInt64Vector(std::vector<int64_t>* val) const; Loading Loading @@ -432,6 +438,22 @@ status_t Parcel::read(LightFlattenable<T>& val) const { return NO_ERROR; } template<typename T> status_t Parcel::readStrongBinder(sp<T>* val) const { sp<IBinder> tmp; status_t ret = readStrongBinder(&tmp); if (ret == OK) { *val = interface_cast<T>(tmp); if (val->get() == nullptr) { return UNKNOWN_ERROR; } } return ret; } // --------------------------------------------------------------------------- inline TextOutput& operator<<(TextOutput& to, const Parcel& parcel) Loading
libs/binder/Parcel.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -1805,10 +1805,15 @@ const char16_t* Parcel::readString16Inplace(size_t* outLen) const return NULL; } status_t Parcel::readStrongBinder(sp<IBinder>* val) const { return unflatten_binder(ProcessState::self(), *this, val); } sp<IBinder> Parcel::readStrongBinder() const { sp<IBinder> val; unflatten_binder(ProcessState::self(), *this, &val); readStrongBinder(&val); return val; } Loading