check subscribe event
[apps/agl-service-homescreen.git] / src / hs-client.h
index 035f3c4..5b384b1 100644 (file)
 #define HOMESCREEN_CLIENT_H
 
 #include <string>
+#include <unordered_set>
 #include <unordered_map>
 #include "hs-helper.h"
 
 
 class HS_Client {
 public:
-    HS_Client(struct afb_req request, const char* id) : HS_Client(request, std::string(id)){}
-    HS_Client(struct afb_req request, std::string id);
+    HS_Client(afb_req_t request, const char* id) : HS_Client(request, std::string(id)){}
+    HS_Client(afb_req_t request, std::string id);
     HS_Client(HS_Client&) = delete;
     HS_Client &operator=(HS_Client&) = delete;
     ~HS_Client();
 
-    int tap_shortcut(const char* appname);
-    int on_screen_message (struct afb_req request, const char* message);
-    int on_screen_reply (struct afb_req request, const char* message);
-    int subscribe(struct afb_req request, const char* event);
-    int unsubscribe(struct afb_req request, const char* event);
+    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);
+    int subscribe(afb_req_t request);
+    int unsubscribe(afb_req_t request);
+    int showNotification(afb_req_t request);
+    int showInformation(afb_req_t request);
+
+    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;
-    struct afb_event my_event;
-    std::unordered_map<std::string, int> event_list;
+    afb_event_t my_event;
+    bool subscription = false;
+    std::unordered_set<std::string> event_list;
 
 };