Loading automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp +48 −26 Original line number Diff line number Diff line Loading @@ -69,10 +69,13 @@ GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAd const proto::VehiclePropValueRequests* requests, proto::SetValueResults* results) { std::vector<aidlvhal::SetValueRequest> aidlRequests; std::unordered_set<int64_t> requestIds; for (const auto& protoRequest : requests->requests()) { auto& aidlRequest = aidlRequests.emplace_back(); aidlRequest.requestId = protoRequest.request_id(); int64_t requestId = protoRequest.request_id(); aidlRequest.requestId = requestId; proto_msg_converter::protoToAidl(protoRequest.value(), &aidlRequest.value); requestIds.insert(requestId); } auto waitMtx = std::make_shared<std::mutex>(); auto waitCV = std::make_shared<std::condition_variable>(); Loading @@ -80,19 +83,27 @@ GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAd auto tmpResults = std::make_shared<proto::SetValueResults>(); auto aidlStatus = mHardware->setValues( std::make_shared<const IVehicleHardware::SetValuesCallback>( [waitMtx, waitCV, complete, tmpResults](std::vector<aidlvhal::SetValueResult> setValueResults) { [waitMtx, waitCV, complete, tmpResults, &requestIds](std::vector<aidlvhal::SetValueResult> setValueResults) { bool receivedAllResults = false; { std::lock_guard lck(*waitMtx); for (const auto& aidlResult : setValueResults) { auto& protoResult = *tmpResults->add_results(); protoResult.set_request_id(aidlResult.requestId); int64_t requestIdForResult = aidlResult.requestId; protoResult.set_request_id(requestIdForResult); protoResult.set_status( static_cast<proto::StatusCode>(aidlResult.status)); requestIds.erase(requestIdForResult); } { std::lock_guard lck(*waitMtx); if (requestIds.empty()) { receivedAllResults = true; *complete = true; } } if (receivedAllResults) { waitCV->notify_all(); } }), aidlRequests); if (aidlStatus != aidlvhal::StatusCode::OK) { Loading @@ -114,10 +125,13 @@ GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAd const proto::VehiclePropValueRequests* requests, proto::GetValueResults* results) { std::vector<aidlvhal::GetValueRequest> aidlRequests; std::unordered_set<int64_t> requestIds; for (const auto& protoRequest : requests->requests()) { auto& aidlRequest = aidlRequests.emplace_back(); aidlRequest.requestId = protoRequest.request_id(); int64_t requestId = protoRequest.request_id(); aidlRequest.requestId = requestId; proto_msg_converter::protoToAidl(protoRequest.value(), &aidlRequest.prop); requestIds.insert(requestId); } auto waitMtx = std::make_shared<std::mutex>(); auto waitCV = std::make_shared<std::condition_variable>(); Loading @@ -125,23 +139,31 @@ GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAd auto tmpResults = std::make_shared<proto::GetValueResults>(); auto aidlStatus = mHardware->getValues( std::make_shared<const IVehicleHardware::GetValuesCallback>( [waitMtx, waitCV, complete, tmpResults](std::vector<aidlvhal::GetValueResult> getValueResults) { [waitMtx, waitCV, complete, tmpResults, &requestIds](std::vector<aidlvhal::GetValueResult> getValueResults) { bool receivedAllResults = false; { std::lock_guard lck(*waitMtx); for (const auto& aidlResult : getValueResults) { auto& protoResult = *tmpResults->add_results(); protoResult.set_request_id(aidlResult.requestId); int64_t requestIdForResult = aidlResult.requestId; protoResult.set_request_id(requestIdForResult); protoResult.set_status( static_cast<proto::StatusCode>(aidlResult.status)); if (aidlResult.prop) { auto* valuePtr = protoResult.mutable_value(); proto_msg_converter::aidlToProto(*aidlResult.prop, valuePtr); } requestIds.erase(requestIdForResult); } { std::lock_guard lck(*waitMtx); if (requestIds.empty()) { receivedAllResults = true; *complete = true; } } if (receivedAllResults) { waitCV->notify_all(); } }), aidlRequests); if (aidlStatus != aidlvhal::StatusCode::OK) { Loading Loading
automotive/vehicle/aidl/impl/grpc/GRPCVehicleProxyServer.cpp +48 −26 Original line number Diff line number Diff line Loading @@ -69,10 +69,13 @@ GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAd const proto::VehiclePropValueRequests* requests, proto::SetValueResults* results) { std::vector<aidlvhal::SetValueRequest> aidlRequests; std::unordered_set<int64_t> requestIds; for (const auto& protoRequest : requests->requests()) { auto& aidlRequest = aidlRequests.emplace_back(); aidlRequest.requestId = protoRequest.request_id(); int64_t requestId = protoRequest.request_id(); aidlRequest.requestId = requestId; proto_msg_converter::protoToAidl(protoRequest.value(), &aidlRequest.value); requestIds.insert(requestId); } auto waitMtx = std::make_shared<std::mutex>(); auto waitCV = std::make_shared<std::condition_variable>(); Loading @@ -80,19 +83,27 @@ GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAd auto tmpResults = std::make_shared<proto::SetValueResults>(); auto aidlStatus = mHardware->setValues( std::make_shared<const IVehicleHardware::SetValuesCallback>( [waitMtx, waitCV, complete, tmpResults](std::vector<aidlvhal::SetValueResult> setValueResults) { [waitMtx, waitCV, complete, tmpResults, &requestIds](std::vector<aidlvhal::SetValueResult> setValueResults) { bool receivedAllResults = false; { std::lock_guard lck(*waitMtx); for (const auto& aidlResult : setValueResults) { auto& protoResult = *tmpResults->add_results(); protoResult.set_request_id(aidlResult.requestId); int64_t requestIdForResult = aidlResult.requestId; protoResult.set_request_id(requestIdForResult); protoResult.set_status( static_cast<proto::StatusCode>(aidlResult.status)); requestIds.erase(requestIdForResult); } { std::lock_guard lck(*waitMtx); if (requestIds.empty()) { receivedAllResults = true; *complete = true; } } if (receivedAllResults) { waitCV->notify_all(); } }), aidlRequests); if (aidlStatus != aidlvhal::StatusCode::OK) { Loading @@ -114,10 +125,13 @@ GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAd const proto::VehiclePropValueRequests* requests, proto::GetValueResults* results) { std::vector<aidlvhal::GetValueRequest> aidlRequests; std::unordered_set<int64_t> requestIds; for (const auto& protoRequest : requests->requests()) { auto& aidlRequest = aidlRequests.emplace_back(); aidlRequest.requestId = protoRequest.request_id(); int64_t requestId = protoRequest.request_id(); aidlRequest.requestId = requestId; proto_msg_converter::protoToAidl(protoRequest.value(), &aidlRequest.prop); requestIds.insert(requestId); } auto waitMtx = std::make_shared<std::mutex>(); auto waitCV = std::make_shared<std::condition_variable>(); Loading @@ -125,23 +139,31 @@ GrpcVehicleProxyServer::GrpcVehicleProxyServer(std::vector<std::string> serverAd auto tmpResults = std::make_shared<proto::GetValueResults>(); auto aidlStatus = mHardware->getValues( std::make_shared<const IVehicleHardware::GetValuesCallback>( [waitMtx, waitCV, complete, tmpResults](std::vector<aidlvhal::GetValueResult> getValueResults) { [waitMtx, waitCV, complete, tmpResults, &requestIds](std::vector<aidlvhal::GetValueResult> getValueResults) { bool receivedAllResults = false; { std::lock_guard lck(*waitMtx); for (const auto& aidlResult : getValueResults) { auto& protoResult = *tmpResults->add_results(); protoResult.set_request_id(aidlResult.requestId); int64_t requestIdForResult = aidlResult.requestId; protoResult.set_request_id(requestIdForResult); protoResult.set_status( static_cast<proto::StatusCode>(aidlResult.status)); if (aidlResult.prop) { auto* valuePtr = protoResult.mutable_value(); proto_msg_converter::aidlToProto(*aidlResult.prop, valuePtr); } requestIds.erase(requestIdForResult); } { std::lock_guard lck(*waitMtx); if (requestIds.empty()) { receivedAllResults = true; *complete = true; } } if (receivedAllResults) { waitCV->notify_all(); } }), aidlRequests); if (aidlStatus != aidlvhal::StatusCode::OK) { Loading