* Copyright (c), Huawei Technologies Co., Ltd. 2024-2024.All rights reserved.
*/
#ifndef MSINSIGHT_BASEPLUGIN_H
#define MSINSIGHT_BASEPLUGIN_H
#include <vector>
#include "BaseModule.h"
#include "ProtocolUtil.h"
#include "ApiHandler.h"
namespace Dic::Core {
class BasePlugin {
public:
explicit BasePlugin(std::string pluginName): pluginName_(pluginName) {};
virtual ~BasePlugin() = default;
std::string GetPluginName() { return pluginName_; };
virtual std::unique_ptr<Module::BaseModule> GetModule() { return nullptr; };
virtual std::unique_ptr<Module::ProtocolUtil> GetProtocolUtil() { return nullptr; };
virtual std::map<std::string, std::shared_ptr<ApiHandler>> GetAllHandlers() { return {}; };
virtual std::vector<std::string> GetModuleConfig() { return {}; };
virtual uint8_t GetOrder() { return UINT8_MAX; };
protected:
std::string pluginName_;
};
struct PluginRegister {
explicit PluginRegister(std::unique_ptr<BasePlugin> plugin);
};
}
#endif