From: Youngjae Shin Date: Tue, 5 Nov 2019 07:28:18 +0000 (+0900) Subject: revise change cb architecture X-Git-Tag: submit/tizen/20200319.043412~35 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e86b1d93619641ec50c3b06fcab9efbdb71e15d4;p=platform%2Fcore%2Fsystem%2Fmodes.git revise change cb architecture --- diff --git a/include/Plugin.h b/include/Plugin.h index f7f1a22..d5490a3 100644 --- a/include/Plugin.h +++ b/include/Plugin.h @@ -21,8 +21,6 @@ namespace ModeSupervisorNamespace { - typedef void valueChangedCb(const std::string &key, void *userData); - class Plugin { public: Plugin() @@ -98,15 +96,6 @@ namespace ModeSupervisorNamespace { { return std::string(); } - virtual int setChangedCallback(valueChangedCb callback, const std::string &key, void *userData) - { - return MODES_ERROR_NOT_SUPPORTED; - } - - virtual int unSetChangedCallback(valueChangedCb callback, const std::string &key, void *userData) - { - return MODES_ERROR_NOT_SUPPORTED; - } private: std::string name; /* plugin key */ }; diff --git a/include/PluginAction.h b/include/PluginAction.h index 6a440ff..fd2ab45 100644 --- a/include/PluginAction.h +++ b/include/PluginAction.h @@ -20,6 +20,8 @@ namespace ModeSupervisorNamespace { + typedef void (*valueChangedCB)(void *userData); + class PluginAction { public: PluginAction(const std::string &actionName) @@ -44,6 +46,14 @@ namespace ModeSupervisorNamespace { { return MODES_ERROR_NOT_SUPPORTED; } + virtual int setChangedCallback(valueChangedCB callback, void *userData) + { + return MODES_ERROR_NOT_SUPPORTED; + } + virtual int unSetChangedCallback(valueChangedCB callback, void *userData) + { + return MODES_ERROR_NOT_SUPPORTED; + } private: const std::string name; }; diff --git a/plugin/TestPlugin.cpp b/plugin/TestPlugin.cpp index 52ccb23..7c47378 100644 --- a/plugin/TestPlugin.cpp +++ b/plugin/TestPlugin.cpp @@ -41,9 +41,6 @@ public: double getDouble(const std::string &key) override; bool getBool(const std::string &key) override; std::string getString(const std::string &key) override; - - int setChagnedCallback(valueChangedCb callback, const std::string &key, void *userData); - int unSetChagnedCallback(valueChangedCb callback, const std::string &key, void *userData); }; extern "C" API Plugin *objectCreate(void) @@ -153,13 +150,3 @@ std::string TestPlugin::getString(const std::string &key) DBG("TestPlugin::getString(%s)", key.c_str()); return std::string("test"); } - -int TestPlugin::setChagnedCallback(valueChangedCb callback, const std::string &key, void *userData) -{ - return MODES_ERROR_NONE; -} - -int TestPlugin::unSetChagnedCallback(valueChangedCb callback, const std::string &key, void *userData) -{ - return MODES_ERROR_NONE; -} diff --git a/plugin/TestPluginAction.cpp b/plugin/TestPluginAction.cpp index 90f042c..218a42b 100644 --- a/plugin/TestPluginAction.cpp +++ b/plugin/TestPluginAction.cpp @@ -46,3 +46,13 @@ int TestPluginAction::parse(const std::string &info) DBG("serialized info(%s)", info.c_str()); return MODES_ERROR_NONE; } + +int TestPluginAction::setChangedCallback(valueChangedCB callback, void *userData) +{ + return MODES_ERROR_NONE; +} + +int TestPluginAction::unSetChangedCallback(valueChangedCB callback, void *userData) +{ + return MODES_ERROR_NONE; +} diff --git a/plugin/TestPluginAction.h b/plugin/TestPluginAction.h index c8dffbd..fe373da 100644 --- a/plugin/TestPluginAction.h +++ b/plugin/TestPluginAction.h @@ -29,6 +29,8 @@ public: int undo() override; std::string serialize() override; int parse(const std::string &data) override; + int setChangedCallback(valueChangedCB callback, void *userData) override; + int unSetChangedCallback(valueChangedCB callback, void *userData) override; }; MODES_NAMESPACE_END diff --git a/supervisor/Action.cpp b/supervisor/Action.cpp index c4e6d6d..dcac35c 100644 --- a/supervisor/Action.cpp +++ b/supervisor/Action.cpp @@ -20,13 +20,13 @@ MODES_NAMESPACE_USE; -void Action::valueChangedCallback(const std::string &key, void *userData) +void Action::valueChangedCallback(void *userData) { Action *action = (Action*)userData; RET_IF(NULL == action); action->setIsChanged(); - DBG("Action(%s) Changed", key.c_str()); + DBG("Action(%s) Changed", action->ruleName.c_str()); } Action::Action() diff --git a/supervisor/Action.h b/supervisor/Action.h index a44e3ad..12141b4 100644 --- a/supervisor/Action.h +++ b/supervisor/Action.h @@ -56,7 +56,7 @@ protected: std::string ruleName; Plugin *plugin; PluginAction *piAction; - static void valueChangedCallback(const std::string &key, void *userData); + static void valueChangedCallback(void *userData); private: std::string id; diff --git a/supervisor/TAction.h b/supervisor/TAction.h index a2cda93..41f73c9 100644 --- a/supervisor/TAction.h +++ b/supervisor/TAction.h @@ -80,7 +80,7 @@ public: ERR("plugin(%s) getUndoAction() Fail", plugin->getName().c_str()); return MODES_ERROR_NOT_SUPPORTED; } - plugin->setChangedCallback(valueChangedCallback, ruleName.substr(pos + 1), this); + tmpAction->setChangedCallback(valueChangedCallback, this); piAction = tmpAction; return MODES_ERROR_NONE; @@ -109,7 +109,8 @@ public: ERR("plugin(%s) set() Fail(%d)", plugin->getName().c_str(), ret); return ret; } - plugin->setChangedCallback(valueChangedCallback, ruleName.substr(pos + 1), this); + if (tmpAction) + tmpAction->setChangedCallback(valueChangedCallback, this); piAction = tmpAction; return MODES_ERROR_NONE; @@ -135,10 +136,9 @@ public: { RETM_IF(NULL == plugin, "Action(%s) : No plugin", ruleName.c_str()); - int pos = ruleName.find_first_of("."); - plugin->unSetChangedCallback(valueChangedCallback, ruleName.substr(pos + 1), this); if (nullptr != piAction) { - plugin->undo(piAction); + piAction->unSetChangedCallback(valueChangedCallback, this); + plugin->undo(piAction); // piAction is deleted in undo() piAction = nullptr; } else { ERR("Action(%s) : value changed or no Action", ruleName.c_str());