summaryrefslogtreecommitdiff
path: root/src/components/application_manager/src/application_manager_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/src/application_manager_impl.cc')
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 2755f04b94..113b6e826a 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -195,6 +195,7 @@ ApplicationManagerImpl::ApplicationManagerImpl(
const uint32_t timeout_ms = 10000u;
clearing_timer->Start(timeout_ms, timer::kSingleShot);
timer_pool_.push_back(clearing_timer);
+ commands_holder_.SetCommandsProcessor(this);
}
ApplicationManagerImpl::~ApplicationManagerImpl() {
@@ -388,6 +389,10 @@ void ApplicationManagerImpl::OnApplicationRegistered(ApplicationSharedPtr app) {
event.raise(event_dispatcher());
}
+void ApplicationManagerImpl::OnApplicationSwitched(ApplicationSharedPtr app) {
+ commands_holder_.Release(app->policy_app_id());
+}
+
bool ApplicationManagerImpl::IsAppTypeExistsInFullOrLimited(
ApplicationConstSharedPtr app) const {
bool voice_state = app->is_voice_communication_supported();
@@ -1077,7 +1082,9 @@ void ApplicationManagerImpl::OnDeviceSwitchingStart(
for (auto i = reregister_wait_list_.begin(); reregister_wait_list_.end() != i;
++i) {
- resume_ctrl_->SaveApplication(*i);
+ auto app = *i;
+ request_ctrl_.terminateAppRequests(app->app_id());
+ resume_ctrl_->SaveApplication(app);
}
}
@@ -1092,7 +1099,9 @@ void ApplicationManagerImpl::OnDeviceSwitchFinish(
for (auto app_it = reregister_wait_list_.begin();
app_it != reregister_wait_list_.end();
++app_it) {
- UnregisterApplication((*app_it)->app_id(),
+ auto app = *app_it;
+ commands_holder_.Drop(app->policy_app_id());
+ UnregisterApplication(app->app_id(),
mobile_apis::Result::INVALID_ENUM,
is_resuming,
unexpected_disonnect);
@@ -2040,6 +2049,12 @@ bool ApplicationManagerImpl::ManageHMICommand(
return false;
}
+ auto app = application(command->connection_key());
+ if (app && IsAppInReconnectMode(app->policy_app_id())) {
+ commands_holder_.Hold(app->policy_app_id(), message);
+ return true;
+ }
+
int32_t message_type =
(*(message.get()))[strings::params][strings::message_type].asInt();