From ac08716781a0f97b406f619f7294e890d88aa8b4 Mon Sep 17 00:00:00 2001 From: Conlain Kelly Date: Mon, 25 Jun 2018 15:14:44 -0400 Subject: Remove custom atomic in favor of std::atomic types --- .../include/application_manager/application_impl.h | 4 +- .../include/hmi_message_handler/mb_controller.h | 2 +- .../hmi_message_handler/websocket_session.h | 4 +- src/components/include/utils/atomic_object.h | 112 --------------------- .../include/media_manager/streamer_adapter.h | 4 +- .../transport_adapter/threaded_socket_connection.h | 4 +- src/components/utils/test/atomic_object_test.cc | 57 ----------- 7 files changed, 9 insertions(+), 178 deletions(-) delete mode 100644 src/components/include/utils/atomic_object.h delete mode 100644 src/components/utils/test/atomic_object_test.cc 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 e033570435..b1853aa03e 100644 --- a/src/components/application_manager/include/application_manager/application_impl.h +++ b/src/components/application_manager/include/application_manager/application_impl.h @@ -49,7 +49,7 @@ #include "connection_handler/device.h" #include "utils/lock.h" -#include "utils/atomic_object.h" +#include #include "utils/custom_string.h" #include "utils/timer.h" #include "utils/macro.h" @@ -486,7 +486,7 @@ class ApplicationImpl : public virtual Application, UsageStatistics usage_report_; protocol_handler::MajorProtocolVersion protocol_version_; bool is_voice_communication_application_; - sync_primitives::atomic_bool is_resuming_; + std::atomic_bool is_resuming_; bool is_hash_changed_during_suspend_; uint32_t video_stream_retry_number_; 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 #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 #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 { 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 i; - * - * i = 5; // here SDL is able to guarantee that this value will be safely - * // assigned even in multi threaded environment. - */ -template -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 - operator U() const { - sync_primitives::AutoReadLock lock(rw_lock_); - return static_cast(value_); - } - - private: - T value_; - mutable sync_primitives::RWLock rw_lock_; -}; - -typedef Atomic atomic_int; -typedef Atomic atomic_int32; -typedef Atomic atomic_uint32; -typedef Atomic atomic_int64; -typedef Atomic atomic_uint64; -typedef Atomic atomic_size_t; -typedef Atomic 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 #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 #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 -- cgit v1.2.1