diff options
author | 2021-05-22 01:46:27 +0000 | |
---|---|---|
committer | 2021-05-22 01:50:11 +0000 | |
commit | 2b4f380c6548b8c146962eab8bc070e6c3647dc4 (patch) | |
tree | cbb94d8259a859e0096594790b61fee6d1a52087 /libs/binder/RpcSession.cpp | |
parent | 65381d826447502d150f2b92c08376951fe3584c (diff) |
libbinder: FdTrigger methods use status_t
Instead of boolean :) for better, more actionable logs.
Bug: 185167543
Test: binderRpcTest
Change-Id: I097784a45e9f7a8c8cfa44f9521ae4f4049de7fc
Diffstat (limited to 'libs/binder/RpcSession.cpp')
-rw-r--r-- | libs/binder/RpcSession.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/libs/binder/RpcSession.cpp b/libs/binder/RpcSession.cpp index cba560c447..9f26a33335 100644 --- a/libs/binder/RpcSession.cpp +++ b/libs/binder/RpcSession.cpp @@ -125,41 +125,41 @@ void RpcSession::FdTrigger::trigger() { mWrite.reset(); } -bool RpcSession::FdTrigger::triggerablePollRead(base::borrowed_fd fd) { +status_t RpcSession::FdTrigger::triggerablePollRead(base::borrowed_fd fd) { while (true) { pollfd pfd[]{{.fd = fd.get(), .events = POLLIN | POLLHUP, .revents = 0}, {.fd = mRead.get(), .events = POLLHUP, .revents = 0}}; int ret = TEMP_FAILURE_RETRY(poll(pfd, arraysize(pfd), -1)); if (ret < 0) { - ALOGE("Could not poll: %s", strerror(errno)); - return false; + return -errno; } if (ret == 0) { continue; } if (pfd[1].revents & POLLHUP) { - return false; + return -ECANCELED; } - return pfd[0].revents & POLLIN; + return pfd[0].revents & POLLIN ? OK : DEAD_OBJECT; } } -bool RpcSession::FdTrigger::interruptableReadFully(base::borrowed_fd fd, void* data, size_t size) { +status_t RpcSession::FdTrigger::interruptableReadFully(base::borrowed_fd fd, void* data, + size_t size) { uint8_t* buffer = reinterpret_cast<uint8_t*>(data); uint8_t* end = buffer + size; - while (triggerablePollRead(fd)) { + status_t status; + while ((status = triggerablePollRead(fd)) == OK) { ssize_t readSize = TEMP_FAILURE_RETRY(recv(fd.get(), buffer, end - buffer, MSG_NOSIGNAL)); - if (readSize == 0) return false; // EOF + if (readSize == 0) return DEAD_OBJECT; // EOF if (readSize < 0) { - ALOGE("Failed to read %s", strerror(errno)); - return false; + return -errno; } buffer += readSize; - if (buffer == end) return true; + if (buffer == end) return OK; } - return false; + return status; } status_t RpcSession::readId() { |