diff options
Diffstat (limited to 'src/hs-apprecover.cpp')
-rw-r--r-- | src/hs-apprecover.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/hs-apprecover.cpp b/src/hs-apprecover.cpp new file mode 100644 index 0000000..8e5545c --- /dev/null +++ b/src/hs-apprecover.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2019 TOYOTA MOTOR CORPORATION + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "hs-apprecover.h" +#include "hs-appinfo.h" +#include "hs-proxy.h" +#include "hs-clientmanager.h" + +const char _keyArea[] = "area"; + +/** + * starting recover applications + * + * #### Parameters + * - api : the api + * - map : recover app map + * + * #### Return + * None + * + */ +void HS_AppRecover::startRecovery(afb_api_t api, recover_map &map) +{ + HS_AfmMainProxy afm_proxy; + 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.area = m.area; + recover_info.visibility = m.visibility; + m_recover_apps_list[m.appid] = std::move(recover_info); + + // recover application + m_recovering_set.insert(m.appid); + afm_proxy.start(api, HS_AppInfo::instance()->getAppProperty(m.appid, _keyId)); + } + } +} + +/** + * register started applications + * + * #### Parameters + * - appid : application id liked "dashboard" + * + * #### Return + * false : not all application recovered + * true : all applications recovered + */ +bool HS_AppRecover::registerRecoveredApp(std::string &appid) +{ + auto it = m_recovering_set.find(appid); + if(it != m_recovering_set.end()) { + m_recovering_set.erase(appid); + auto ip = m_recover_apps_list.find(appid); + if(ip != m_recover_apps_list.end() + && ip->second.visibility) { + // TBD, call setWindowResource + struct json_object *push_obj = json_object_new_object(); + json_object_object_add(push_obj, _keyArea, json_object_new_string(ip->second.area.c_str())); + HS_ClientManager::instance()->pushEvent("showWindow", push_obj, appid); + } + } + + return m_recovering_set.empty() ? true : false; +}
\ No newline at end of file |