Class MergePipeline
Defined in File merge_pipeline.hpp
Class Documentation
-
class MergePipeline
Orchestrates multiple discovery layers with configurable merge policies.
Layers are added in priority order (first added = highest priority). Each layer produces entities and declares per-field-group MergePolicy. The pipeline merges entities by ID, resolving conflicts per policy.
Public Functions
-
explicit MergePipeline(rclcpp::Logger logger = rclcpp::get_logger("merge_pipeline"))
-
void add_layer(std::unique_ptr<DiscoveryLayer> layer)
Add a discovery layer to the pipeline.
- Parameters:
layer – Layer to add (priority = insertion order, first = highest)
-
MergeResult execute()
Execute all layers and merge results.
- Returns:
Merged entities with diagnostics report
-
inline MergeReport get_last_report() const
Get the last merge report (returned by value for thread safety)
Warning
NOT thread-safe on its own. In production, access only through HybridDiscoveryStrategy which holds mutex during reads. Direct calls from multiple threads are a data race.
-
void set_linker(std::unique_ptr<RuntimeLinker> linker, const ManifestConfig &config)
Set RuntimeLinker for post-merge app-to-node binding.
- Parameters:
linker – RuntimeLinker instance
config – ManifestConfig needed by RuntimeLinker::link() for unmanifested node policy
-
inline LinkingResult get_linking_result() const
Get the last linking result (returned by value for thread safety)
Warning
NOT thread-safe on its own. In production, access only through HybridDiscoveryStrategy which holds mutex during reads.
-
explicit MergePipeline(rclcpp::Logger logger = rclcpp::get_logger("merge_pipeline"))