Skip to content

Commit 6d767b1

Browse files
alsoraapojomovsky
authored andcommitted
add logs and minor fixes (irobot-ros#146)
* add logs and minor fixes Signed-off-by: Alberto Soragna <[email protected]> * use >0 rather than ==1 in comparison Signed-off-by: Alberto Soragna <[email protected]> --------- Signed-off-by: Alberto Soragna <[email protected]>
1 parent 69e426a commit 6d767b1

File tree

3 files changed

+41
-29
lines changed

3 files changed

+41
-29
lines changed

rclcpp/include/rclcpp/experimental/intra_process_manager.hpp

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -367,23 +367,35 @@ class IntraProcessManager
367367
if (service_it == services_.end()) {
368368
auto cli = get_client_intra_process(intra_process_client_id);
369369
auto warning_msg =
370-
"Intra-process service gone out of scope. "
370+
"Intra-process service not found. "
371371
"Do inter-process requests.\n"
372372
"Client service name: " + std::string(cli->get_service_name());
373373
RCLCPP_WARN(rclcpp::get_logger("rclcpp"), warning_msg.c_str());
374374
return;
375375
}
376376
auto service_intra_process_base = service_it->second.lock();
377-
if (service_intra_process_base) {
378-
auto service = std::dynamic_pointer_cast<
379-
rclcpp::experimental::ServiceIntraProcess<ServiceT>>(service_intra_process_base);
380-
if (service) {
381-
service->store_intra_process_request(
382-
intra_process_client_id, std::move(request));
383-
}
384-
} else {
377+
if (!service_intra_process_base) {
385378
services_.erase(service_it);
379+
auto cli = get_client_intra_process(intra_process_client_id);
380+
auto warning_msg =
381+
"Intra-process service gone out of scope. "
382+
"Do inter-process requests.\n"
383+
"Client service name: " + std::string(cli->get_service_name());
384+
RCLCPP_WARN(rclcpp::get_logger("rclcpp"), warning_msg.c_str());
385+
return;
386+
}
387+
auto service = std::dynamic_pointer_cast<
388+
rclcpp::experimental::ServiceIntraProcess<ServiceT>>(service_intra_process_base);
389+
if (!service) {
390+
auto cli = get_client_intra_process(intra_process_client_id);
391+
auto warning_msg =
392+
"Intra-process failed to cast server. "
393+
"Client service name: " + std::string(cli->get_service_name());
394+
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), warning_msg.c_str());
395+
return;
386396
}
397+
398+
service->store_intra_process_request(intra_process_client_id, std::move(request));
387399
}
388400

389401
template<

rclcpp/src/rclcpp/intra_process_manager.cpp

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -480,26 +480,14 @@ IntraProcessManager::service_is_available(uint64_t intra_process_client_id)
480480
{
481481
std::shared_lock<std::shared_timed_mutex> lock(mutex_);
482482

483-
auto service_it = clients_to_services_.find(intra_process_client_id);
484-
485-
if (service_it != clients_to_services_.end()) {
486-
// A server matching the client has been found
487-
return true;
488-
}
489-
return false;
483+
return clients_to_services_.count(intra_process_client_id) > 0u;
490484
}
491485

492486
bool
493487
IntraProcessManager::action_server_is_available(uint64_t ipc_action_client_id)
494488
{
495489
std::shared_lock<std::shared_timed_mutex> lock(mutex_);
496-
auto action_service_it = action_clients_to_servers_.find(ipc_action_client_id);
497-
498-
if (action_service_it != action_clients_to_servers_.end()) {
499-
// An action server matching the action client has been found
500-
return true;
501-
}
502-
return false;
490+
return action_clients_to_servers_.count(ipc_action_client_id) > 0u;
503491
}
504492

505493
uint64_t

