summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSho Amano <samano@xevo.com>2018-06-28 14:14:59 +0900
committerSho Amano <samano@xevo.com>2018-06-28 17:36:33 +0900
commit09fab4fe47c5b06384dcfd5147186c4507ded320 (patch)
treeccaeeb82c60ebe806e82ff1c5ae253228beaceb6
parent1b949923cff8ee3a9386608a76a04c1a9bbe21cb (diff)
downloadsdl_core-09fab4fe47c5b06384dcfd5147186c4507ded320.tar.gz
Update NonConstDataAccessor to align with PR #2254
Like DataAccessor, NonConstDataAccessor uses a shared pointer of a Lock instance.
-rw-r--r--src/components/connection_handler/include/connection_handler/connection_handler_impl.h3
-rw-r--r--src/components/connection_handler/src/connection_handler_impl.cc9
-rw-r--r--src/components/connection_handler/test/connection_test.cc10
-rw-r--r--src/components/connection_handler/test/heart_beat_monitor_test.cc23
-rw-r--r--src/components/include/utils/data_accessor.h13
-rw-r--r--src/components/protocol_handler/test/protocol_handler_tm_test.cc9
6 files changed, 38 insertions, 29 deletions
diff --git a/src/components/connection_handler/include/connection_handler/connection_handler_impl.h b/src/components/connection_handler/include/connection_handler/connection_handler_impl.h
index e43722aa6a..ae1790ab79 100644
--- a/src/components/connection_handler/include/connection_handler/connection_handler_impl.h
+++ b/src/components/connection_handler/include/connection_handler/connection_handler_impl.h
@@ -624,7 +624,8 @@ class ConnectionHandlerImpl
* @brief session/connection map
*/
SessionConnectionMap session_connection_map_;
- mutable sync_primitives::Lock session_connection_map_lock_;
+ mutable std::shared_ptr<sync_primitives::Lock>
+ session_connection_map_lock_ptr_;
/**
* \brief List of connections
diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc
index 8af0d85edf..89f79e7ccf 100644
--- a/src/components/connection_handler/src/connection_handler_impl.cc
+++ b/src/components/connection_handler/src/connection_handler_impl.cc
@@ -68,7 +68,8 @@ ConnectionHandlerImpl::ConnectionHandlerImpl(
, connection_handler_observer_(NULL)
, transport_manager_(tm)
, protocol_handler_(NULL)
- , session_connection_map_lock_(true)
+ , session_connection_map_lock_ptr_(
+ std::make_shared<sync_primitives::Lock>(true))
, connection_list_lock_()
, connection_handler_observer_lock_()
, connection_list_deleter_(&connection_list_)
@@ -1002,7 +1003,7 @@ DevicesDiscoveryStarter& ConnectionHandlerImpl::get_device_discovery_starter() {
NonConstDataAccessor<SessionConnectionMap>
ConnectionHandlerImpl::session_connection_map() {
return NonConstDataAccessor<SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_);
+ session_connection_map_, session_connection_map_lock_ptr_);
}
SessionTransports ConnectionHandlerImpl::SetSecondaryTransportID(
@@ -1050,7 +1051,7 @@ SessionTransports ConnectionHandlerImpl::SetSecondaryTransportID(
const SessionTransports ConnectionHandlerImpl::GetSessionTransports(
uint8_t session_id) const {
SessionTransports st;
- sync_primitives::AutoLock auto_lock(session_connection_map_lock_);
+ sync_primitives::AutoLock auto_lock(session_connection_map_lock_ptr_);
SessionConnectionMap::const_iterator it =
session_connection_map_.find(session_id);
if (session_connection_map_.end() == it) {
@@ -1065,7 +1066,7 @@ const SessionTransports ConnectionHandlerImpl::GetSessionTransports(
const uint8_t ConnectionHandlerImpl::GetSessionIdFromSecondaryTransport(
transport_manager::ConnectionUID secondary_transport_id) const {
- sync_primitives::AutoLock auto_lock(session_connection_map_lock_);
+ sync_primitives::AutoLock auto_lock(session_connection_map_lock_ptr_);
SessionConnectionMap::const_iterator it = session_connection_map_.begin();
for (; session_connection_map_.end() != it; it++) {
SessionTransports st = it->second;
diff --git a/src/components/connection_handler/test/connection_test.cc b/src/components/connection_handler/test/connection_test.cc
index fb70c2b3c1..e3c513f5ac 100644
--- a/src/components/connection_handler/test/connection_test.cc
+++ b/src/components/connection_handler/test/connection_test.cc
@@ -452,10 +452,11 @@ TEST_F(ConnectionTest, AddNewSession_VerifySessionConnectionMapAdded) {
connection_handle, device_handle, &mock_connection_handler, heart_beat);
SessionConnectionMap session_connection_map;
- sync_primitives::Lock session_connection_map_lock;
+ std::shared_ptr<sync_primitives::Lock> session_connection_map_lock_ptr =
+ std::make_shared<sync_primitives::Lock>();
EXPECT_CALL(mock_connection_handler, session_connection_map())
.WillRepeatedly(Return(NonConstDataAccessor<SessionConnectionMap>(
- session_connection_map, session_connection_map_lock)));
+ session_connection_map, session_connection_map_lock_ptr)));
transport_manager::ConnectionUID connection_handle_uid = 1;
uint32_t sid = connection->AddNewSession(connection_handle_uid);
@@ -482,7 +483,8 @@ TEST_F(ConnectionTest, RemoveSession_VerifySessionConnectionMapRemoved) {
connection_handle, device_handle, &mock_connection_handler, heart_beat);
SessionConnectionMap session_connection_map;
- sync_primitives::Lock session_connection_map_lock;
+ std::shared_ptr<sync_primitives::Lock> session_connection_map_lock_ptr =
+ std::make_shared<sync_primitives::Lock>();
// input some dummy data
SessionTransports st1 = {1234, 0};
SessionTransports st2 = {2345, 0};
@@ -491,7 +493,7 @@ TEST_F(ConnectionTest, RemoveSession_VerifySessionConnectionMapRemoved) {
EXPECT_CALL(mock_connection_handler, session_connection_map())
.WillRepeatedly(Return(NonConstDataAccessor<SessionConnectionMap>(
- session_connection_map, session_connection_map_lock)));
+ session_connection_map, session_connection_map_lock_ptr)));
transport_manager::ConnectionUID connection_handle_uid = 1;
uint32_t sid = connection->AddNewSession(connection_handle_uid);
diff --git a/src/components/connection_handler/test/heart_beat_monitor_test.cc b/src/components/connection_handler/test/heart_beat_monitor_test.cc
index 826006d534..4065a0e537 100644
--- a/src/components/connection_handler/test/heart_beat_monitor_test.cc
+++ b/src/components/connection_handler/test/heart_beat_monitor_test.cc
@@ -55,7 +55,10 @@ using ::testing::Return;
class HeartBeatMonitorTest : public testing::Test {
public:
- HeartBeatMonitorTest() : conn(NULL) {
+ HeartBeatMonitorTest()
+ : conn(NULL)
+ , session_connection_map_lock_ptr_(
+ std::make_shared<sync_primitives::Lock>()) {
kTimeout = 5000u;
}
@@ -67,7 +70,7 @@ class HeartBeatMonitorTest : public testing::Test {
0xABCDEF;
static const transport_manager::ConnectionUID kDefaultConnectionHandle = 1;
connection_handler::SessionConnectionMap session_connection_map_;
- ::sync_primitives::Lock session_connection_map_lock_;
+ std::shared_ptr<sync_primitives::Lock> session_connection_map_lock_ptr_;
virtual void SetUp() {
conn = new connection_handler::Connection(
@@ -87,7 +90,7 @@ TEST_F(HeartBeatMonitorTest, TimerNotStarted) {
ON_CALL(connection_handler_mock, session_connection_map())
.WillByDefault(
Return(NonConstDataAccessor<connection_handler::SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
// Whithout StartHeartBeat nothing to be call
EXPECT_CALL(connection_handler_mock, CloseSession(_, _)).Times(0);
@@ -101,7 +104,7 @@ TEST_F(HeartBeatMonitorTest, TimerNotElapsed) {
ON_CALL(connection_handler_mock, session_connection_map())
.WillByDefault(
Return(NonConstDataAccessor<connection_handler::SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
EXPECT_CALL(connection_handler_mock, SendHeartBeat(_, _)).Times(0);
EXPECT_CALL(connection_handler_mock, CloseSession(_, _)).Times(0);
@@ -115,7 +118,7 @@ TEST_F(HeartBeatMonitorTest, TimerElapsed) {
ON_CALL(connection_handler_mock, session_connection_map())
.WillByDefault(
Return(NonConstDataAccessor<connection_handler::SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
const uint32_t session = conn->AddNewSession(kDefaultConnectionHandle);
@@ -143,7 +146,7 @@ TEST_F(HeartBeatMonitorTest, KeptAlive) {
ON_CALL(connection_handler_mock, session_connection_map())
.WillByDefault(
Return(NonConstDataAccessor<connection_handler::SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
EXPECT_CALL(connection_handler_mock, CloseSession(_, _)).Times(0);
EXPECT_CALL(connection_handler_mock, CloseConnection(_)).Times(0);
@@ -164,7 +167,7 @@ TEST_F(HeartBeatMonitorTest, NotKeptAlive) {
ON_CALL(connection_handler_mock, session_connection_map())
.WillByDefault(
Return(NonConstDataAccessor<connection_handler::SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
const uint32_t session = conn->AddNewSession(kDefaultConnectionHandle);
@@ -199,7 +202,7 @@ TEST_F(HeartBeatMonitorTest, TwoSessionsElapsed) {
ON_CALL(connection_handler_mock, session_connection_map())
.WillByDefault(
Return(NonConstDataAccessor<connection_handler::SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
const uint32_t kSession1 = conn->AddNewSession(kDefaultConnectionHandle);
@@ -238,7 +241,7 @@ TEST_F(HeartBeatMonitorTest, IncreaseHeartBeatTimeout) {
ON_CALL(connection_handler_mock, session_connection_map())
.WillByDefault(
Return(NonConstDataAccessor<connection_handler::SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
const uint32_t kSession = conn->AddNewSession(kDefaultConnectionHandle);
@@ -255,7 +258,7 @@ TEST_F(HeartBeatMonitorTest, DecreaseHeartBeatTimeout) {
ON_CALL(connection_handler_mock, session_connection_map())
.WillByDefault(
Return(NonConstDataAccessor<connection_handler::SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
const uint32_t kSession = conn->AddNewSession(kDefaultConnectionHandle);
diff --git a/src/components/include/utils/data_accessor.h b/src/components/include/utils/data_accessor.h
index 5b267096c6..28e9f9b6c4 100644
--- a/src/components/include/utils/data_accessor.h
+++ b/src/components/include/utils/data_accessor.h
@@ -74,11 +74,10 @@ class DataAccessor {
template <class T>
class NonConstDataAccessor {
public:
- NonConstDataAccessor(T& data, const sync_primitives::Lock& lock)
- : data_(data)
- , lock_(const_cast<sync_primitives::Lock&>(lock))
- , counter_(new uint32_t(0)) {
- lock_.Acquire();
+ NonConstDataAccessor(T& data,
+ const std::shared_ptr<sync_primitives::Lock>& lock)
+ : data_(data), lock_(lock), counter_(new uint32_t(0)) {
+ lock_->Acquire();
}
NonConstDataAccessor(const NonConstDataAccessor<T>& other)
@@ -88,7 +87,7 @@ class NonConstDataAccessor {
~NonConstDataAccessor() {
if (0 == *counter_) {
- lock_.Release();
+ lock_->Release();
} else {
--(*counter_);
}
@@ -100,7 +99,7 @@ class NonConstDataAccessor {
private:
void* operator new(size_t size);
T& data_;
- sync_primitives::Lock& lock_;
+ const std::shared_ptr<sync_primitives::Lock> lock_;
utils::SharedPtr<uint32_t> counter_;
};
diff --git a/src/components/protocol_handler/test/protocol_handler_tm_test.cc b/src/components/protocol_handler/test/protocol_handler_tm_test.cc
index 634512a2d2..f840a3f258 100644
--- a/src/components/protocol_handler/test/protocol_handler_tm_test.cc
+++ b/src/components/protocol_handler/test/protocol_handler_tm_test.cc
@@ -206,6 +206,9 @@ class ProtocolHandlerImplTest : public ::testing::Test {
.
// Return false to avoid call KeepConnectionAlive
WillRepeatedly(Return(false));
+
+ session_connection_map_lock_ptr_ =
+ std::make_shared<sync_primitives::Lock>();
}
void TearDown() OVERRIDE {
@@ -393,7 +396,7 @@ class ProtocolHandlerImplTest : public ::testing::Test {
// Used by OnTransportConfigUpdated() tests. The lifetime of these objects
// should be longer than that of a test case.
connection_handler::SessionConnectionMap session_connection_map_;
- sync_primitives::Lock session_connection_map_lock_;
+ std::shared_ptr<sync_primitives::Lock> session_connection_map_lock_ptr_;
};
#ifdef ENABLE_SECURITY
@@ -2418,7 +2421,7 @@ TEST_F(ProtocolHandlerImplTest,
EXPECT_CALL(connection_handler_mock, session_connection_map())
.WillOnce(Return(NonConstDataAccessor<SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
EXPECT_CALL(session_observer_mock, ProtocolVersionUsed(_, _, _))
.WillRepeatedly(
@@ -2489,7 +2492,7 @@ TEST_F(ProtocolHandlerImplTest,
EXPECT_CALL(connection_handler_mock, session_connection_map())
.WillOnce(Return(NonConstDataAccessor<SessionConnectionMap>(
- session_connection_map_, session_connection_map_lock_)));
+ session_connection_map_, session_connection_map_lock_ptr_)));
EXPECT_CALL(session_observer_mock, ProtocolVersionUsed(_, _, _))
.WillRepeatedly(