1 #include "android/dvr/parcelable_unique_fd.h"
2 
3 #include <binder/Parcel.h>
4 
5 namespace android {
6 namespace dvr {
7 
ParcelableUniqueFd()8 ParcelableUniqueFd::ParcelableUniqueFd() {}
9 
ParcelableUniqueFd(const base::unique_fd & fence)10 ParcelableUniqueFd::ParcelableUniqueFd(const base::unique_fd& fence)
11     : fence_(dup(fence.get())) {}
12 
~ParcelableUniqueFd()13 ParcelableUniqueFd::~ParcelableUniqueFd() {}
14 
writeToParcel(Parcel * parcel) const15 status_t ParcelableUniqueFd::writeToParcel(Parcel* parcel) const {
16   status_t ret = parcel->writeBool(fence_.get() >= 0);
17   if (ret != OK) return ret;
18 
19   if (fence_.get() >= 0)
20     ret = parcel->writeUniqueFileDescriptor(fence_);
21 
22   return ret;
23 }
24 
readFromParcel(const Parcel * parcel)25 status_t ParcelableUniqueFd::readFromParcel(const Parcel* parcel) {
26   bool has_fence = 0;
27   status_t ret = parcel->readBool(&has_fence);
28   if (ret != OK) return ret;
29 
30   if (has_fence)
31     ret = parcel->readUniqueFileDescriptor(&fence_);
32 
33   return ret;
34 }
35 
36 }  // namespace dvr
37 }  // namespace android
38