93 const std::string & entity_name,
const std::function<std::shared_ptr<InstanceT>()> & factory)
98 static std::mutex mutex;
99 static std::unordered_map<std::string, std::weak_ptr<InstanceT>> registry;
102 const std::string key = context_.getFullyQualifiedRosNodeName() +
"/" + entity_name;
104 std::unique_lock lock(mutex);
105 if (
const auto it = registry.find(key); it != registry.end()) {
106 if (
const std::shared_ptr<InstanceT> existing = it->second.lock())
return existing;
108 const std::shared_ptr<InstanceT> instance = factory();
109 registry[key] = instance;
Additional parameters specific to ROS 2 determined at runtime by TreeBuilder.