parcelable_unique_fd.cpp revision aba4d01add2e961f8b24a6281f3c616f916eb92f
1#include "android/dvr/parcelable_unique_fd.h"
2
3#include <binder/Parcel.h>
4
5namespace android {
6namespace dvr {
7
8ParcelableUniqueFd::ParcelableUniqueFd() {}
9
10ParcelableUniqueFd::ParcelableUniqueFd(const base::unique_fd& fence)
11    : fence_(dup(fence.get())) {}
12
13ParcelableUniqueFd::~ParcelableUniqueFd() {}
14
15status_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
25status_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