15 #include "rclcpp/parameter_events_filter.hpp"
22 using EventType = rclcpp::ParameterEventsFilter::EventType;
25 ParameterEventsFilter::ParameterEventsFilter(
26 std::shared_ptr<const rcl_interfaces::msg::ParameterEvent> event,
27 const std::vector<std::string> & names,
28 const std::vector<EventType> & types)
32 throw std::invalid_argument(
"event cannot be null");
34 if (std::find(types.begin(), types.end(), EventType::NEW) != types.end()) {
35 for (
auto & new_parameter : event->new_parameters) {
36 if (std::find(names.begin(), names.end(), new_parameter.name) != names.end()) {
38 EventPair(EventType::NEW, &new_parameter));
42 if (std::find(types.begin(), types.end(), EventType::CHANGED) != types.end()) {
43 for (
auto & changed_parameter : event->changed_parameters) {
44 if (std::find(names.begin(), names.end(), changed_parameter.name) != names.end()) {
46 EventPair(EventType::CHANGED, &changed_parameter));
50 if (std::find(types.begin(), types.end(), EventType::DELETED) != types.end()) {
51 for (
auto & deleted_parameter : event->deleted_parameters) {
52 if (std::find(names.begin(), names.end(), deleted_parameter.name) != names.end()) {
54 EventPair(EventType::DELETED, &deleted_parameter));
60 const std::vector<EventPair> &
RCLCPP_PUBLIC const std::vector< EventPair > & get_events() const
Get the result of the filter.
std::pair< EventType, const rcl_interfaces::msg::Parameter * > EventPair
Used for the listed results.