add event tabble
authorwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Tue, 8 Jan 2019 01:40:05 +0000 (09:40 +0800)
committerwang_zhiqiang <wang_zhiqiang@dl.cn.nexty-ele.com>
Tue, 8 Jan 2019 01:40:05 +0000 (09:40 +0800)
Change-Id: Ic6897f79ecc63ee869b51915b88679d382b95ea6

src/homescreen.cpp
src/hs-clientmanager.cpp
src/hs-clientmanager.h

index 0f6a10d..73b2cc9 100644 (file)
@@ -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;
index 9fe8b96..f6c18c0 100644 (file)
@@ -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
index a568298..49968f1 100644 (file)
@@ -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;