diff options
author | Conlain Kelly <conlain.k@gmail.com> | 2018-07-24 14:31:17 -0400 |
---|---|---|
committer | Conlain Kelly <conlain.k@gmail.com> | 2018-07-24 14:31:17 -0400 |
commit | f8a549cdf0e1b52ef66f1ca703a1d07d4c99f645 (patch) | |
tree | 0cd25eacb84259b92556113d2dec40a7f5d8de83 | |
parent | 01a61648226fd0df15188bc4bdd60d1f4a6f0709 (diff) | |
download | sdl_core-feature/boost_lock_implementation.tar.gz |
Remove exception-handling code, extra constructorsfeature/boost_lock_implementation
Note that locks will now crash on error via an uncaught Boost exception
This is because SDL prohibits exceptions, but Boost uses them internally
4 files changed, 36 insertions, 69 deletions
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc index a0be3d1939..9b936bdf41 100644 --- a/src/components/application_manager/src/application_manager_impl.cc +++ b/src/components/application_manager/src/application_manager_impl.cc @@ -166,7 +166,6 @@ ApplicationManagerImpl::ApplicationManagerImpl( , resume_ctrl_(new resumption::ResumeCtrlImpl(*this)) , navi_close_app_timeout_(am_settings.stop_streaming_timeout()) , navi_end_stream_timeout_(am_settings.stop_streaming_timeout()) - , stopping_application_mng_lock_() , state_ctrl_(*this) , application_list_update_timer_( "AM ListUpdater", diff --git a/src/components/connection_handler/src/connection.cc b/src/components/connection_handler/src/connection.cc index 08b37b9026..5a35919c6c 100644 --- a/src/components/connection_handler/src/connection.cc +++ b/src/components/connection_handler/src/connection.cc @@ -81,7 +81,6 @@ Connection::Connection(ConnectionHandle connection_handle, : connection_handler_(connection_handler) , connection_handle_(connection_handle) , connection_device_handle_(connection_device_handle) - , session_map_lock_() , primary_connection_handle_(0) , heartbeat_timeout_(heartbeat_timeout) { LOG4CXX_AUTO_TRACE(logger_); diff --git a/src/components/utils/src/conditional_variable_boost.cc b/src/components/utils/src/conditional_variable_boost.cc index f1c23c13a4..c07b8284ea 100644 --- a/src/components/utils/src/conditional_variable_boost.cc +++ b/src/components/utils/src/conditional_variable_boost.cc @@ -64,29 +64,18 @@ bool ConditionalVariable::Wait(BaseLock& lock) { // superclass lock.AssertTakenAndMarkFree(); - try { - // What kind of lock are we ? - if (Lock* test_lock = dynamic_cast<Lock*>(&lock)) { - // Regular lock - cond_var_.wait<boost::mutex>(test_lock->mutex_); - } else if (RecursiveLock* test_rec_lock = - dynamic_cast<RecursiveLock*>(&lock)) { - // Recursive lock - cond_var_.wait<boost::recursive_mutex>(test_rec_lock->mutex_); - } else { - // unknown - lock.AssertFreeAndMarkTaken(); - - LOG4CXX_ERROR(logger_, "Unknown lock type!"); - return false; - } - } catch (std::exception err) { - lock.AssertFreeAndMarkTaken(); - - LOG4CXX_ERROR( - logger_, - "Failed to wait for conditional variable, exception:" << err.what()); - return false; + // What kind of lock are we ? + if (Lock* test_lock = dynamic_cast<Lock*>(&lock)) { + // Regular lock + cond_var_.wait<boost::mutex>(test_lock->mutex_); + } else if (RecursiveLock* test_rec_lock = + dynamic_cast<RecursiveLock*>(&lock)) { + // Recursive lock + cond_var_.wait<boost::recursive_mutex>(test_rec_lock->mutex_); + } else { + // unknown, give up the lock + LOG4CXX_ERROR(logger_, "Unknown lock type!"); + NOTREACHED(); } lock.AssertFreeAndMarkTaken(); @@ -104,36 +93,28 @@ ConditionalVariable::WaitStatus ConditionalVariable::WaitFor( WaitStatus wait_status = kNoTimeout; lock.AssertTakenAndMarkFree(); - try { - bool timeout = true; - - // What kind of lock are we ? - if (Lock* test_lock = dynamic_cast<Lock*>(&lock)) { - // Regular lock - // cond_var_.wait<boost::mutex>(test_lock->mutex_); - timeout = cond_var_.timed_wait<boost::mutex>( - test_lock->mutex_, boost::posix_time::milliseconds(milliseconds)); - } else if (RecursiveLock* test_rec_lock = - dynamic_cast<RecursiveLock*>(&lock)) { - // Recursive lock - // cond_var_.wait<boost::recursive_mutex>(test_rec_lock->mutex_); - timeout = cond_var_.timed_wait<boost::recursive_mutex>( - test_rec_lock->mutex_, boost::posix_time::milliseconds(milliseconds)); - } else { - // unknown - LOG4CXX_ERROR(logger_, "Unknown lock type!"); - } - - if (!timeout) { - wait_status = kTimeout; - } - } catch (boost::thread_interrupted inter) { - wait_status = kNoTimeout; - } catch (std::exception err) { - LOG4CXX_ERROR( - logger_, - "Failed to timewait for conditional variable timedwait_status: " - << err.what()); + bool timeout = true; + + // What kind of lock are we ? + if (Lock* test_lock = dynamic_cast<Lock*>(&lock)) { + // Regular lock + // cond_var_.wait<boost::mutex>(test_lock->mutex_); + timeout = cond_var_.timed_wait<boost::mutex>( + test_lock->mutex_, boost::posix_time::milliseconds(milliseconds)); + } else if (RecursiveLock* test_rec_lock = + dynamic_cast<RecursiveLock*>(&lock)) { + // Recursive lock + // cond_var_.wait<boost::recursive_mutex>(test_rec_lock->mutex_); + timeout = cond_var_.timed_wait<boost::recursive_mutex>( + test_rec_lock->mutex_, boost::posix_time::milliseconds(milliseconds)); + } else { + // this is an unknown lock, we have an issue + LOG4CXX_ERROR(logger_, "Unknown lock type!"); + NOTREACHED(); + } + + if (!timeout) { + wait_status = kTimeout; } lock.AssertFreeAndMarkTaken(); diff --git a/src/components/utils/src/lock_boost.cc b/src/components/utils/src/lock_boost.cc index c22ac467b5..2299bcf77d 100644 --- a/src/components/utils/src/lock_boost.cc +++ b/src/components/utils/src/lock_boost.cc @@ -50,13 +50,7 @@ Lock::~Lock() { } void Lock::Acquire() { - try { - mutex_.lock(); - } catch (std::exception err) { - LOG4CXX_FATAL(logger_, - "Failed to acquire mutex " << &mutex_ << ": " << err.what()); - NOTREACHED(); - } + mutex_.lock(); AssertFreeAndMarkTaken(); } @@ -101,13 +95,7 @@ RecursiveLock::~RecursiveLock() { } void RecursiveLock::Acquire() { - try { - mutex_.lock(); - } catch (std::exception err) { - LOG4CXX_FATAL(logger_, - "Failed to acquire mutex " << &mutex_ << ": " << err.what()); - NOTREACHED(); - } + mutex_.lock(); AssertFreeAndMarkTaken(); } |