aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>2019-01-08 09:40:05 +0800
committerwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>2019-01-08 09:40:05 +0800
commit64b268e9c1151c1ccff3b9a20cbe3901f347e9ee (patch)
tree86448680504c91d0f988ba944cc8e9708c9e0637
parent0a47c007af262ac91bfa219a7b848aa0046005b3 (diff)
add event tabble
Change-Id: Ic6897f79ecc63ee869b51915b88679d382b95ea6
-rw-r--r--src/homescreen.cpp3
-rw-r--r--src/hs-clientmanager.cpp12
-rw-r--r--src/hs-clientmanager.h15
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;