* None
*
*/
-void HS_AppRecover::startRecovery(afb_api_t api, recover_map &map)
+void HS_AppRecover::startRecovery(afb_api_t api)
{
+ HS_ClientManager::instance()->addListener(this);
+
for(auto &key : HS_Config::keys_recover_type) {
- for(auto &m : map[key]){
- struct app_recover_info recover_info;
- recover_info.recover_type = key;
- recover_info.visibility = m.visibility;
- recover_info.after = m.after;
+ for(auto &m : recover_app_map[key]){
+ struct app_recover_info recover_info = {
+ .recover_type = key,
+ .visibility = m.visibility,
+ .after = m.after
+ };
m_recover_apps_list[m.appid] = std::move(recover_info);
- if(key == HS_Config::keys_recover_type[1]) {
- m_lastmode_list.insert(m.appid);
- }
+
// recover application
auto it = m_recovering_set.find(m.appid);
if(it == m_recovering_set.end()) {
}
}
}
+ recover_app_map.clear();
}
/**
- * register started applications
+ * notify
*
* #### Parameters
- * - appid : application id liked "dashboard"
+ * - api : the api
+ * - appid : application id
*
* #### Return
- * false : not recover app
- * true : recover app
- *
+ * None
+ *
*/
-bool HS_AppRecover::registerRecoveredApp(afb_api_t api, const std::string &appid)
+void HS_AppRecover::notify(afb_api_t api, std::string appid)
{
- bool ret = false;
- if(m_recovering_set.empty()) {
- return ret;
- }
-
AFB_INFO("recover appid=[%s].", appid.c_str());
auto it = m_recovering_set.find(appid);
if(it != m_recovering_set.end()) {
+ this->removeListenAppId(appid);
m_recovering_set.erase(appid);
auto ip = m_recover_apps_list.find(appid);
if(ip != m_recover_apps_list.end()
&& ip->second.visibility) {
HS_ClientManager::instance()->pushEvent("showWindow", nullptr, appid);
}
- ret = true;
}
// check wait recover application
}
m_wait_recover_set.erase(appid);
}
- return ret;
+
+ if(m_recovering_set.empty()) {
+ clearListenAppSet();
+ // HS_ClientManager::instance()->removeListener(this);
+ }
}
/**
*/
void HS_AppRecover::screenUpdated(struct json_object *obj)
{
+ if(m_lastmode_list.empty()) {
+ AFB_NOTICE("init lastmode is null, so don't record lastmode.");
+ return;
+ }
+
std::set<std::string> s_mode;
struct json_object *ids_obj;
if(json_object_object_get_ex(obj, key_ids.c_str(), &ids_obj)) {
*/
void HS_AppRecover::startApplication(afb_api_t api, const std::string &appid)
{
+ this->addListenAppId(appid);
HS_AfmMainProxy afm_proxy;
afm_proxy.start(api, HS_AppInfo::instance()->getAppProperty(appid, _keyId));
}