From eea063ad2e1372328c5f6d2e9fa250be4bde668c Mon Sep 17 00:00:00 2001 From: Javier Gil Aviles <javiergil@eprosima.com> Date: Wed, 22 Jan 2025 17:50:45 +0100 Subject: [PATCH] Corrections from review Signed-off-by: Javier Gil Aviles <javiergil@eprosima.com> --- .../sustainml_cpp/core/RequestReplier.hpp | 8 ++-- sustainml_cpp/src/cpp/core/NodeImpl.cpp | 18 ++------ sustainml_cpp/src/cpp/core/NodeImpl.hpp | 2 + sustainml_cpp/src/cpp/core/RequestReplier.cpp | 42 ++++--------------- .../src/cpp/orchestrator/OrchestratorNode.cpp | 6 +-- 5 files changed, 21 insertions(+), 55 deletions(-) diff --git a/sustainml_cpp/include/sustainml_cpp/core/RequestReplier.hpp b/sustainml_cpp/include/sustainml_cpp/core/RequestReplier.hpp index 7e2ac8f..9d24c82 100644 --- a/sustainml_cpp/include/sustainml_cpp/core/RequestReplier.hpp +++ b/sustainml_cpp/include/sustainml_cpp/core/RequestReplier.hpp @@ -1,4 +1,4 @@ -// Copyright 2023 Proyectos y Sistemas de Mantenimiento SL (eProsima). +// Copyright 2025 Proyectos y Sistemas de Mantenimiento SL (eProsima). // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -54,7 +54,8 @@ class RequestReplier RequestReplier( std::function<void(void*)> callback, const char* topicw, - const char* topicr); + const char* topicr, + void* data); ~RequestReplier(); @@ -79,6 +80,7 @@ class RequestReplier std::function<void(void*)> callback_; const char* topicr_; const char* topicw_; + void* data_; eprosima::fastdds::dds::DomainParticipant* participant_; @@ -129,8 +131,6 @@ class RequestReplier RequestReplier* node_; size_t matched_; - RequestTypeImpl req_; - ResponseTypeImpl res_; } listener_; diff --git a/sustainml_cpp/src/cpp/core/NodeImpl.cpp b/sustainml_cpp/src/cpp/core/NodeImpl.cpp index a1f833e..cbe34c1 100644 --- a/sustainml_cpp/src/cpp/core/NodeImpl.cpp +++ b/sustainml_cpp/src/cpp/core/NodeImpl.cpp @@ -89,19 +89,14 @@ NodeImpl::NodeImpl( RequestTypeImpl* in = static_cast<RequestTypeImpl*>(input); types::RequestType req; req = in; - std::cout << "Size of request received: " << sizeof(req) << " bytes" << std::endl; - std::cout << "Configuration received: " << static_cast<RequestTypeImpl*>(input)->configuration() << std::endl; - std::cout << "Node ID " << static_cast<int32_t>(common::get_node_id_from_name(name)) - << " receive request for node_id " << req.node_id() << std::endl; + if (req.node_id() == static_cast<int32_t>(common::get_node_id_from_name(name))) { - std::cout << "Request successfully receive in " << name << std::endl; - std::cout << "Configuring..." << std::endl; types::ResponseType res; req_res_listener_.on_configuration_request(req, res); req_res_->write_res(res.get_impl()); } - }, "sustainml/response", "sustainml/request"); + }, "sustainml/response", "sustainml/request", &req_data_); if (!init(name)) { @@ -127,19 +122,14 @@ NodeImpl::NodeImpl( RequestTypeImpl* in = static_cast<RequestTypeImpl*>(input); types::RequestType req; req = in; - std::cout << "Size of request received: " << sizeof(req) << " bytes" << std::endl; - std::cout << "Configuration received: " << static_cast<RequestTypeImpl*>(input)->configuration() << std::endl; - std::cout << "Node ID " << static_cast<int32_t>(common::get_node_id_from_name(name)) - << " receive request for node_id " << req.node_id() << std::endl; + if (req.node_id() == static_cast<int32_t>(common::get_node_id_from_name(name))) { - std::cout << "Request successfully receive in " << name << std::endl; - std::cout << "Configuring..." << std::endl; types::ResponseType res; req_res_listener_.on_configuration_request(req, res); req_res_->write_res(res.get_impl()); } - }, "sustainml/response", "sustainml/request"); + }, "sustainml/response", "sustainml/request", &req_data_); if (!init(name, opts)) { diff --git a/sustainml_cpp/src/cpp/core/NodeImpl.hpp b/sustainml_cpp/src/cpp/core/NodeImpl.hpp index 5b9c2b3..458f344 100644 --- a/sustainml_cpp/src/cpp/core/NodeImpl.hpp +++ b/sustainml_cpp/src/cpp/core/NodeImpl.hpp @@ -170,6 +170,8 @@ class NodeImpl RequestReplyListener& req_res_listener_; + RequestTypeImpl req_data_; + private: /** diff --git a/sustainml_cpp/src/cpp/core/RequestReplier.cpp b/sustainml_cpp/src/cpp/core/RequestReplier.cpp index 50e2f18..4fd597f 100644 --- a/sustainml_cpp/src/cpp/core/RequestReplier.cpp +++ b/sustainml_cpp/src/cpp/core/RequestReplier.cpp @@ -29,10 +29,12 @@ namespace core { RequestReplier::RequestReplier( std::function<void(void*)> callback, const char* topicw, - const char* topicr) + const char* topicr, + void* data) : callback_(callback) , topicw_(topicw) , topicr_(topicr) + , data_(data) , participant_(nullptr) , typeRes_(new ResponseTypeImplPubSubType()) , typeReq_(new RequestTypeImplPubSubType()) @@ -58,13 +60,13 @@ RequestReplier::RequestReplier( // Create a Topics if(std::string(topicw_) == "sustainml/request") { - topicR_= participant_->create_topic(topicr_, typeRes_.get_type_name(), TOPIC_QOS_DEFAULT); - topicW_= participant_->create_topic(topicw_, typeReq_.get_type_name(), TOPIC_QOS_DEFAULT); + topicR_= participant_->create_topic(topicr_, typeRes_.get_type_name(), TOPIC_QOS_DEFAULT); + topicW_= participant_->create_topic(topicw_, typeReq_.get_type_name(), TOPIC_QOS_DEFAULT); } else { - topicR_= participant_->create_topic(topicr_, typeReq_.get_type_name(), TOPIC_QOS_DEFAULT); - topicW_= participant_->create_topic(topicw_, typeRes_.get_type_name(), TOPIC_QOS_DEFAULT); + topicR_= participant_->create_topic(topicr_, typeReq_.get_type_name(), TOPIC_QOS_DEFAULT); + topicW_= participant_->create_topic(topicw_, typeRes_.get_type_name(), TOPIC_QOS_DEFAULT); } // Configure DataReader QoS @@ -122,39 +124,13 @@ void RequestReplier::RequestReplyControlListener::on_data_available( { // Create a data and SampleInfo instance SampleInfo info; - void* data; - - if (reader->get_topicdescription()->get_type_name() == node_->typeReq_.get_type_name()) - { - data = &req_; - - } - else if (reader->get_topicdescription()->get_type_name() == node_->typeRes_.get_type_name()) - { - data = &res_; - } - else - { - return; - } // Keep taking data until there is nothing to take - while (reader->take_next_sample(data, &info) == RETCODE_OK) + while (reader->take_next_sample(node_->data_, &info) == RETCODE_OK) { if (info.valid_data) { - std::cout << "Received new data value for topic " - << reader->get_topicdescription()->get_name() - << " with type " - << reader->get_topicdescription()->get_type_name() - << std::endl; - node_->callback_(data); - } - else - { - std::cout << "Remote writer for topic " - << reader->get_topicdescription()->get_name() - << " is dead" << std::endl; + node_->callback_(node_->data_); } } } diff --git a/sustainml_cpp/src/cpp/orchestrator/OrchestratorNode.cpp b/sustainml_cpp/src/cpp/orchestrator/OrchestratorNode.cpp index 1acb65b..b523e3c 100644 --- a/sustainml_cpp/src/cpp/orchestrator/OrchestratorNode.cpp +++ b/sustainml_cpp/src/cpp/orchestrator/OrchestratorNode.cpp @@ -120,15 +120,13 @@ OrchestratorNode::OrchestratorNode( ResponseTypeImpl* in = static_cast<ResponseTypeImpl*>(input); types::ResponseType res; res = in; - std::cout << "Size of response received: " << sizeof(res) << " bytes" << std::endl; - std::cout << "Configuration received: " << static_cast<ResponseTypeImpl*>(input)->configuration() << std::endl; - std::cout << "Response receive response from node_id " << res.node_id() << std::endl; + { std::lock_guard<std::mutex> lock(this->mtx_); this->res_ = res; } this->cv_.notify_all(); - }, "sustainml/request", "sustainml/response"); + }, "sustainml/request", "sustainml/response", res_.get_impl()); if (!init()) {