/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #include "GetEntityInfoServiceHandler.h" #include #include #include #include namespace ROS2SimulationInterfaces { AZStd::unordered_set GetEntityInfoServiceHandler::GetProvidedFeatures() { return AZStd::unordered_set{ SimulationFeatures::ENTITY_INFO_GETTING }; } AZStd::optional GetEntityInfoServiceHandler::HandleServiceRequest( const std::shared_ptr header, const Request& request) { AZStd::string entityName = request.entity.c_str(); AZ::Outcome outcome; SimulationInterfaces::SimulationEntityManagerRequestBus::BroadcastResult( outcome, &SimulationInterfaces::SimulationEntityManagerRequests::GetEntityInfo, entityName); Response response; response.result.result = simulation_interfaces::msg::Result::RESULT_OK; if (!outcome.IsSuccess()) { const auto& failedResult = outcome.GetError(); response.result.result = failedResult.m_errorCode; response.result.error_message = failedResult.m_errorString.c_str(); return response; } simulation_interfaces::msg::EntityInfo entityInfoMsg; entityInfoMsg.category.category = outcome.GetValue().m_category; entityInfoMsg.description = outcome.GetValue().m_description.c_str(); AZStd::ranges::transform(outcome.GetValue().m_tags, AZStd::back_inserter(entityInfoMsg.tags), &AZStd::string::c_str); response.result.result = simulation_interfaces::msg::Result::RESULT_OK; response.info = entityInfoMsg; return response; } } // namespace ROS2SimulationInterfaces