* add rclcpp::GuardCondition wrapping rcl_guard_condition_t
Signed-off-by: William Woodall <william@osrfoundation.org>
* WIP second wait set refactor, just guard conditions so far
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix typo
Signed-off-by: William Woodall <william@osrfoundation.org>
* removing a question/todo, I think this is fine as is
Signed-off-by: William Woodall <william@osrfoundation.org>
* added subscriptions and waitable to wait sets
Signed-off-by: William Woodall <william@osrfoundation.org>
* improve usability with subscriptions and wait sets
Signed-off-by: William Woodall <william@osrfoundation.org>
* adding take to subscription so it can be used without the executor
Signed-off-by: William Woodall <william@osrfoundation.org>
* add rclcpp::MessageInfo to replace use of rmw_message_info_t
Signed-off-by: William Woodall <william@osrfoundation.org>
* refactor Subscription and Executor so they can be used separately
Signed-off-by: William Woodall <william@osrfoundation.org>
* style and cpplint
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup take_serialized() and add tests for it
Signed-off-by: William Woodall <william@osrfoundation.org>
* add support for client and service to wait set
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix typo
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix typo
Signed-off-by: William Woodall <william@osrfoundation.org>
* fix review comment
Signed-off-by: William Woodall <william@osrfoundation.org>
* add thread-safe wait set policy
Signed-off-by: William Woodall <william@osrfoundation.org>
* add check for use with multiple wait set
Signed-off-by: William Woodall <william@osrfoundation.org>
* fixup visibility macro usage
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove vestigial test case
Signed-off-by: William Woodall <william@osrfoundation.org>
* move visibility macro fixes
Signed-off-by: William Woodall <william@osrfoundation.org>
* remove vestigial TODO
Signed-off-by: William Woodall <william@osrfoundation.org>
* Add InvalidParameterTypeException
Used to wrap the ParameterTypeException coming from ParameterValue::get() for improving the error message.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Describe new exception
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Update tests
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Added static single threaded executor functionality
Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>
executor enhanced to run clients and waitable
Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>
tested executor
Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>
added semi-dynamic feature to the executor
Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>
Jenkins error fixes
Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>
Added static single threaded executor functionality
Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>
* Added semi-dynamic feature and made changes based on review comments
Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>
* re-added accidentally deleted code in node.hpp, fixed static_single_threaded_executor.cpp w.r.t. intra-process change since last commit
Signed-off-by: MartinCornelis2 <martin.cornelis@nobleo.nl>
* Remove not needed comparison
wait_set_.size_of_* is always different than '0'
if we are inside the for loop
Signed-off-by: Mauro <mpasserino@irobot.com>
* If new entity added to a node: re-collect entities
Now we check ONLY node guard_conditions_
Some possible guard conditions to be triggered HERE are:
1. Ctrl+C guard condition
2. Executor interrupt_guard_condition_
3. Node guard_conditions_
4. Waitables guard conditions
5. ..more
The previous approach was only checking if NOT (1 & 2),
so if a Waitable was triggered, it would re-collect all
entities, even if no new node entity was added. This was the case
of the intra process manager, who relies on waitables.
Every time a subscriber got a message, all the entities
were collected.
Signed-off-by: Mauro <mpasserino@irobot.com>
* Implement static executor entities collector
Signed-off-by: Mauro <mpasserino@irobot.com>
* fixup and style
Signed-off-by: William Woodall <william@osrfoundation.org>
* mark new classes as final, with non-virtual destructors
Signed-off-by: William Woodall <william@osrfoundation.org>
* adding copyright to static executor files
Signed-off-by: Ishu Goel <ishu.goel@nobleo.nl>
* fixup
Signed-off-by: William Woodall <william@osrfoundation.org>
* cpplint fixes
Signed-off-by: William Woodall <william@osrfoundation.org>
Co-authored-by: Ishu Goel <ishu.goel@nobleo.nl>
Co-authored-by: MartinCornelis2 <martin.cornelis@nobleo.nl>
Co-authored-by: Mauro <mpasserino@irobot.com>
* Add equality operators for QoS profile
Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
* Use == operator for rmw_time_t as well
Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
* Add visibility macros for the new functions
Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
* Add tests for every member of the profile
Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
* Remove dangling space
Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
Some headers were being included even though they are not required and other headers were being included transitively.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
It was complaining about an unknown macro RCLCPP_SMART_PTR_DEFINITIONS.
Passing rclcpp include directories to cppcheck resolves the errors
reported in rclcpp_action and rclcpp_lifecycle.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
This fixes a cppcheck error that was detected when including the rclcpp headers in rclcpp_action and rclcpp_lifecycle.
It is not clear to me why cppcheck does not report the unitialized member when testing rclcpp directly.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
* Switch to using new rcutils_strerror.
Also increase timeouts for test_logging, which should reduce flakes on Windows.
Signed-off-by: Chris Lalancette <clalancette@openrobotics.org>
Capturing a cached reference allows a clock object that is not a local
(e.g. the one returned by Node::get_clock()) to be passed to the throttle
logging macro.
Signed-off-by: Matt Schickler <mschickler@gmail.com>
Co-Authored-By: Ivan Santiago Paunovic <ivanpauno@ekumenlabs.com>
The function was previously documented as being deprecated, but this change adds compiler warnings if it is used.
Ignore compiler warnings where the function is being tested and change to the preferred usage elsewhere.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
Fix for a build error on 32-bit Windows. Member functions use the
__thiscall convention by default which is incompatible with __cdecl.
Signed-off-by: Sean Kelly <sean@seankelly.dev>
* Assigning make_shared result to variables in test
Signed-off-by: Stephen Brawner <brawner@gmail.com>
* PR fixup
Signed-off-by: Stephen Brawner <brawner@gmail.com>
Otherwise, rclcpp_components_register_node() fails if used from a fat archive.
Related to https://github.com/ros2/ros2/issues/606.
Signed-off-by: Jacob Perron <jacob@openrobotics.org>