Plugins
Covers Engine Plugin SDK 2.0.0 · Interface Plugin SDK 0.2.0
taskModule
Resolves and retains a module at configuration time; rejects unavailable or incompatible instances. The retained object owns lifetime, not device locking.
Declaration
template<class T> std::shared_ptr<T> taskModule(SDK_API* api, const TaskRuntime& runtime,
const std::string& plugin_id, const std::string& module_type_id) {
const auto name = taskArgument<std::string>(runtime, "module_instance_name");
auto module = std::dynamic_pointer_cast<T>(api->getModuleInstance(name));
const auto qualified = module_type_id.find('.') == std::string::npos ? plugin_id + "." + module_type_id : module_type_id;
if (!module || module->getPluginId() != plugin_id ||
(module->getModuleTypeId() != module_type_id && module->getModuleTypeId() != qualified))
throw std::runtime_error("Module `" + name + "` is missing or incompatible with " + qualified + ".");
return module;
}