Merge pull request #32 from ros2/service_check_third_arg

ensure type of third argument of service method
This commit is contained in:
Dirk Thomas 2015-05-18 11:47:56 -07:00
commit 150facd1ec

View file

@ -163,15 +163,21 @@ private:
typename ServiceT, typename ServiceT,
typename FunctorT, typename FunctorT,
typename std::enable_if< typename std::enable_if<
function_traits<FunctorT>::arity == 2 && function_traits<FunctorT>::arity == 2
>::type * = nullptr,
typename std::enable_if<
std::is_same< std::is_same<
typename function_traits<FunctorT>::template argument_type<0>, typename function_traits<FunctorT>::template argument_type<0>,
typename std::shared_ptr<typename ServiceT::Request> typename std::shared_ptr<typename ServiceT::Request>
>::value && >::value
>::type * = nullptr,
typename std::enable_if<
std::is_same< std::is_same<
typename function_traits<FunctorT>::template argument_type<1>, typename function_traits<FunctorT>::template argument_type<1>,
typename std::shared_ptr<typename ServiceT::Response> typename std::shared_ptr<typename ServiceT::Response>
>::value>::type * = nullptr> >::value
>::type * = nullptr
>
typename rclcpp::service::Service<ServiceT>::SharedPtr typename rclcpp::service::Service<ServiceT>::SharedPtr
create_service_internal( create_service_internal(
rmw_service_t * service_handle, rmw_service_t * service_handle,
@ -188,15 +194,27 @@ private:
typename ServiceT, typename ServiceT,
typename FunctorT, typename FunctorT,
typename std::enable_if< typename std::enable_if<
function_traits<FunctorT>::arity == 3 && function_traits<FunctorT>::arity == 3
>::type * = nullptr,
typename std::enable_if<
std::is_same< std::is_same<
typename function_traits<FunctorT>::template argument_type<0>, typename function_traits<FunctorT>::template argument_type<0>,
std::shared_ptr<rmw_request_id_t> std::shared_ptr<rmw_request_id_t>
>::value && >::value
>::type * = nullptr,
typename std::enable_if<
std::is_same< std::is_same<
typename function_traits<FunctorT>::template argument_type<1>, typename function_traits<FunctorT>::template argument_type<1>,
typename std::shared_ptr<typename ServiceT::Request> typename std::shared_ptr<typename ServiceT::Request>
>::value>::type * = nullptr> >::value
>::type * = nullptr,
typename std::enable_if<
std::is_same<
typename function_traits<FunctorT>::template argument_type<2>,
typename std::shared_ptr<typename ServiceT::Response>
>::value
>::type * = nullptr
>
typename rclcpp::service::Service<ServiceT>::SharedPtr typename rclcpp::service::Service<ServiceT>::SharedPtr
create_service_internal( create_service_internal(
rmw_service_t * service_handle, rmw_service_t * service_handle,