Revert "Revert "Emulator: Enhance qemu_pipe.h to handle partial rw""

This reverts commit ec768709cc029d307b9e57e8dce193b7ee8c2321.
diff --git a/qemu_pipe/qemu_pipe.cpp b/qemu_pipe/qemu_pipe.cpp
index a4529de..ca3b795 100644
--- a/qemu_pipe/qemu_pipe.cpp
+++ b/qemu_pipe/qemu_pipe.cpp
@@ -22,6 +22,10 @@
 #include <errno.h>
 #include <stdio.h>
 
+#include <android-base/file.h>
+
+using android::base::ReadFully;
+using android::base::WriteFully;
 
 // Define QEMU_PIPE_DEBUG if you want to print error messages when an error
 // occurs during pipe operations. The macro should simply take a printf-style
@@ -66,15 +70,10 @@
 
     // Write the pipe name, *including* the trailing zero which is necessary.
     size_t pipeNameLen = strlen(pipeName);
-    ssize_t ret = TEMP_FAILURE_RETRY(write(fd, pipeName, pipeNameLen + 1U));
-    if (ret != (ssize_t)pipeNameLen + 1) {
+    if (!WriteFully(fd, pipeName, pipeNameLen + 1U)) {
         QEMU_PIPE_DEBUG("%s: Could not connect to %s pipe service: %s",
                         __FUNCTION__, pipeName, strerror(errno));
-        if (ret == 0) {
-            errno = ECONNRESET;
-        } else if (ret > 0) {
-            errno = EINVAL;
-        }
+        close(fd);
         return -1;
     }
     return fd;
@@ -86,13 +85,11 @@
 int qemu_pipe_frame_send(int fd, const void* buff, size_t len) {
     char header[5];
     snprintf(header, sizeof(header), "%04zx", len);
-    ssize_t ret = TEMP_FAILURE_RETRY(write(fd, header, 4));
-    if (ret != 4) {
+    if (!WriteFully(fd, header, 4)) {
         QEMU_PIPE_DEBUG("Can't write qemud frame header: %s", strerror(errno));
         return -1;
     }
-    ret = TEMP_FAILURE_RETRY(write(fd, buff, len));
-    if (ret != (ssize_t)len) {
+    if (!WriteFully(fd, buff, len)) {
         QEMU_PIPE_DEBUG("Can't write qemud frame payload: %s", strerror(errno));
         return -1;
     }
@@ -106,8 +103,7 @@
 // end-of-stream.
 int qemu_pipe_frame_recv(int fd, void* buff, size_t len) {
     char header[5];
-    ssize_t ret = TEMP_FAILURE_RETRY(read(fd, header, 4));
-    if (ret != 4) {
+    if (!ReadFully(fd, header, 4)) {
         QEMU_PIPE_DEBUG("Can't read qemud frame header: %s", strerror(errno));
         return -1;
     }
@@ -122,8 +118,7 @@
                         len);
         return -1;
     }
-    ret = TEMP_FAILURE_RETRY(read(fd, buff, size));
-    if (ret != (ssize_t)size) {
+    if (!ReadFully(fd, buff, size)) {
         QEMU_PIPE_DEBUG("Could not read qemud frame payload: %s",
                         strerror(errno));
         return -1;