diff options
7 files changed, 9 insertions, 178 deletions
diff --git a/src/components/application_manager/include/application_manager/application_impl.h b/src/components/application_manager/include/application_manager/application_impl.h index 46706fad4f..d9e542fa42 100644 --- a/src/components/application_manager/include/application_manager/application_impl.h +++ b/src/components/application_manager/include/application_manager/application_impl.h @@ -50,7 +50,7 @@ #include "connection_handler/device.h" #include "utils/lock.h" -#include "utils/atomic_object.h" +#include <atomic> #include "utils/custom_string.h" #include "utils/timer.h" #include "utils/macro.h" @@ -499,7 +499,7 @@ class ApplicationImpl : public virtual Application, HelpPromptManagerImpl help_prompt_manager_impl_; protocol_handler::MajorProtocolVersion protocol_version_; bool is_voice_communication_application_; - sync_primitives::atomic_bool is_resuming_; + std::atomic_bool is_resuming_; mobile_api::HMILevel::eType deferred_resumption_hmi_level_; bool is_hash_changed_during_suspend_; diff --git a/src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h b/src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h index 60dc50ad7a..0a2e3e0f99 100644 --- a/src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h +++ b/src/components/hmi_message_handler/include/hmi_message_handler/mb_controller.h @@ -52,7 +52,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "json/json.h" #include "utils/macro.h" #include "utils/lock.h" -#include "utils/atomic_object.h" +#include <atomic> #include "websocket_session.h" using namespace boost::beast::websocket; diff --git a/src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h b/src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h index 9692c4aef4..4d177d250f 100644 --- a/src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h +++ b/src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h @@ -53,7 +53,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "json/json.h" #include "utils/macro.h" #include "utils/lock.h" -#include "utils/atomic_object.h" +#include <atomic> #include "utils/threads/thread.h" #include "utils/threads/message_loop_thread.h" #include "utils/message_queue.h" @@ -152,7 +152,7 @@ class WebsocketSession : public std::enable_shared_from_this<WebsocketSession> { std::string GetComponentName(std::string& method); protected: - sync_primitives::atomic_bool stop; + std::atomic_bool stop; private: void onMessageReceived(Json::Value message); diff --git a/src/components/include/utils/atomic_object.h b/src/components/include/utils/atomic_object.h deleted file mode 100644 index 257fcfbe3a..0000000000 --- a/src/components/include/utils/atomic_object.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 2015, Ford Motor Company - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the Ford Motor Company nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SRC_COMPONENTS_INCLUDE_UTILS_ATOMIC_OBJECT_H_ -#define SRC_COMPONENTS_INCLUDE_UTILS_ATOMIC_OBJECT_H_ - -#include "utils/rwlock.h" -#include "utils/conditional_variable.h" -#include "utils/macro.h" - -namespace sync_primitives { - -/** - * @brief Allows to safely change stored value from different threads. - * - * The usage example: - * - * threads::Atomic<int> i; - * - * i = 5; // here SDL is able to guarantee that this value will be safely - * // assigned even in multi threaded environment. - */ -template <typename T> -class Atomic { - public: - /** - * @brief Atomic allows to construct atomic object. - * The operation is not atomic. - * - * @param value the value to initialize object with. - */ - Atomic(const T& value) : value_(value) {} - - /** - * @brief operator = thread safe setter for stored value. - * - * @param val value to assign. - * - * @return mofified value. - */ - T& operator=(const T& val) { - sync_primitives::AutoWriteLock lock(rw_lock_); - value_ = val; - return value_; - } - - /** - * @brief operator T thread safe getter - * - * return stored value. - */ - operator T() const { - sync_primitives::AutoReadLock lock(rw_lock_); - return value_; - } - - /** - * @brief operator T thread safe getter - * - * return stored value. - */ - template <typename U> - operator U() const { - sync_primitives::AutoReadLock lock(rw_lock_); - return static_cast<U>(value_); - } - - private: - T value_; - mutable sync_primitives::RWLock rw_lock_; -}; - -typedef Atomic<int> atomic_int; -typedef Atomic<int32_t> atomic_int32; -typedef Atomic<uint32_t> atomic_uint32; -typedef Atomic<int64_t> atomic_int64; -typedef Atomic<uint64_t> atomic_uint64; -typedef Atomic<size_t> atomic_size_t; -typedef Atomic<bool> atomic_bool; - -} // namespace sync_primitives - -#endif // SRC_COMPONENTS_INCLUDE_UTILS_ATOMIC_OBJECT_H_ diff --git a/src/components/media_manager/include/media_manager/streamer_adapter.h b/src/components/media_manager/include/media_manager/streamer_adapter.h index 5ac8e05cac..c871e55b8c 100644 --- a/src/components/media_manager/include/media_manager/streamer_adapter.h +++ b/src/components/media_manager/include/media_manager/streamer_adapter.h @@ -37,7 +37,7 @@ #include "utils/message_queue.h" #include "utils/threads/thread.h" #include "utils/threads/thread_delegate.h" -#include "utils/atomic_object.h" +#include <atomic> #include "utils/shared_ptr.h" #include "protocol/raw_message.h" @@ -80,7 +80,7 @@ class StreamerAdapter : public MediaAdapterImpl { virtual bool Send(protocol_handler::RawMessagePtr msg) = 0; private: - sync_primitives::atomic_bool stop_flag_; + std::atomic_bool stop_flag_; StreamerAdapter* adapter_; DISALLOW_COPY_AND_ASSIGN(Streamer); diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h b/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h index 3792b94d7c..f1c679c123 100644 --- a/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h +++ b/src/components/transport_manager/include/transport_manager/transport_adapter/threaded_socket_connection.h @@ -40,7 +40,7 @@ #include "transport_manager/transport_adapter/connection.h" #include "protocol/common.h" -#include "utils/atomic_object.h" +#include <atomic> #include "utils/threads/thread_delegate.h" #include "utils/lock.h" @@ -201,7 +201,7 @@ class ThreadedSocketConnection : public Connection { FrameQueue frames_to_send_; mutable sync_primitives::Lock frames_to_send_mutex_; - sync_primitives::atomic_int socket_; + std::atomic_int socket_; bool terminate_flag_; bool unexpected_disconnect_; const DeviceUID device_uid_; diff --git a/src/components/utils/test/atomic_object_test.cc b/src/components/utils/test/atomic_object_test.cc deleted file mode 100644 index 44975fd004..0000000000 --- a/src/components/utils/test/atomic_object_test.cc +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2015, Ford Motor Company - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following - * disclaimer in the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of the Ford Motor Company nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "utils/atomic_object.h" -#include "gtest/gtest.h" - -namespace test { -namespace components { -namespace utils_test { - -TEST(AtomicObjectTest, Construct) { - sync_primitives::atomic_int var(5); - EXPECT_EQ(5, var); - - var = 8; - EXPECT_EQ(8, var); - - sync_primitives::atomic_bool flag = true; - - EXPECT_TRUE(flag == true); - - flag = false; - EXPECT_FALSE(flag == true); -} - -} // namespace utils_test -} // namespace components -} // namespace test |