Richer ParcelFileDescriptor close events.
When reading from the end of a pipe or socket, there is no way to tell if the other end has finished successfully, encountered an error, or outright crashed. To solve this, we create a second socketpair() as a communication channel between the two ends of a pipe or socket pair, sending a status code with details about why the ParcelFileDescriptor was closed. The writer end of a pipe or socket can closeWithError() to send a message to the reader end. When the reader encounters EOF, they call checkError() to detect if any error occured. This also detects the case where the remote process died without sending a success message. This design is also extended to support regular files on disk, using the communication channel above to detect various remote close events or crashes, and delivering that event to a supplied OnCloseListener. Replaces JNI with best-practice Libcore.os calls, and deprecates some flags to match Context. Bug: 10330121 Change-Id: I8cfa1e4fb6f57397667c7f785106193e0faccad3
Loading
Please register or sign in to comment