Fix order of parameters

This commit is contained in:
Esteve Fernandez 2015-03-06 15:40:37 -08:00
parent 858671a864
commit bb8cad74ee
3 changed files with 19 additions and 17 deletions

View file

@ -67,7 +67,8 @@ public:
virtual std::shared_ptr<void> create_response() = 0; virtual std::shared_ptr<void> create_response() = 0;
virtual std::shared_ptr<void> create_request_header() = 0; virtual std::shared_ptr<void> create_request_header() = 0;
virtual void handle_response(std::shared_ptr<void> &response, std::shared_ptr<void> &req_id) = 0; virtual void handle_response(std::shared_ptr<void> &request_header,
std::shared_ptr<void> &response) = 0;
private: private:
RCLCPP_DISABLE_COPY(ClientBase); RCLCPP_DISABLE_COPY(ClientBase);
@ -106,11 +107,11 @@ public:
return std::shared_ptr<void>(new rmw_request_id_t); return std::shared_ptr<void>(new rmw_request_id_t);
} }
void handle_response(std::shared_ptr<void> &response, std::shared_ptr<void> &req_id) void handle_response(std::shared_ptr<void> &request_header, std::shared_ptr<void> &response)
{ {
auto typed_req_id = std::static_pointer_cast<rmw_request_id_t>(req_id); auto typed_request_header = std::static_pointer_cast<rmw_request_id_t>(request_header);
auto typed_response = std::static_pointer_cast<typename ServiceT::Response>(response); auto typed_response = std::static_pointer_cast<typename ServiceT::Response>(response);
int64_t sequence_number = typed_req_id->sequence_number; int64_t sequence_number = typed_request_header->sequence_number;
auto tuple = this->pending_requests_[sequence_number]; auto tuple = this->pending_requests_[sequence_number];
auto call_promise = std::get<0>(tuple); auto call_promise = std::get<0>(tuple);
auto callback = std::get<1>(tuple); auto callback = std::get<1>(tuple);

View file

@ -176,16 +176,16 @@ protected:
execute_service( execute_service(
rclcpp::service::ServiceBase::SharedPtr &service) rclcpp::service::ServiceBase::SharedPtr &service)
{ {
std::shared_ptr<void> request = service->create_request();
std::shared_ptr<void> request_header = service->create_request_header(); std::shared_ptr<void> request_header = service->create_request_header();
std::shared_ptr<void> request = service->create_request();
bool taken = false; bool taken = false;
rmw_take_request(service->service_handle_, rmw_take_request(service->service_handle_,
request.get(),
request_header.get(), request_header.get(),
request.get(),
&taken); &taken);
if (taken) if (taken)
{ {
service->handle_request(request, request_header); service->handle_request(request_header, request);
} }
else else
{ {
@ -199,16 +199,16 @@ protected:
execute_client( execute_client(
rclcpp::client::ClientBase::SharedPtr &client) rclcpp::client::ClientBase::SharedPtr &client)
{ {
std::shared_ptr<void> response = client->create_response();
std::shared_ptr<void> request_header = client->create_request_header(); std::shared_ptr<void> request_header = client->create_request_header();
std::shared_ptr<void> response = client->create_response();
bool taken = false; bool taken = false;
taken = rmw_take_response(client->client_handle_, rmw_take_response(client->client_handle_,
response.get(), request_header.get(),
request_header.get(), response.get(),
&taken); &taken);
if (taken) if (taken)
{ {
client->handle_response(response, request_header); client->handle_response(request_header, response);
} }
else else
{ {

View file

@ -66,7 +66,8 @@ public:
virtual std::shared_ptr<void> create_request() = 0; virtual std::shared_ptr<void> create_request() = 0;
virtual std::shared_ptr<void> create_request_header() = 0; virtual std::shared_ptr<void> create_request_header() = 0;
virtual void handle_request(std::shared_ptr<void> &request, std::shared_ptr<void> &req_id) = 0; virtual void handle_request(std::shared_ptr<void> &request_header,
std::shared_ptr<void> &request) = 0;
private: private:
RCLCPP_DISABLE_COPY(ServiceBase); RCLCPP_DISABLE_COPY(ServiceBase);
@ -103,13 +104,13 @@ public:
return std::shared_ptr<void>(new rmw_request_id_t); return std::shared_ptr<void>(new rmw_request_id_t);
} }
void handle_request(std::shared_ptr<void> &request, std::shared_ptr<void> &req_id) void handle_request(std::shared_ptr<void> &request_header, std::shared_ptr<void> &request)
{ {
auto typed_request = std::static_pointer_cast<typename ServiceT::Request>(request); auto typed_request = std::static_pointer_cast<typename ServiceT::Request>(request);
auto typed_req_id = std::static_pointer_cast<rmw_request_id_t>(req_id); auto typed_request_header = std::static_pointer_cast<rmw_request_id_t>(request_header);
auto response = std::shared_ptr<typename ServiceT::Response>(new typename ServiceT::Response); auto response = std::shared_ptr<typename ServiceT::Response>(new typename ServiceT::Response);
callback_(typed_request, response); callback_(typed_request, response);
send_response(typed_req_id, response); send_response(typed_request_header, response);
} }
void send_response(std::shared_ptr<rmw_request_id_t> &req_id, void send_response(std::shared_ptr<rmw_request_id_t> &req_id,