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.cc24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 652a939e21..e491f09466 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -159,6 +159,7 @@ ApplicationManagerImpl::ApplicationManagerImpl(
, applications_list_lock_ptr_(
std::make_shared<sync_primitives::RecursiveLock>())
, apps_to_register_list_lock_ptr_(std::make_shared<sync_primitives::Lock>())
+ , reregister_wait_list_lock_ptr_(std::make_shared<sync_primitives::Lock>())
, audio_pass_thru_active_(false)
, audio_pass_thru_app_id_(0)
, driver_distraction_state_(hmi_apis::Common_DriverDistractionState::DD_OFF)
@@ -266,6 +267,13 @@ ApplicationManagerImpl::pending_applications() const {
return accessor;
}
+DataAccessor<ReregisterWaitList>
+ApplicationManagerImpl::reregister_applications() const {
+ DataAccessor<ReregisterWaitList> accessor(reregister_wait_list_,
+ reregister_wait_list_lock_ptr_);
+ return accessor;
+}
+
ApplicationSharedPtr ApplicationManagerImpl::application(
uint32_t app_id) const {
AppIdPredicate finder(app_id);
@@ -301,6 +309,14 @@ ApplicationSharedPtr ApplicationManagerImpl::pending_application_by_policy_id(
return FindPendingApp(accessor, finder);
}
+ApplicationSharedPtr
+ApplicationManagerImpl::reregister_application_by_policy_id(
+ const std::string& policy_app_id) const {
+ PolicyAppIdPredicate finder(policy_app_id);
+ DataAccessor<ReregisterWaitList> accessor = reregister_applications();
+ return FindReregisterApp(accessor, finder);
+}
+
bool ActiveAppPredicate(const ApplicationSharedPtr app) {
return app ? app->IsFullscreen() : false;
}
@@ -1554,7 +1570,7 @@ void ApplicationManagerImpl::OnDeviceSwitchingStart(
{
// During sending of UpdateDeviceList this lock is acquired also so making
// it scoped
- sync_primitives::AutoLock lock(reregister_wait_list_lock_);
+ sync_primitives::AutoLock lock(reregister_wait_list_lock_ptr_);
for (auto i = reregister_wait_list_.begin();
reregister_wait_list_.end() != i;
++i) {
@@ -1594,7 +1610,7 @@ void ApplicationManagerImpl::OnDeviceSwitchingFinish(
const std::string& device_uid) {
LOG4CXX_AUTO_TRACE(logger_);
UNUSED(device_uid);
- sync_primitives::AutoLock lock(reregister_wait_list_lock_);
+ sync_primitives::AutoLock lock(reregister_wait_list_lock_ptr_);
const bool unexpected_disonnect = true;
const bool is_resuming = true;
@@ -3569,7 +3585,7 @@ bool ApplicationManagerImpl::IsAppInReconnectMode(
const connection_handler::DeviceHandle& device_id,
const std::string& policy_app_id) const {
LOG4CXX_AUTO_TRACE(logger_);
- sync_primitives::AutoLock lock(reregister_wait_list_lock_);
+ sync_primitives::AutoLock lock(reregister_wait_list_lock_ptr_);
return reregister_wait_list_.end() !=
std::find_if(reregister_wait_list_.begin(),
reregister_wait_list_.end(),
@@ -3902,7 +3918,7 @@ void ApplicationManagerImpl::EraseAppFromReconnectionList(
}
const auto policy_app_id = app->policy_app_id();
- sync_primitives::AutoLock lock(reregister_wait_list_lock_);
+ sync_primitives::AutoLock lock(reregister_wait_list_lock_ptr_);
auto app_it =
std::find_if(reregister_wait_list_.begin(),
reregister_wait_list_.end(),