Separate web_video_server into a component and an executable #168
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Public API Changes
web_video_server::WebVideoServernow inherits fromrclcpp::Node. Previously, theWebVideoServerclass had a private member variablenode_for interacting with the ROS 2 runtime.WebVideoServerwas changed to accept a single input argument of typerclcpp::NodeOptions. This is required for components.spinmethod was removed. This separates the definition of work from the means of executing it. Instead of theWebVideoServerneeding to have a public method for spinning the privatenode_member, the executor that does the work is now created outside of the class.Description
The ROS 2 (Humble) docs recommend writing applications as components:
The default deployment scheme for the
web_video_servernode remains the same: i.e., usingros2 run web_video_server web_video_server {parameter-args-here}.Having a component library available adds flexibility for users, particularly for those users looking to use intra-process memory for published camera topics and the web video server.