From: Vitaliy Cherepanov/AI Tools Lab/Engineer/삼성전자 Date: Fri, 1 Jun 2018 07:36:36 +0000 (+0300) Subject: nnc: Implement AbstractPluginInstance class (#266) X-Git-Tag: nncc_backup~2644 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d80b1801433e3041d5a3da4bf86d249f0e94bbb0;p=platform%2Fcore%2Fml%2Fnnfw.git nnc: Implement AbstractPluginInstance class (#266) nnc: implement AbstractPluginInstance class Virtual plugin instance class. Provides basic API for communication between plugin and nnc Signed-off-by: Vitaliy Cherepanov --- diff --git a/contrib/nnc/libs/plugin/include/PluginInstance.h b/contrib/nnc/libs/plugin/include/PluginInstance.h new file mode 100644 index 0000000..558d59b --- /dev/null +++ b/contrib/nnc/libs/plugin/include/PluginInstance.h @@ -0,0 +1,48 @@ +#ifndef __PLUGIN_INSTANCE_H__ +#define __PLUGIN_INSTANCE_H__ + +#include +#include +#include "AbstractSession.h" + +namespace nncc +{ +namespace contrib +{ +namespace plugin +{ + +// +// This class and its methods are NOT thread safe +// +class AbstractPluginInstance +{ +public: + static const std::string paramPluginVersion; + static const std::string paramPluginName; + +public: + AbstractPluginInstance(); + virtual ~AbstractPluginInstance(); + + virtual void fillSessionBase(PluginType type, const std::string &ver, + const std::string &pluginName); + + virtual void fillSession() = 0; + virtual void setParam(const std::string &name) = 0; + virtual void setParam(const std::string &name, const std::string &value) = 0; + virtual void checkConfig() = 0; + virtual void *execute(void *data) = 0; + + virtual void setSession(std::shared_ptr &session); + virtual std::shared_ptr getSession() const; + +private: + std::shared_ptr _session; +}; + +} // namespace plugin +} // namespace contrib +} // namespace nncc + +#endif // __PLUGIN_INSTANCE_H__ diff --git a/contrib/nnc/libs/plugin/src/PluginInstance.cpp b/contrib/nnc/libs/plugin/src/PluginInstance.cpp new file mode 100644 index 0000000..f1688c3 --- /dev/null +++ b/contrib/nnc/libs/plugin/src/PluginInstance.cpp @@ -0,0 +1,40 @@ +#include +#include "PluginInstance.h" +#include "PluginException.h" + +namespace nncc +{ +namespace contrib +{ +namespace plugin +{ + +const std::string AbstractPluginInstance::paramPluginVersion = "version"; +const std::string AbstractPluginInstance::paramPluginName = "plugin name"; + +void AbstractPluginInstance::fillSessionBase(PluginType type, const std::string &ver, + const std::string &pluginName) +{ + getSession()->setPluginType(type); + getSession()->addInfo(paramPluginVersion, ver); + getSession()->addInfo(paramPluginName, pluginName); +} + +void AbstractPluginInstance::setSession(std::shared_ptr &session) +{ + _session = session; +} + +std::shared_ptr AbstractPluginInstance::getSession() const +{ + if (_session == nullptr) + throw nncc::contrib::PluginException("session not set!"); + return _session; +} + +AbstractPluginInstance::AbstractPluginInstance() : _session(nullptr) {} +AbstractPluginInstance::~AbstractPluginInstance() {} + +} // namespace plugin +} // namespace contrib +} // namespace nncc