Class MergePipeline

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:
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.