Skip to content

Commit 7bbe9e1

Browse files
alsoraskyegalaxy
authored andcommitted
add logs and minor fixes (#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 38e47c3 commit 7bbe9e1

File tree

3 files changed

+48
-36
lines changed

3 files changed

+48
-36
lines changed

rclcpp/include/rclcpp/experimental/intra_process_manager.hpp

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -408,23 +408,35 @@ class IntraProcessManager
408408
if (service_it == services_.end()) {
409409
auto cli = get_client_intra_process(intra_process_client_id);
410410
auto warning_msg =
411-
"Intra-process service gone out of scope. "
411+
"Intra-process service not found. "
412412
"Do inter-process requests.\n"
413413
"Client service name: " + std::string(cli->get_service_name());
414414
RCLCPP_WARN(rclcpp::get_logger("rclcpp"), warning_msg.c_str());
415415
return;
416416
}
417417
auto service_intra_process_base = service_it->second.lock();
418-
if (service_intra_process_base) {
419-
auto service = std::dynamic_pointer_cast<
420-
rclcpp::experimental::ServiceIntraProcess<ServiceT>>(service_intra_process_base);
421-
if (service) {
422-
service->store_intra_process_request(
423-
intra_process_client_id, std::move(request));
424-
}
425-
} else {
418+
if (!service_intra_process_base) {
426419
services_.erase(service_it);
420+
auto cli = get_client_intra_process(intra_process_client_id);
421+
auto warning_msg =
422+
"Intra-process service gone out of scope. "
423+
"Do inter-process requests.\n"
424+
"Client service name: " + std::string(cli->get_service_name());
425+
RCLCPP_WARN(rclcpp::get_logger("rclcpp"), warning_msg.c_str());
426+
return;
427+
}
428+
auto service = std::dynamic_pointer_cast<
429+
rclcpp::experimental::ServiceIntraProcess<ServiceT>>(service_intra_process_base);
430+
if (!service) {
431+
auto cli = get_client_intra_process(intra_process_client_id);
432+
auto warning_msg =
433+
"Intra-process failed to cast server. "
434+
"Client service name: " + std::string(cli->get_service_name());
435+
RCLCPP_ERROR(rclcpp::get_logger("rclcpp"), warning_msg.c_str());
436+
return;
427437
}
438+
439+
service->store_intra_process_request(intra_process_client_id, std::move(request));
428440
}
429441

430442
template<

rclcpp/src/rclcpp/intra_process_manager.cpp

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -398,20 +398,6 @@ IntraProcessManager::get_service_intra_process(uint64_t intra_process_service_id
398398
}
399399
}
400400

401-
bool
402-
IntraProcessManager::service_is_available(uint64_t intra_process_client_id)
403-
{
404-
std::shared_lock<std::shared_timed_mutex> lock(mutex_);
405-
406-
auto service_it = clients_to_services_.find(intra_process_client_id);
407-
408-
if (service_it != clients_to_services_.end()) {
409-
// A server matching the client has been found
410-
return true;
411-
}
412-
return false;
413-
}
414-
415401
ClientIntraProcessBase::SharedPtr
416402
IntraProcessManager::get_client_intra_process(uint64_t intra_process_client_id)
417403
{
@@ -478,16 +464,18 @@ IntraProcessManager::get_action_server_intra_process(
478464
}
479465

480466
bool
481-
IntraProcessManager::action_server_is_available(uint64_t ipc_action_client_id)
467+
IntraProcessManager::service_is_available(uint64_t intra_process_client_id)
482468
{
483469
std::shared_lock<std::shared_timed_mutex> lock(mutex_);
484-
auto action_service_it = action_clients_to_servers_.find(ipc_action_client_id);
485470

486-
if (action_service_it != action_clients_to_servers_.end()) {
487-
// An action server matching the action client has been found
488-
return true;
489-
}
490-
return false;
471+
return clients_to_services_.count(intra_process_client_id) > 0u;
472+
}
473+
474+
bool
475+
IntraProcessManager::action_server_is_available(uint64_t ipc_action_client_id)
476+
{
477+
std::shared_lock<std::shared_timed_mutex> lock(mutex_);
478+
return action_clients_to_servers_.count(ipc_action_client_id) > 0u;
491479
}
492480

493481
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)