diff options
author | wang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com> | 2019-01-08 09:40:05 +0800 |
---|---|---|
committer | wang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com> | 2019-01-08 09:40:05 +0800 |
commit | 64b268e9c1151c1ccff3b9a20cbe3901f347e9ee (patch) | |
tree | 86448680504c91d0f988ba944cc8e9708c9e0637 | |
parent | 0a47c007af262ac91bfa219a7b848aa0046005b3 (diff) |
add event tabble
Change-Id: Ic6897f79ecc63ee869b51915b88679d382b95ea6
-rw-r--r-- | src/homescreen.cpp | 3 | ||||
-rw-r--r-- | src/hs-clientmanager.cpp | 12 | ||||
-rw-r--r-- | src/hs-clientmanager.h | 15 |
3 files changed, 29 insertions, 1 deletions
diff --git a/src/homescreen.cpp b/src/homescreen.cpp index 0f6a10d..73b2cc9 100644 --- a/src/homescreen.cpp +++ b/src/homescreen.cpp @@ -233,7 +233,8 @@ static void showWindow(afb_req_t request) { HMI_NOTICE("homescreen-service","called."); - int ret = g_hs_instance->client_manager->showWindow(request); + // int ret = g_hs_instance->client_manager->showWindow(request); + int ret = g_hs_instance->client_manager->handleRequest(__FUNCTION__, request); if (ret != 0) { afb_req_fail_f(request, "failed", "called %s, Unknown parameter", __FUNCTION__); return; diff --git a/src/hs-clientmanager.cpp b/src/hs-clientmanager.cpp index 9fe8b96..f6c18c0 100644 --- a/src/hs-clientmanager.cpp +++ b/src/hs-clientmanager.cpp @@ -500,3 +500,15 @@ int HS_ClientManager::pushEvent(const char *event, struct json_object *param, st return 0; } + +int HS_ClientManager::handleRequest(const char *verb, afb_req_t request) +{ + HMI_NOTICE("homescreen-service","verb = %s", verb); + int ret = AFB_EVENT_BAD_REQUEST; + auto ip = func_list.find(std::string(verb)); + if(ip != func_list.end()) { + HMI_NOTICE("homescreen-service","verb found"); + ret = (this->*(ip->second))(request); + } + return ret; +}
\ No newline at end of file diff --git a/src/hs-clientmanager.h b/src/hs-clientmanager.h index a568298..49968f1 100644 --- a/src/hs-clientmanager.h +++ b/src/hs-clientmanager.h @@ -57,6 +57,7 @@ public: int unsubscribe(afb_req_t request); int showNotification(afb_req_t request); int showInformation(afb_req_t request); + int handleRequest(const char *verb, afb_req_t request); int pushEvent(const char *event, struct json_object *param, std::string appid = ""); private: @@ -64,6 +65,20 @@ private: HS_Client* addClient(afb_req_t req, std::string appid); void removeClient(std::string appid); + typedef int (HS_ClientManager::*func_handler)(afb_req_t); + const std::unordered_map<std::string, func_handler> func_list { + {"tap_shortcut", &HS_ClientManager::tap_shortcut}, + {"showWindow", &HS_ClientManager::showWindow}, + {"hideWindow", &HS_ClientManager::hideWindow}, + {"replyShowWindow", &HS_ClientManager::replyShowWindow}, + {"on_screen_message", &HS_ClientManager::on_screen_message}, + {"on_screen_reply", &HS_ClientManager::on_screen_reply}, + {"subscribe", &HS_ClientManager::subscribe}, + {"unsubscribe", &HS_ClientManager::unsubscribe}, + {"showNotification", &HS_ClientManager::showNotification}, + {"showInformation", &HS_ClientManager::showInformation} + }; + private: static HS_ClientManager* me; std::unordered_map<std::string, HS_Client*> client_list; |