update to use separated action types (#601)

* match renamed action types

* fix action type casting

* rename type/field to use correct term

* rename custom GoalID type to avoid naming collision, update types using unique_identifier_msgs

* remove obsolete comments

* change signature of set_succeeded / set_canceled

* change signature of     on_terminal_state_(uuid_, result_msg);set_succeeded / set_canceled

* change signature of set_aborted

* change signature of publish_feedback

* update another test
This commit is contained in:
Michel Hidalgo 2019-03-11 21:12:47 -07:00 committed by Dirk Thomas
parent d2d9ad8796
commit 718d24f942
11 changed files with 220 additions and 219 deletions

View file

@ -366,10 +366,10 @@ ClientBase::send_cancel_request(std::shared_ptr<void> request, ResponseCallback
pimpl_->pending_cancel_responses[sequence_number] = callback;
}
GoalID
GoalUUID
ClientBase::generate_goal_id()
{
GoalID goal_id;
GoalUUID goal_id;
// TODO(hidmic): Do something better than this for UUID generation.
// std::generate(
// goal_id.uuid.begin(), goal_id.uuid.end(),

View file

@ -28,7 +28,7 @@
#include <vector>
using rclcpp_action::ServerBase;
using rclcpp_action::GoalID;
using rclcpp_action::GoalUUID;
namespace rclcpp_action
{
@ -62,11 +62,11 @@ public:
bool goal_expired_ = false;
// Results to be kept until the goal expires after reaching a terminal state
std::unordered_map<GoalID, std::shared_ptr<void>> goal_results_;
std::unordered_map<GoalUUID, std::shared_ptr<void>> goal_results_;
// Requests for results are kept until a result becomes available
std::unordered_map<GoalID, std::vector<rmw_request_id_t>> result_requests_;
std::unordered_map<GoalUUID, std::vector<rmw_request_id_t>> result_requests_;
// rcl goal handles are kept so api to send result doesn't try to access freed memory
std::unordered_map<GoalID, std::shared_ptr<rcl_action_goal_handle_t>> goal_handles_;
std::unordered_map<GoalUUID, std::shared_ptr<rcl_action_goal_handle_t>> goal_handles_;
rclcpp::Logger logger_;
};
@ -228,7 +228,7 @@ ServerBase::execute_goal_request_received()
rclcpp::exceptions::throw_from_rcl_error(ret);
}
GoalID uuid = get_goal_id_from_goal_request(message.get());
GoalUUID uuid = get_goal_id_from_goal_request(message.get());
convert(uuid, &goal_info);
// Call user's callback, getting the user's response and a ros message to send back
@ -339,7 +339,7 @@ ServerBase::execute_cancel_request_received()
// For each canceled goal, call cancel callback
for (size_t i = 0; i < goals.size; ++i) {
const rcl_action_goal_info_t & goal_info = goals.data[i];
GoalID uuid;
GoalUUID uuid;
convert(goal_info, &uuid);
auto response_code = call_handle_cancel_callback(uuid);
if (CancelResponse::ACCEPT == response_code) {
@ -388,7 +388,7 @@ ServerBase::execute_result_request_received()
std::shared_ptr<void> result_response;
// check if the goal exists
GoalID uuid = get_goal_id_from_result_request(result_request.get());
GoalUUID uuid = get_goal_id_from_result_request(result_request.get());
rcl_action_goal_info_t goal_info;
convert(uuid, &goal_info);
bool goal_exists;
@ -433,7 +433,7 @@ ServerBase::execute_check_expired_goals()
rclcpp::exceptions::throw_from_rcl_error(ret);
} else if (num_expired) {
// A goal expired!
GoalID uuid;
GoalUUID uuid;
convert(expired_goals[0], &uuid);
RCLCPP_DEBUG(pimpl_->logger_, "Expired goal %s", to_string(uuid).c_str());
pimpl_->goal_results_.erase(uuid);
@ -497,7 +497,7 @@ ServerBase::publish_status()
}
void
ServerBase::publish_result(const GoalID & uuid, std::shared_ptr<void> result_msg)
ServerBase::publish_result(const GoalUUID & uuid, std::shared_ptr<void> result_msg)
{
// Check that the goal exists
rcl_action_goal_info_t goal_info;

View file

@ -20,7 +20,7 @@
namespace rclcpp_action
{
std::string
to_string(const GoalID & goal_id)
to_string(const GoalUUID & goal_id)
{
std::stringstream stream;
stream << std::hex;
@ -31,7 +31,7 @@ to_string(const GoalID & goal_id)
}
void
convert(const GoalID & goal_id, rcl_action_goal_info_t * info)
convert(const GoalUUID & goal_id, rcl_action_goal_info_t * info)
{
for (size_t i = 0; i < 16; ++i) {
info->goal_id.uuid[i] = goal_id[i];
@ -39,7 +39,7 @@ convert(const GoalID & goal_id, rcl_action_goal_info_t * info)
}
void
convert(const rcl_action_goal_info_t & info, GoalID * goal_id)
convert(const rcl_action_goal_info_t & info, GoalUUID * goal_id)
{
for (size_t i = 0; i < 16; ++i) {
(*goal_id)[i] = info.goal_id.uuid[i];