GenericProcessor* createProcessorFromPluginInfo(Plugin::PluginType type, int index, String procName, String libName, int libVersion, bool source, bool sink) { PluginManager* pm = AccessClass::getPluginManager(); GenericProcessor* proc = nullptr; if (index > -1) { if (type == Plugin::NOT_A_PLUGIN_TYPE) { return createBuiltInProcessor(index); } else if (type == Plugin::PLUGIN_TYPE_PROCESSOR) { for (int i = 0; i < pm->getNumProcessors(); i++) { Plugin::ProcessorInfo info = pm->getProcessorInfo(i); if (procName.equalsIgnoreCase(info.name)) { int libIndex = pm->getLibraryIndexFromPlugin(Plugin::PLUGIN_TYPE_PROCESSOR, i); if (libName.equalsIgnoreCase(pm->getLibraryName(libIndex)) && libVersion == pm->getLibraryVersion(libIndex)) { proc = info.creator(); proc->setPluginData(Plugin::PLUGIN_TYPE_PROCESSOR, i); return proc; } } } } else if (type == Plugin::PLUGIN_TYPE_DATA_THREAD) { for (int i = 0; i < pm->getNumDataThreads(); i++) { Plugin::DataThreadInfo info = pm->getDataThreadInfo(i); if (procName.equalsIgnoreCase(info.name)) { int libIndex = pm->getLibraryIndexFromPlugin(Plugin::PLUGIN_TYPE_DATA_THREAD, i); if (libName.equalsIgnoreCase(pm->getLibraryName(libIndex)) && libVersion == pm->getLibraryVersion(libIndex)) { proc = new SourceNode(info.name, info.creator); proc->setPluginData(Plugin::PLUGIN_TYPE_DATA_THREAD, i); return proc; } } } } } proc = new PlaceholderProcessor(procName, libName, libVersion, source, sink); proc->setPluginData(Plugin::NOT_A_PLUGIN_TYPE, -1); return proc; }
void PluginClass::setPluginData(Plugin::PluginType type, int index) { PluginManager* pm = AccessClass::getPluginManager(); String name; pluginType = type; pluginIndex = index; switch (type) { case Plugin::ProcessorPlugin: { Plugin::ProcessorInfo i = pm->getProcessorInfo(index); name = i.name; } break; case Plugin::RecordEnginePlugin: { Plugin::RecordEngineInfo i = pm->getRecordEngineInfo(index); name = i.name; } break; case Plugin::DatathreadPlugin: { Plugin::DataThreadInfo i = pm->getDataThreadInfo(index); name = i.name; } break; case Plugin::FileSourcePlugin: { Plugin::FileSourceInfo i = pm->getFileSourceInfo(index); name = i.name; } break; case Plugin::NotAPlugin: { String pName; int pType; ProcessorManager::getProcessorNameAndType(BuiltInProcessor, index, pName, pType); name = pName; } default: return; } pluginName = name; libName = pm->getLibraryName(pm->getLibraryIndexFromPlugin(type, index)); libVersion = pm->getLibraryVersion(pm->getLibraryIndexFromPlugin(type, index)); }