diff options
| author | 2015-11-13 00:17:12 +0000 | |
|---|---|---|
| committer | 2015-11-13 00:17:12 +0000 | |
| commit | cc26b35bb4f19fe87359ba86afc1e513057fb97b (patch) | |
| tree | 455bc9912a7d2c54b717ac80ceb04beec075f672 | |
| parent | 8770b7cdd01a2e7c36e0303850149b11a581bf1b (diff) | |
| parent | 2c19dbeff5ef15aaa6e4bfb23dc1fb44631e5036 (diff) | |
Merge "Add hidden support for arrays of raw file descriptors" am: 376d5f350c am: 7a38be6112
am: 2c19dbeff5
* commit '2c19dbeff5ef15aaa6e4bfb23dc1fb44631e5036':
Add hidden support for arrays of raw file descriptors
| -rw-r--r-- | core/java/android/os/Parcel.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java index 5852f5fcd070..f2aea08a91ec 100644 --- a/core/java/android/os/Parcel.java +++ b/core/java/android/os/Parcel.java @@ -624,6 +624,32 @@ public final class Parcel { } /** + * {@hide} + * This will be the new name for writeFileDescriptor, for consistency. + **/ + public final void writeRawFileDescriptor(FileDescriptor val) { + nativeWriteFileDescriptor(mNativePtr, val); + } + + /** + * {@hide} + * Write an array of FileDescriptor objects into the Parcel. + * + * @param value The array of objects to be written. + */ + public final void writeRawFileDescriptorArray(FileDescriptor[] value) { + if (value != null) { + int N = value.length; + writeInt(N); + for (int i=0; i<N; i++) { + writeRawFileDescriptor(value[i]); + } + } else { + writeInt(-1); + } + } + + /** * Write a byte value into the parcel at the current dataPosition(), * growing dataCapacity() if needed. */ @@ -1700,6 +1726,41 @@ public final class Parcel { return nativeReadFileDescriptor(mNativePtr); } + /** + * {@hide} + * Read and return a new array of FileDescriptors from the parcel. + * @return the FileDescriptor array, or null if the array is null. + **/ + public final FileDescriptor[] createRawFileDescriptorArray() { + int N = readInt(); + if (N < 0) { + return null; + } + FileDescriptor[] f = new FileDescriptor[N]; + for (int i = 0; i < N; i++) { + f[i] = readRawFileDescriptor(); + } + return f; + } + + /** + * {@hide} + * Read an array of FileDescriptors from a parcel. + * The passed array must be exactly the length of the array in the parcel. + * @return the FileDescriptor array, or null if the array is null. + **/ + public final void readRawFileDescriptorArray(FileDescriptor[] val) { + int N = readInt(); + if (N == val.length) { + for (int i=0; i<N; i++) { + val[i] = readRawFileDescriptor(); + } + } else { + throw new RuntimeException("bad array lengths"); + } + } + + /*package*/ static native FileDescriptor openFileDescriptor(String file, int mode) throws FileNotFoundException; /*package*/ static native FileDescriptor dupFileDescriptor(FileDescriptor orig) |