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;
	}
示例#2
0
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));
}