#include "action_executor_factory.hh"
+#include "app_control_executor.hh"
+#include "plugin_executor.hh"
+
+namespace action {
+
+class DefaultActionExecutor : public common::AbstractActionExecutor {
+ public:
+ explicit DefaultActionExecutor() : AbstractActionExecutor("") {}
+ ~DefaultActionExecutor() = default;
+
+ int Execute(const common::ActionModel& model) override { return -1; }
+ void SetResultHandler(common::IResultHandler* handler) override {}
+};
+
std::unique_ptr<common::AbstractActionExecutor>
-action::ActionExecutorFactory::CreateExecutor(common::ActionType type) {
- return std::unique_ptr<common::AbstractActionExecutor>();
+ActionExecutorFactory::CreateExecutor(std::string instance,
+ const common::ActionModel& model) {
+ switch (model.GetType()) {
+ case common::ActionType::AppControl:
+ return std::make_unique<action::AppControlExecutor>(std::move(instance),
+ model);
+ case common::ActionType::Plugin:
+ return std::make_unique<action::PluginExecutor>(std::move(instance));
+ default:
+ return std::unique_ptr<common::AbstractActionExecutor>();
+ }
}
+
+} // namespace action
#ifndef ACTION_ACTION_EXECUTOR_FACTORY_HH_
#define ACTION_ACTION_EXECUTOR_FACTORY_HH_
+#include <string>
#include <memory>
+
#include "common/action_executor.hh"
namespace action {
class ActionExecutorFactory {
public:
static std::unique_ptr<common::AbstractActionExecutor> CreateExecutor(
- common::ActionType type);
+ std::string instance,
+ const common::ActionModel& model);
};
} // namespace action
int top_k,
float search_threshold) {}
-void ActionRequestHandler::OnExecute(const std::string& requester,
+void ActionRequestHandler::OnExecute(const std::string& instance,
common::ActionModel& model) {
LOG(DEBUG) << "OnExecute action : " << model.GetActionId()
<< ", appid : " << model.GetAppId();
- LOG(DEBUG) << "execute action type: "
- << (model.GetType() == common::ActionType::AppControl
- ? "AppControl"
- : "Plugin");
- auto executor = ActionExecutorFactory::CreateExecutor(model.GetType());
+ auto executor = ActionExecutorFactory::CreateExecutor(instance, model);
executor->SetResultHandler(this);
executor->Execute(model);
executors_.emplace_back(std::move(executor));
PluginExecutor* executor_ = nullptr;
};
-PluginExecutor::PluginExecutor(std::string id, const common::ActionModel& model)
+PluginExecutor::PluginExecutor(std::string id)
: AbstractActionExecutor(std::move(id)),
- model_(model),
plugin_manager_(
this,
"d::org.tizen.appfw.service.tizen_action_plugin_manager") {}
}
int PluginExecutor::Execute(const common::ActionModel& model) {
+ if (model.GetType() != common::ActionType::Plugin) {
+ LOG(ERROR) << "Invalid action type";
+ return -1;
+ }
+
LOG(ERROR) << "Plugin Execute : " << model.GetUri();
if (!Connect())
public rpc_port::plugin_manager_proxy::proxy::
PluginManager::IEventListener {
public:
- explicit PluginExecutor(std::string id, const common::ActionModel& model);
+ explicit PluginExecutor(std::string instance);
~PluginExecutor();
int Execute(const common::ActionModel& model) override;
void SetResultHandler(common::IResultHandler* handler) override;
void OnRejected() override;
private:
- common::ActionModel model_;
rpc_port::plugin_manager_proxy::proxy::PluginManager plugin_manager_;
common::IResultHandler* result_handler_ = nullptr;
bool connected_ = false;