diff options
Diffstat (limited to 'src/components/application_manager/src/application_manager_impl.cc')
-rw-r--r-- | src/components/application_manager/src/application_manager_impl.cc | 19 |
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(); |