Segment process for control timer event
[apps/agl-service-windowmanager.git] / src / policy_manager / policy_manager.hpp
index b191b10..6b37316 100644 (file)
 #include <unordered_map>
 #include <vector>
 
-namespace stm {
-extern "C" {
-#include "dummy_stm.h"
-}
-} // namespace stm
 
 struct json_object;
+struct sd_event;
+
 
 class PolicyManager {
 
@@ -35,9 +32,19 @@ public:
     explicit PolicyManager();
     ~PolicyManager() = default;
 
+    using Handler = std::function<void(json_object *)>;
+
+    typedef struct {
+        Handler  onStateTransitioned;
+        Handler  onError;
+    } CallbackTable;
+
     int initialize();
-    int checkPolicy(json_object* json_in, json_object** json_out);
-    std::string roleToCategory(const char* role);
+    void registerCallback(CallbackTable callback_table);
+    int setInputEventData(json_object* json_in);
+    int executeStateTransition();
+    void undoState();
+
 private:
     // Disable copy and move
     PolicyManager(PolicyManager const &) = delete;
@@ -54,21 +61,20 @@ private:
     std::unordered_map<std::string, std::string> category2role_;
     std::unordered_map<std::string, std::string> role2defaultarea_;
 
-    stm::stm_state_t current_state_;
+    int initializeSdEventLoop();
 
     // Load role.db
     int loadRoleDb();
 
+    // Load layout.db
+    int loadLayoutDb();
+
     const char* getStringFromJson(json_object* obj, const char* key);
     int inputJsonFilie(const char* file, json_object** obj);
-    void addStateToJson(const char* key, int is_changed, const char* state, json_object** json_out);
     std::vector<std::string> parseString(std::string str, char delimiter);
     std::string deleteSpace(std::string str);
-};
 
-
-extern const char* getStringFromJson(json_object* obj, const char* key);
-extern int getIntFromJson(json_object* obj, const char* key);
+};
 
 
 #endif  // TMCAGLWM_POLICY_MANAGER_HPP