summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorJeff Hamilton <jham@android.com>2010-10-21 21:08:20 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-10-21 21:08:20 -0700
commitde8635e4c4c9f674b52cb6041380c3ef2812630c (patch)
treec6a9f6404edf36103ab1ad553a2e6746272d6460 /core/java
parent6123e0f7c91ffc7534da99b4668879dacf662227 (diff)
parent389a440ad13f7b16e8f7c7f1670bdd55f1e2112a (diff)
am 389a440a: Backport ParcelFileDescriptor.createPipe() from master.
Merge commit '389a440ad13f7b16e8f7c7f1670bdd55f1e2112a' into gingerbread-plus-aosp * commit '389a440ad13f7b16e8f7c7f1670bdd55f1e2112a': Backport ParcelFileDescriptor.createPipe() from master.
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/os/ParcelFileDescriptor.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/core/java/android/os/ParcelFileDescriptor.java b/core/java/android/os/ParcelFileDescriptor.java
index 9d213b344dc8..d853f1375680 100644
--- a/core/java/android/os/ParcelFileDescriptor.java
+++ b/core/java/android/os/ParcelFileDescriptor.java
@@ -134,6 +134,25 @@ public class ParcelFileDescriptor implements Parcelable {
private static native FileDescriptor getFileDescriptorFromSocket(Socket socket);
/**
+ * Create two ParcelFileDescriptors structured as a data pipe. The first
+ * ParcelFileDescriptor in the returned array is the read side; the second
+ * is the write side.
+ */
+ public static ParcelFileDescriptor[] createPipe() throws IOException {
+ FileDescriptor[] fds = new FileDescriptor[2];
+ int res = createPipeNative(fds);
+ if (res == 0) {
+ ParcelFileDescriptor[] pfds = new ParcelFileDescriptor[2];
+ pfds[0] = new ParcelFileDescriptor(fds[0]);
+ pfds[1] = new ParcelFileDescriptor(fds[1]);
+ return pfds;
+ }
+ throw new IOException("Unable to create pipe: errno=" + -res);
+ }
+
+ private static native int createPipeNative(FileDescriptor[] outFds);
+
+ /**
* Retrieve the actual FileDescriptor associated with this object.
*
* @return Returns the FileDescriptor associated with this object.