diff options
Diffstat (limited to 'libs/binder/RpcServer.cpp')
| -rw-r--r-- | libs/binder/RpcServer.cpp | 15 | 
1 files changed, 9 insertions, 6 deletions
diff --git a/libs/binder/RpcServer.cpp b/libs/binder/RpcServer.cpp index 096d5cc5ad..49be4dd9eb 100644 --- a/libs/binder/RpcServer.cpp +++ b/libs/binder/RpcServer.cpp @@ -209,9 +209,10 @@ void RpcServer::join() {          {              RpcMutexLockGuard _l(mLock); -            RpcMaybeThread thread = RpcMaybeThread(&RpcServer::establishConnection, -                                                   sp<RpcServer>::fromExisting(this), -                                                   std::move(clientFd), addr, addrLen); +            RpcMaybeThread thread = +                    RpcMaybeThread(&RpcServer::establishConnection, +                                   sp<RpcServer>::fromExisting(this), std::move(clientFd), addr, +                                   addrLen, RpcSession::join);              auto& threadRef = mConnectingThreads[thread.get_id()];              threadRef = std::move(thread); @@ -294,8 +295,10 @@ size_t RpcServer::numUninitializedSessions() {      return mConnectingThreads.size();  } -void RpcServer::establishConnection(sp<RpcServer>&& server, base::unique_fd clientFd, -                                    std::array<uint8_t, kRpcAddressSize> addr, size_t addrLen) { +void RpcServer::establishConnection( +        sp<RpcServer>&& server, base::unique_fd clientFd, std::array<uint8_t, kRpcAddressSize> addr, +        size_t addrLen, +        std::function<void(sp<RpcSession>&&, RpcSession::PreJoinSetupResult&&)>&& joinFn) {      // mShutdownTrigger can only be cleared once connection threads have joined.      // It must be set before this thread is started      LOG_ALWAYS_FATAL_IF(server->mShutdownTrigger == nullptr); @@ -478,7 +481,7 @@ void RpcServer::establishConnection(sp<RpcServer>&& server, base::unique_fd clie      // avoid strong cycle      server = nullptr; -    RpcSession::join(std::move(session), std::move(setupResult)); +    joinFn(std::move(session), std::move(setupResult));  }  status_t RpcServer::setupSocketServer(const RpcSocketAddress& addr) {  |