#pragma once #include #include #include #include #include "core/plugin_system/IProtocolFramerPlugin.h" #include "core/plugin_system/IProtocolMapperPlugin.h" #include "core/plugin_system/IProtocolPlugin.h" namespace softbus::core::plugin_system { class PluginManager { public: PluginManager() = default; void registerProtocolPlugin(std::shared_ptr plugin); std::shared_ptr selectProtocolPlugin(softbus::core::models::ProtocolType protocol) const; void unregisterProtocolPlugin(const QString& pluginId); void registerProtocolFramerPlugin(std::shared_ptr plugin); std::shared_ptr selectProtocolFramerPlugin( softbus::core::models::ProtocolType protocol) const; void unregisterProtocolFramerPlugin(const QString& pluginId); void registerProtocolMapperPlugin(std::shared_ptr plugin); std::shared_ptr selectProtocolMapperPlugin( softbus::core::models::ProtocolType protocol) const; void unregisterProtocolMapperPlugin(const QString& pluginId); QStringList registeredProtocolPluginIds() const; QStringList registeredProtocolFramerPluginIds() const; QStringList registeredProtocolMapperPluginIds() const; private: QHash> m_protocolPluginsById; QHash> m_protocolPluginsByType; QHash> m_protocolFramerPluginsById; QHash> m_protocolFramerPluginsByType; QHash> m_protocolMapperPluginsById; QHash> m_protocolMapperPluginsByType; }; } // namespace softbus::core::plugin_system