Improve homescreen-service
[apps/agl-service-homescreen.git] / src / hs-client.h
index b06a717..5b384b1 100644 (file)
@@ -18,6 +18,7 @@
 #define HOMESCREEN_CLIENT_H
 
 #include <string>
+#include <unordered_set>
 #include <unordered_map>
 #include "hs-helper.h"
 
@@ -30,25 +31,41 @@ public:
     HS_Client &operator=(HS_Client&) = delete;
     ~HS_Client();
 
-    int tap_shortcut(const char* appid);
-    int showWindow(afb_req_t request, const char* appid);
+    int handleRequest(afb_req_t request, const char *verb);
+
+private:
+    int tap_shortcut(afb_req_t request);
+    int on_screen_message (afb_req_t request);
+    int on_screen_reply (afb_req_t request);
+    int showWindow(afb_req_t request);
     int hideWindow(afb_req_t request);
-    int replyShowWindow(afb_req_t request, const char* appid);
-    int on_screen_message (afb_req_t request, const char* message);
-    int on_screen_reply (afb_req_t request, const char* message);
-    int subscribe(afb_req_t request, const char* event);
-    int unsubscribe(afb_req_t request, const char* event);
+    int replyShowWindow(afb_req_t request);
+    int subscribe(afb_req_t request);
+    int unsubscribe(afb_req_t request);
     int showNotification(afb_req_t request);
     int showInformation(afb_req_t request);
 
-private:
+    typedef int (HS_Client::*func_handler)(afb_req_t);
+    const std::unordered_map<std::string, func_handler> func_list {
+        {"tap_shortcut",        &HS_Client::tap_shortcut},
+        {"showWindow",          &HS_Client::showWindow},
+        {"hideWindow",          &HS_Client::hideWindow},
+        {"replyShowWindow",     &HS_Client::replyShowWindow},
+        {"on_screen_message",   &HS_Client::on_screen_message},
+        {"on_screen_reply",     &HS_Client::on_screen_reply},
+        {"subscribe",           &HS_Client::subscribe},
+        {"unsubscribe",         &HS_Client::unsubscribe},
+        {"showNotification",    &HS_Client::showNotification},
+        {"showInformation",     &HS_Client::showInformation}
+    };
     bool checkEvent(const char* event);
+    bool isSupportEvent(const char* event);
 
 private:
     std::string my_id;
     afb_event_t my_event;
     bool subscription = false;
-    std::unordered_map<std::string, int> event_list;
+    std::unordered_set<std::string> event_list;
 
 };