aboutsummaryrefslogtreecommitdiffstats
path: root/src/hs-apprecover.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hs-apprecover.cpp')
-rw-r--r--src/hs-apprecover.cpp79
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