rclcpp/src/rclcpp/parameter_service.cpp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,21 @@ ParameterService::ParameterService(
4141
const std::shared_ptr<rcl_interfaces::srv::GetParameters::Request> request,
4242
std::shared_ptr<rcl_interfaces::srv::GetParameters::Response> response)
4343
{
44+
if (request->names.empty()) {
45+
RCLCPP_WARN(rclcpp::get_logger("rclcpp"), "Received empty get_parameters request");
46+
return;
47+
}
48+
RCLCPP_INFO(rclcpp::get_logger("rclcpp"), "Received get_parameters request (%s...)", request->names[0].c_str());
49+
4450
try {
4551
auto parameters = node_params->get_parameters(request->names);
4652
for (const auto & param : parameters) {
4753
response->values.push_back(param.get_value_message());
4854
}
4955
} catch (const rclcpp::exceptions::ParameterNotDeclaredException & ex) {
50-
RCLCPP_DEBUG(rclcpp::get_logger("rclcpp"), "Failed to get parameters: %s", ex.what());
56+
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), "Failed to get parameters (%s...) : %s", request->names[0].c_str(), ex.what());
5157
} catch (const rclcpp::exceptions::ParameterUninitializedException & ex) {
52-
RCLCPP_DEBUG(rclcpp::get_logger("rclcpp"), "Failed to get parameters: %s", ex.what());
58+
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), "Failed to get parameter (%s...): %s", request->names[0].c_str(), ex.what());
5359
}
5460
},
5561
qos_profile, nullptr);
@@ -70,7 +76,7 @@ ParameterService::ParameterService(
7076
return static_cast<rclcpp::ParameterType>(type);
7177
});
7278
} catch (const rclcpp::exceptions::ParameterNotDeclaredException & ex) {
73-
RCLCPP_DEBUG(rclcpp::get_logger("rclcpp"), "Failed to get parameter types: %s", ex.what());
79+
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), "Failed to get parameter types: %s", ex.what());
7480
}
7581
},
7682
qos_profile, nullptr);
@@ -83,6 +89,12 @@ ParameterService::ParameterService(
8389
const std::shared_ptr<rcl_interfaces::srv::SetParameters::Request> request,
8490
std::shared_ptr<rcl_interfaces::srv::SetParameters::Response> response)
8591
{
92+
if (request->parameters.empty()) {
93+
RCLCPP_WARN(rclcpp::get_logger("rclcpp"), "Received empty set_parameters request");
94+
return;
95+
}
96+
RCLCPP_INFO(rclcpp::get_logger("rclcpp"), "Received set_parameters request (%s...)", request->parameters[0].name.c_str());
97+
8698
// Set parameters one-by-one, since there's no way to return a partial result if
8799
// set_parameters() fails.
88100
auto result = rcl_interfaces::msg::SetParametersResult();
@@ -91,7 +103,7 @@ ParameterService::ParameterService(
91103
result = node_params->set_parameters_atomically(
92104
{rclcpp::Parameter::from_parameter_msg(p)});
93105
} catch (const rclcpp::exceptions::ParameterNotDeclaredException & ex) {
94-
RCLCPP_DEBUG(rclcpp::get_logger("rclcpp"), "Failed to set parameter: %s", ex.what());
106+
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), "Failed to set parameter (%s...): %s", request->parameters[0].name.c_str(), ex.what());
95107
result.successful = false;
96108
result.reason = ex.what();
97109
}
@@ -119,7 +131,7 @@ ParameterService::ParameterService(
119131
auto result = node_params->set_parameters_atomically(pvariants);
120132
response->result = result;
121133
} catch (const rclcpp::exceptions::ParameterNotDeclaredException & ex) {
122-
RCLCPP_DEBUG(
134+
RCLCPP_ERROR(
123135
rclcpp::get_logger("rclcpp"), "Failed to set parameters atomically: %s", ex.what());
124136
response->result.successful = false;
125137
response->result.reason = "One or more parameters were not declared before setting";
@@ -139,7 +151,7 @@ ParameterService::ParameterService(
139151
auto descriptors = node_params->describe_parameters(request->names);
140152
response->descriptors = descriptors;
141153
} catch (const rclcpp::exceptions::ParameterNotDeclaredException & ex) {
142-
RCLCPP_DEBUG(rclcpp::get_logger("rclcpp"), "Failed to describe parameters: %s", ex.what());
154+
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), "Failed to describe parameters: %s", ex.what());
143155
}
144156
},
145157
qos_profile, nullptr);

0 commit comments

Comments
 (0)