Revert "Emulator: Enhance qemu_pipe.h to handle partial rw"
It broke master
BUG: 36695011
This reverts commit 7b60bd95dfa07e86325b432465fb0043648f6c97.
Change-Id: Idd45acb63b2e6112b4230de2c0609aa8f2092f45
diff --git a/qemu_pipe/qemu_pipe.cpp b/qemu_pipe/qemu_pipe.cpp
index ca3b795..a4529de 100644
--- a/qemu_pipe/qemu_pipe.cpp
+++ b/qemu_pipe/qemu_pipe.cpp
@@ -22,10 +22,6 @@
#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
@@ -70,10 +66,15 @@
// Write the pipe name, *including* the trailing zero which is necessary.
size_t pipeNameLen = strlen(pipeName);
- if (!WriteFully(fd, pipeName, pipeNameLen + 1U)) {
+ ssize_t ret = TEMP_FAILURE_RETRY(write(fd, pipeName, pipeNameLen + 1U));
+ if (ret != (ssize_t)pipeNameLen + 1) {
QEMU_PIPE_DEBUG("%s: Could not connect to %s pipe service: %s",
__FUNCTION__, pipeName, strerror(errno));
- close(fd);
+ if (ret == 0) {
+ errno = ECONNRESET;
+ } else if (ret > 0) {
+ errno = EINVAL;
+ }
return -1;
}
return fd;
@@ -85,11 +86,13 @@
int qemu_pipe_frame_send(int fd, const void* buff, size_t len) {
char header[5];
snprintf(header, sizeof(header), "%04zx", len);
- if (!WriteFully(fd, header, 4)) {
+ ssize_t ret = TEMP_FAILURE_RETRY(write(fd, header, 4));
+ if (ret != 4) {
QEMU_PIPE_DEBUG("Can't write qemud frame header: %s", strerror(errno));
return -1;
}
- if (!WriteFully(fd, buff, len)) {
+ ret = TEMP_FAILURE_RETRY(write(fd, buff, len));
+ if (ret != (ssize_t)len) {
QEMU_PIPE_DEBUG("Can't write qemud frame payload: %s", strerror(errno));
return -1;
}
@@ -103,7 +106,8 @@
// end-of-stream.
int qemu_pipe_frame_recv(int fd, void* buff, size_t len) {
char header[5];
- if (!ReadFully(fd, header, 4)) {
+ ssize_t ret = TEMP_FAILURE_RETRY(read(fd, header, 4));
+ if (ret != 4) {
QEMU_PIPE_DEBUG("Can't read qemud frame header: %s", strerror(errno));
return -1;
}
@@ -118,7 +122,8 @@
len);
return -1;
}
- if (!ReadFully(fd, buff, size)) {
+ ret = TEMP_FAILURE_RETRY(read(fd, buff, size));
+ if (ret != (ssize_t)size) {
QEMU_PIPE_DEBUG("Could not read qemud frame payload: %s",
strerror(errno));
return -1;