common/warm_restart.h (68 lines of code) (raw):

#ifndef SWSS_WARM_RESTART_H #define SWSS_WARM_RESTART_H #include <string> #include "dbconnector.h" #include "table.h" #define MAXIMUM_WARMRESTART_TIMER_VALUE 9999 #define DISABLE_WARMRESTART_TIMER_VALUE MAXIMUM_WARMRESTART_TIMER_VALUE namespace swss { class WarmStart { public: enum WarmStartState { INITIALIZED, RESTORED, REPLAYED, RECONCILED, WSDISABLED, WSUNKNOWN, }; enum DataCheckState { CHECK_IGNORED, CHECK_PASSED, CHECK_FAILED, }; enum DataCheckStage { STAGE_SHUTDOWN, STAGE_RESTORE, }; typedef std::map<WarmStartState, std::string> WarmStartStateNameMap; static const WarmStartStateNameMap warmStartStateNameMap; typedef std::map<DataCheckState, std::string> DataCheckStateNameMap; static const DataCheckStateNameMap dataCheckStateNameMap; static WarmStart &getInstance(void); static void initialize(const std::string &app_name, const std::string &docker_name, unsigned int db_timeout = 0, bool isTcpConn = false); static bool checkWarmStart(const std::string &app_name, const std::string &docker_name, const bool incr_restore_cnt = true); static bool isWarmStart(void); static bool isSystemWarmRebootEnabled(void); static void getWarmStartState(const std::string &app_name, WarmStartState &state); static void setWarmStartState(const std::string &app_name, WarmStartState state); static uint32_t getWarmStartTimer(const std::string &app_name, const std::string &docker_name); static void setDataCheckState(const std::string &app_name, DataCheckStage stage, DataCheckState state); static DataCheckState getDataCheckState(const std::string &app_name, DataCheckStage stage); private: std::shared_ptr<swss::DBConnector> m_stateDb; std::shared_ptr<swss::DBConnector> m_cfgDb; std::unique_ptr<Table> m_stateWarmRestartEnableTable; std::unique_ptr<Table> m_stateWarmRestartTable; std::unique_ptr<Table> m_cfgWarmRestartTable; bool m_initialized; bool m_enabled; bool m_systemWarmRebootEnabled; }; } #endif