diff options
author | Yuta Doi <yuta-d@witz-inc.co.jp> | 2018-06-21 13:20:31 +0900 |
---|---|---|
committer | Yuta Doi <yuta-d@witz-inc.co.jp> | 2018-06-25 17:17:09 +0900 |
commit | 68a3537de96da4601756b3ab580b1071cb36547e (patch) | |
tree | be3eaed4c8da518a2f9d58cf85db725f459f9954 /src/policy_manager/policy_manager.hpp | |
parent | 90c66dd7d8ae2dae35cf4e68360f08d2a586651e (diff) |
Move global variable to PolicyManager member
Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
Diffstat (limited to 'src/policy_manager/policy_manager.hpp')
-rw-r--r-- | src/policy_manager/policy_manager.hpp | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/src/policy_manager/policy_manager.hpp b/src/policy_manager/policy_manager.hpp index fd7314c..47f7d26 100644 --- a/src/policy_manager/policy_manager.hpp +++ b/src/policy_manager/policy_manager.hpp @@ -22,10 +22,13 @@ #include <vector> #include <queue> - struct json_object; struct sd_event; +struct sd_event_source; +namespace stm { +struct StmState; +} class PolicyManager { @@ -46,6 +49,9 @@ public: int executeStateTransition(); void undoState(); + int transitionState(sd_event_source *source, void *data); + int timerEvent(sd_event_source *source, uint64_t usec, void *data); + private: // Disable copy and move PolicyManager(PolicyManager const &) = delete; @@ -59,6 +65,31 @@ private: uint64_t delay; } EventInfo; + typedef struct AreaState { + std::string name; + std::string category; + std::string role; + } AreaState; + + typedef std::vector<AreaState> AreaList; + typedef struct LayoutState { + std::string name; + std::map<std::string, int> category_num; + AreaList area_list; + std::map<std::string, std::vector<std::string>> role_history; + } LayoutState; + + typedef struct LayerState { + std::string name; + LayoutState layout_state; + bool changed; + } LayerState; + + typedef struct CarElement { + std::string state; + bool changed; + } CarElement; + // Convert map std::unordered_map<std::string, int> eventname2no; std::unordered_map<std::string, int> categoryname2no; @@ -70,8 +101,32 @@ private: std::queue<EventInfo> event_info_queue; - void initializeLocalState(); + struct sd_event* event_loop; + CallbackTable callback; + + std::map<int, struct sd_event_source*> event_source_list; + std::map<int, std::string> req_role_list; + + std::unordered_map<std::string, CarElement> prv_car_elements; + std::unordered_map<std::string, CarElement> crr_car_elements; + + std::unordered_map<std::string, LayerState> prv_layers; + std::unordered_map<std::string, LayerState> crr_layers; + + std::unordered_map<std::string, LayerState> prv_layers_car_stop; + + std::unordered_map<std::string, LayoutState> default_layouts; + + void initializeState(); + void initializeCarElementState(); + void initializeLayerState(); int initializeSdEventLoop(); + void updateState(int event_data, stm::StmState crr_state); + void updateCarElementState(stm::StmState crr_state); + void updateLayerState(int event_data, stm::StmState crr_state); + void createOutputInformation(stm::StmState crr_state, json_object **json_out); + void controlTimerEvent(stm::StmState crr_state); + int setStateTransitionProcessToSystemd(int event, uint64_t delay_ms, std::string role); // Load role.db int loadRoleDb(); @@ -79,11 +134,15 @@ private: // Load layout.db int loadLayoutDb(); + void addStateToJson(const char* name, bool changed, + std::string state, json_object** json_out); + void addStateToJson(const char* layer_name, bool changed, + AreaList area_list, json_object** json_out); const char* getStringFromJson(json_object* obj, const char* key); int inputJsonFilie(const char* file, json_object** obj); + std::vector<std::string> parseString(std::string str, char delimiter); std::string deleteSpace(std::string str); - }; |