Lines Matching refs:session
67 status_t RpcState::onBinderLeaving(const sp<RpcSession>& session, const sp<IBinder>& binder, in onBinderLeaving() argument
72 if (isRpc && binder->remoteBinder()->getPrivateAccessor().rpcSession() != session) { in onBinderLeaving()
113 bool forServer = session->server() != nullptr; in onBinderLeaving()
150 status_t RpcState::onBinderEntering(const sp<RpcSession>& session, uint64_t address, in onBinderEntering() argument
181 if ((addr.options & RPC_WIRE_ADDRESS_OPTION_FOR_SERVER) == !!session->server()) { in onBinderEntering()
192 it->second.binder = *out = BpBinder::PrivateAccessor::create(session, it->first); in onBinderEntering()
197 status_t RpcState::flushExcessBinderRefs(const sp<RpcSession>& session, uint64_t address, in flushExcessBinderRefs() argument
224 return session->sendDecStrongToTarget(address, 0); in flushExcessBinderRefs()
230 status_t RpcState::sendObituaries(const sp<RpcSession>& session) { in sendObituaries() argument
247 binder->remoteBinder()->getPrivateAccessor().rpcSession() == session) { in sendObituaries()
354 const sp<RpcSession::RpcConnection>& connection, const sp<RpcSession>& session, in rpcSend() argument
365 connection->rpcTransport->interruptableWriteFully(session->mShutdownTrigger.get(), in rpcSend()
371 (void)session->shutdownAndWait(false); in rpcSend()
379 const sp<RpcSession::RpcConnection>& connection, const sp<RpcSession>& session, in rpcRec() argument
383 connection->rpcTransport->interruptableReadFully(session->mShutdownTrigger.get(), in rpcRec()
389 (void)session->shutdownAndWait(false); in rpcRec()
402 const sp<RpcSession>& session, uint32_t* version) { in readNewSessionResponse() argument
405 if (status_t status = rpcRec(connection, session, "new session response", &iov, 1, nullptr); in readNewSessionResponse()
414 const sp<RpcSession>& session) { in sendConnectionInit() argument
419 return rpcSend(connection, session, "connection init", &iov, 1, std::nullopt); in sendConnectionInit()
423 const sp<RpcSession>& session) { in readConnectionInit() argument
426 if (status_t status = rpcRec(connection, session, "connection init", &iov, 1, nullptr); in readConnectionInit()
440 const sp<RpcSession>& session) { in getRootObject() argument
442 data.markForRpc(session); in getRootObject()
446 transactAddress(connection, 0, RPC_SPECIAL_TRANSACT_GET_ROOT, data, session, &reply, 0); in getRootObject()
456 const sp<RpcSession>& session, size_t* maxThreadsOut) { in getMaxThreads() argument
458 data.markForRpc(session); in getMaxThreads()
462 session, &reply, 0); in getMaxThreads()
481 const sp<RpcSession>& session, std::vector<uint8_t>* sessionIdOut) { in getSessionId() argument
483 data.markForRpc(session); in getSessionId()
487 session, &reply, 0); in getSessionId()
498 const sp<RpcSession>& session, Parcel* reply, uint32_t flags) { in transact() argument
500 if (status_t status = validateParcel(session, data, &errorMsg); status != OK) { in transact()
506 if (status_t status = onBinderLeaving(session, binder, &address); status != OK) return status; in transact()
508 return transactAddress(connection, address, code, data, session, reply, flags); in transact()
513 const sp<RpcSession>& session, Parcel* reply, uint32_t flags) { in transactAddress() argument
530 (void)session->shutdownAndWait(false); in transactAddress()
576 connection, session, "transaction", iovs, arraysize(iovs), in transactAddress()
591 return drainCommands(connection, session, CommandType::CONTROL_ONLY); in transactAddress()
611 return waitForReply(connection, session, reply); in transactAddress()
623 const sp<RpcSession>& session, Parcel* reply) { in waitForReply() argument
628 if (status_t status = rpcRec(connection, session, "command header (for reply)", &iov, 1, in waitForReply()
629 enableAncillaryFds(session->getFileDescriptorTransportMode()) in waitForReply()
637 if (status_t status = processCommand(connection, session, command, CommandType::ANY, in waitForReply()
646 const size_t rpcReplyWireSize = RpcWireReply::wireSize(session->getProtocolVersion().value()); in waitForReply()
651 (void)session->shutdownAndWait(false); in waitForReply()
665 if (status_t status = rpcRec(connection, session, "reply body", iovs, arraysize(iovs), nullptr); in waitForReply()
673 if (session->getProtocolVersion().value() >= in waitForReply()
680 (void)session->shutdownAndWait(false); in waitForReply()
696 return reply->rpcSetDataReference(session, parcelSpan.data, parcelSpan.size, in waitForReply()
702 const sp<RpcSession>& session, uint64_t addr, in sendDecStrongToTarget() argument
725 LOG_ALWAYS_FATAL_IF(nullptr != tryEraseNode(session, std::move(_l), it), in sendDecStrongToTarget()
735 return rpcSend(connection, session, "dec ref", iovs, arraysize(iovs), std::nullopt); in sendDecStrongToTarget()
739 const sp<RpcSession>& session, CommandType type) { in getAndExecuteCommand() argument
746 rpcRec(connection, session, "command header (for server)", &iov, 1, in getAndExecuteCommand()
747 enableAncillaryFds(session->getFileDescriptorTransportMode()) ? &ancillaryFds in getAndExecuteCommand()
752 return processCommand(connection, session, command, type, std::move(ancillaryFds)); in getAndExecuteCommand()
756 const sp<RpcSession>& session, CommandType type) { in drainCommands() argument
762 status = getAndExecuteCommand(connection, session, type); in drainCommands()
769 const sp<RpcSession::RpcConnection>& connection, const sp<RpcSession>& session, in processCommand() argument
794 return processTransact(connection, session, command, std::move(ancillaryFds)); in processCommand()
796 return processDecStrong(connection, session, command); in processCommand()
805 (void)session->shutdownAndWait(false); in processCommand()
809 const sp<RpcSession::RpcConnection>& connection, const sp<RpcSession>& session, in processTransact() argument
819 if (status_t status = rpcRec(connection, session, "transaction body", &iov, 1, nullptr); in processTransact()
823 return processTransactInternal(connection, session, std::move(transactionData), in processTransact()
836 const sp<RpcSession::RpcConnection>& connection, const sp<RpcSession>& session, in processTransactInternal() argument
848 (void)session->shutdownAndWait(false); in processTransactInternal()
859 replyStatus = onBinderEntering(session, addr, &target); in processTransactInternal()
873 (void)session->shutdownAndWait(false); in processTransactInternal()
879 (void)session->shutdownAndWait(false); in processTransactInternal()
909 (void)session->shutdownAndWait(false); in processTransactInternal()
924 reply.markForRpc(session); in processTransactInternal()
931 if (session->getProtocolVersion().value() >= in processTransactInternal()
938 (void)session->shutdownAndWait(false); in processTransactInternal()
960 data.rpcSetDataReference(session, parcelSpan.data, parcelSpan.size, in processTransactInternal()
979 replyStatus = reply.writeInt32(session->getMaxIncomingThreads()); in processTransactInternal()
986 replyStatus = reply.writeByteVector(session->mId); in processTransactInternal()
990 sp<RpcServer> server = session->server(); in processTransactInternal()
994 sp<IBinder> root = session->mSessionSpecificRootObject in processTransactInternal()
1038 (void)session->shutdownAndWait(false); in processTransactInternal()
1066 return flushExcessBinderRefs(session, addr, target); in processTransactInternal()
1075 replyStatus = flushExcessBinderRefs(session, addr, target); in processTransactInternal()
1079 if (status_t status = validateParcel(session, reply, &errorMsg); status != OK) { in processTransactInternal()
1083 reply.markForRpc(session); in processTransactInternal()
1090 const size_t rpcReplyWireSize = RpcWireReply::wireSize(session->getProtocolVersion().value()); in processTransactInternal()
1118 return rpcSend(connection, session, "reply", iovs, arraysize(iovs), std::nullopt, in processTransactInternal()
1123 const sp<RpcSession>& session, const RpcWireHeader& command) { in processDecStrong() argument
1129 (void)session->shutdownAndWait(false); in processDecStrong()
1135 if (status_t status = rpcRec(connection, session, "dec ref body", &iov, 1, nullptr); in processDecStrong()
1153 (void)session->shutdownAndWait(false); in processDecStrong()
1170 sp<IBinder> tempHold = tryEraseNode(session, std::move(_l), it); in processDecStrong()
1177 status_t RpcState::validateParcel(const sp<RpcSession>& session, const Parcel& parcel, in validateParcel() argument
1185 if (rpcFields->mSession != session) { in validateParcel()
1190 uint32_t protocolVersion = session->getProtocolVersion().value(); in validateParcel()
1201 switch (session->getFileDescriptorTransportMode()) { in validateParcel()
1235 sp<IBinder> RpcState::tryEraseNode(const sp<RpcSession>& session, RpcMutexUniqueLock nodeLock, in tryEraseNode() argument
1266 (void)session->shutdownAndWait(false); in tryEraseNode()