libbinder: FdTrigger encapsulate poll

So we can use this in other places.

Bug: 185167543
Test: binderRpcTest
Change-Id: Ie8012b1c8dcea035bc8d0f14af2bd2ddbb197d89
diff --git a/libs/binder/RpcServer.cpp b/libs/binder/RpcServer.cpp
index df7c844..249ce6c 100644
--- a/libs/binder/RpcServer.cpp
+++ b/libs/binder/RpcServer.cpp
@@ -16,14 +16,12 @@
 
 #define LOG_TAG "RpcServer"
 
-#include <poll.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 
 #include <thread>
 #include <vector>
 
-#include <android-base/macros.h>
 #include <android-base/scopeguard.h>
 #include <binder/Parcel.h>
 #include <binder/RpcServer.h>
@@ -140,22 +138,7 @@
         LOG_ALWAYS_FATAL_IF(mShutdownTrigger == nullptr, "Cannot create join signaler");
     }
 
-    while (true) {
-        pollfd pfd[]{{.fd = mServer.get(), .events = POLLIN, .revents = 0},
-                     {.fd = mShutdownTrigger->readFd().get(), .events = POLLHUP, .revents = 0}};
-        int ret = TEMP_FAILURE_RETRY(poll(pfd, arraysize(pfd), -1));
-        if (ret < 0) {
-            ALOGE("Could not poll socket: %s", strerror(errno));
-            continue;
-        }
-        if (ret == 0) {
-            continue;
-        }
-        if (pfd[1].revents & POLLHUP) {
-            LOG_RPC_DETAIL("join() exiting because shutdown requested.");
-            break;
-        }
-
+    while (mShutdownTrigger->triggerablePollRead(mServer)) {
         (void)acceptOneNoCheck();
     }