SceneWorker.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //
  2. // Created by WJG on 2020-11-16.
  3. //
  4. #ifndef NEWCOSS_SCENEWORKER_H
  5. #define NEWCOSS_SCENEWORKER_H
  6. #include "json/json.h"
  7. #include "../MsgSchedule/CThread.h"
  8. #include "SceneManager.h"
  9. class SceneWorker : public CThread, SceneWorkHandler {
  10. public:
  11. void Run() override;
  12. private:
  13. SceneThreadPool *pool;
  14. int exe_mod; //0-条件触发执行,1-app触发执行,2-场景触发执行
  15. std::string scene_id;
  16. std::string scene_name;
  17. std::vector<Json::Value> rules_vector;
  18. Json::Value scene_rule;
  19. Json::Value input_param;
  20. std::mutex m_;
  21. bool cancel_ = false;
  22. std::condition_variable sleep_wait_;
  23. void processScnenRule();
  24. bool dealRule(Json::Value &rule);
  25. bool dealAction(Json::Value &action);
  26. bool dealSpecialAction(Json::Value &actions);
  27. bool dealCondition(Json::Value &condition, int mul_cmp);
  28. bool dealOperator(const std::string &op, const std::string &cmp_value, const std::string &value1, const std::string& value2);
  29. bool dealOperator(const std::string &op, int cmp_value, int value1, int value2);
  30. // bool dealOperator(std::string &op, std::string &rule_value, Json::Value &in_param);
  31. // void deviceAction(std::string &action_str, Json::Value &action_param);
  32. // void systemAction(std::string &action_str, Json::Value &action_param);
  33. // void appAction(std::string &action_str, Json::Value &action_param);
  34. void cancelSceneRunning() override;
  35. bool checkCondition(const std::string& condition_key, const std::string& condition_cmp,
  36. const std::string& dev_value, const std::string& condition_v1, const std::string& condition_v2);
  37. };
  38. #endif //NEWCOSS_SCENEWORKER_H