summaryrefslogtreecommitdiff
path: root/src/components/transport_manager
diff options
context:
space:
mode:
authorKozoriz <kozorizandriy@gmail.com>2016-04-11 16:37:41 +0300
committerKozoriz <kozorizandriy@gmail.com>2016-04-25 12:15:47 +0300
commit78714c9fee6e88483d91a682d0002e7afd4e6c6c (patch)
treeb18635a81a88c42ad0add734bf55c665f9f869a6 /src/components/transport_manager
parenta86a2b2cbc6d0a0fb06af317f01eae8167c7e3dc (diff)
downloadsdl_core-78714c9fee6e88483d91a682d0002e7afd4e6c6c.tar.gz
TransportManager update after removing all singletons
Diffstat (limited to 'src/components/transport_manager')
-rw-r--r--src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h3
-rw-r--r--src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h3
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h9
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_manager_default.h10
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_manager_impl.h25
-rw-r--r--src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h3
-rw-r--r--src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc4
-rw-r--r--src/components/transport_manager/src/tcp/tcp_transport_adapter.cc8
-rw-r--r--src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc10
-rw-r--r--src/components/transport_manager/src/transport_manager_default.cc18
-rw-r--r--src/components/transport_manager/src/transport_manager_impl.cc57
-rw-r--r--src/components/transport_manager/src/usb/usb_aoa_adapter.cc10
12 files changed, 95 insertions, 65 deletions
diff --git a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h
index d5cf821b06..a0929244d5 100644
--- a/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h
+++ b/src/components/transport_manager/include/transport_manager/bluetooth/bluetooth_transport_adapter.h
@@ -49,7 +49,8 @@ class BluetoothTransportAdapter : public TransportAdapterImpl {
/**
* @brief Constructor.
*/
- BluetoothTransportAdapter(resumption::LastState& last_state);
+ BluetoothTransportAdapter(resumption::LastState& last_state,
+ const TransportManagerSettings& settings);
/**
* @brief Destructor.
diff --git a/src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h b/src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h
index ac961706d4..5431b4455d 100644
--- a/src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h
+++ b/src/components/transport_manager/include/transport_manager/tcp/tcp_transport_adapter.h
@@ -50,7 +50,8 @@ class TcpTransportAdapter : public TransportAdapterImpl {
* @brief Constructor.
*/
explicit TcpTransportAdapter(uint16_t port,
- resumption::LastState& last_state);
+ resumption::LastState& last_state,
+ const TransportManagerSettings& settings);
/**
* @brief Destructor.
diff --git a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h
index af22718b0b..6301b82f20 100644
--- a/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h
+++ b/src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h
@@ -45,6 +45,7 @@
#include "transport_manager/transport_adapter/transport_adapter.h"
#include "transport_manager/transport_adapter/transport_adapter_controller.h"
#include "transport_manager/transport_adapter/connection.h"
+#include "transport_manager/transport_manager_settings.h"
#include "resumption/last_state.h"
#ifdef TELEMETRY_MONITOR
@@ -78,7 +79,8 @@ class TransportAdapterImpl : public TransportAdapter,
TransportAdapterImpl(DeviceScanner* device_scanner,
ServerConnectionFactory* server_connection_factory,
ClientConnectionListener* client_connection_listener,
- resumption::LastState& last_state);
+ resumption::LastState& last_state,
+ const TransportManagerSettings& settings);
/**
* @brief Destructor.
@@ -452,6 +454,10 @@ class TransportAdapterImpl : public TransportAdapter,
virtual ConnectionSPtr FindEstablishedConnection(const DeviceUID& device_handle,
const ApplicationHandle& app_handle) const;
+ const TransportManagerSettings& get_settings() const {
+ return settings_;
+ }
+
private:
/**
* @brief Connect to all applications discovered on device
@@ -558,6 +564,7 @@ class TransportAdapterImpl : public TransportAdapter,
ClientConnectionListener* client_connection_listener_;
resumption::LastState& last_state_;
+ const TransportManagerSettings& settings_;
};
} // namespace transport_adapter
diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_default.h b/src/components/transport_manager/include/transport_manager/transport_manager_default.h
index 2dcde623df..1fa280fa4f 100644
--- a/src/components/transport_manager/include/transport_manager/transport_manager_default.h
+++ b/src/components/transport_manager/include/transport_manager/transport_manager_default.h
@@ -36,8 +36,6 @@
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_MANAGER_DEFAULT_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_TRANSPORT_MANAGER_DEFAULT_H_
-#include "utils/singleton.h"
-
#include "transport_manager/transport_manager_impl.h"
namespace resumption {
@@ -49,8 +47,10 @@ namespace transport_manager {
/**
* @brief Default realization of transport_manager_impl class.
*/
-class TransportManagerDefault : public TransportManagerImpl,
- public utils::Singleton<TransportManagerDefault> {
+class TransportManagerDefault : public TransportManagerImpl {
+
+public:
+ explicit TransportManagerDefault(const TransportManagerSettings& settings);
/**
* @brief Initialize transport manager.
@@ -64,11 +64,9 @@ class TransportManagerDefault : public TransportManagerImpl,
*/
virtual ~TransportManagerDefault();
- TransportManagerDefault();
DISALLOW_COPY_AND_ASSIGN(TransportManagerDefault);
- FRIEND_BASE_SINGLETON_CLASS(TransportManagerDefault);
};
}
diff --git a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
index 921120a7d5..9de6a0720b 100644
--- a/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
+++ b/src/components/transport_manager/include/transport_manager/transport_manager_impl.h
@@ -50,10 +50,11 @@
#include "protocol/common.h"
#ifdef TELEMETRY_MONITOR
#include "transport_manager/telemetry_observer.h"
+#include "telemetry_monitor/telemetry_observable.h"
#endif // TELEMETRY_MONITOR
#include "utils/threads/message_loop_thread.h"
#include "transport_manager/transport_adapter/transport_adapter_event.h"
-#include "telemetry_monitor/telemetry_observable.h"
+#include "transport_manager/transport_manager_settings.h"
namespace transport_manager {
@@ -66,14 +67,14 @@ typedef utils::SharedPtr<timer::Timer> TimerSPtr;
/**
* @brief Implementation of transport manager.s
*/
-class TransportManagerImpl
- : public TransportManager,
- public RawMessageLoopThread::Handler
+class TransportManagerImpl : public TransportManager,
+ public RawMessageLoopThread::Handler,
+ public TransportAdapterEventLoopThread::Handler
#ifdef TELEMETRY_MONITOR
,
public telemetry_monitor::TelemetryObservable<TMTelemetryObserver>
#endif // TELEMETRY_MONITOR
- , public TransportAdapterEventLoopThread::Handler {
+ {
public:
struct Connection {
ConnectionUID id;
@@ -89,7 +90,7 @@ class TransportManagerImpl
TransportManagerImpl* transport_manager;
TransportAdapter* transport_adapter;
TimerSPtr timer;
- bool shut_down;
+ bool shutdown_;
DeviceHandle device_handle_;
int messages_count;
@@ -103,6 +104,13 @@ class TransportManagerImpl
void DisconnectFailedRoutine();
};
public:
+
+
+ /**
+ * @brief Constructor.
+ **/
+ explicit TransportManagerImpl(const TransportManagerSettings& settings);
+
/**
* @brief Destructor.
**/
@@ -234,12 +242,13 @@ class TransportManagerImpl
void SetTelemetryObserver(TMTelemetryObserver* observer);
#endif // TELEMETRY_MONITOR
-
/**
* @brief Constructor.
**/
TransportManagerImpl();
+ const TransportManagerSettings& get_settings() const;
+
protected:
template <class Proc, class... Args>
void RaiseEvent(Proc proc, Args... args) {
@@ -343,7 +352,7 @@ class TransportManagerImpl
transport_adapter_listeners_;
RawMessageLoopThread message_queue_;
TransportAdapterEventLoopThread event_queue_;
-
+ const TransportManagerSettings& settings_;
typedef std::vector<std::pair<const TransportAdapter*, DeviceInfo> >
DeviceInfoList;
sync_primitives::RWLock device_list_lock_;
diff --git a/src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h b/src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h
index 86b59c7ef9..273e714d4d 100644
--- a/src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h
+++ b/src/components/transport_manager/include/transport_manager/usb/usb_aoa_adapter.h
@@ -44,7 +44,8 @@ namespace transport_adapter {
class UsbAoaAdapter : public TransportAdapterImpl {
public:
- UsbAoaAdapter(resumption::LastState& last_state);
+ UsbAoaAdapter(resumption::LastState& last_state,
+ const TransportManagerSettings& settings);
virtual ~UsbAoaAdapter();
protected:
diff --git a/src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc b/src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc
index 93cf427ef0..d8391d7585 100644
--- a/src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc
+++ b/src/components/transport_manager/src/bluetooth/bluetooth_transport_adapter.cc
@@ -57,10 +57,10 @@ CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager")
BluetoothTransportAdapter::~BluetoothTransportAdapter() {
}
-BluetoothTransportAdapter::BluetoothTransportAdapter(resumption::LastState &last_state)
+BluetoothTransportAdapter::BluetoothTransportAdapter(resumption::LastState &last_state, const TransportManagerSettings &settings)
: TransportAdapterImpl(new BluetoothDeviceScanner(this, true, 0),
new BluetoothConnectionFactory(this), NULL,
- last_state) {
+ last_state, settings) {
}
DeviceType BluetoothTransportAdapter::GetDeviceType() const {
diff --git a/src/components/transport_manager/src/tcp/tcp_transport_adapter.cc b/src/components/transport_manager/src/tcp/tcp_transport_adapter.cc
index faeed71a19..1c1f901f0b 100644
--- a/src/components/transport_manager/src/tcp/tcp_transport_adapter.cc
+++ b/src/components/transport_manager/src/tcp/tcp_transport_adapter.cc
@@ -51,12 +51,14 @@ namespace transport_adapter {
CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager")
-TcpTransportAdapter::TcpTransportAdapter(const uint16_t port,
- resumption::LastState& last_state)
+TcpTransportAdapter::TcpTransportAdapter(
+ const uint16_t port,
+ resumption::LastState& last_state,
+ const TransportManagerSettings& settings)
: TransportAdapterImpl(NULL,
new TcpConnectionFactory(this),
new TcpClientListener(this, port, true),
- last_state) {}
+ last_state, settings) {}
TcpTransportAdapter::~TcpTransportAdapter() {
}
diff --git a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc
index 2e8eaaf7f8..30b8d5248b 100644
--- a/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc
+++ b/src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc
@@ -59,7 +59,8 @@ TransportAdapterImpl::TransportAdapterImpl(
DeviceScanner* device_scanner,
ServerConnectionFactory* server_connection_factory,
ClientConnectionListener* client_connection_listener,
- resumption::LastState& last_state)
+ resumption::LastState& last_state,
+ const TransportManagerSettings& settings)
: listeners_()
, initialised_(0)
, devices_()
@@ -72,8 +73,9 @@ TransportAdapterImpl::TransportAdapterImpl(
#endif // TELEMETRY_MONITOR
device_scanner_(device_scanner)
, server_connection_factory_(server_connection_factory)
- , client_connection_listener_(client_connection_listener),
- last_state_(last_state) {
+ , client_connection_listener_(client_connection_listener)
+ , last_state_(last_state)
+ , settings_(settings) {
}
TransportAdapterImpl::~TransportAdapterImpl() {
@@ -144,7 +146,7 @@ TransportAdapter::Error TransportAdapterImpl::Init() {
initialised_ = (error == OK);
- if (profile::Profile::instance()->use_last_state()) {
+ if (get_settings().use_last_state()) {
if (!Restore()) {
LOG4CXX_WARN(logger_, "could not restore transport adapter state");
error = FAIL;
diff --git a/src/components/transport_manager/src/transport_manager_default.cc b/src/components/transport_manager/src/transport_manager_default.cc
index 45710c6c88..a1718e2cd2 100644
--- a/src/components/transport_manager/src/transport_manager_default.cc
+++ b/src/components/transport_manager/src/transport_manager_default.cc
@@ -32,9 +32,6 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
-
-#include "config_profile/profile.h"
-
#include "transport_manager/transport_manager_default.h"
#include "transport_manager/tcp/tcp_transport_adapter.h"
#include "utils/logger.h"
@@ -53,6 +50,10 @@
namespace transport_manager {
CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager")
+TransportManagerDefault::TransportManagerDefault(
+ const TransportManagerSettings& settings)
+ : TransportManagerImpl(settings) {}
+
int TransportManagerDefault::Init(resumption::LastState& last_state) {
LOG4CXX_TRACE(logger_, "enter");
if (E_SUCCESS != TransportManagerImpl::Init(last_state)) {
@@ -64,7 +65,7 @@ int TransportManagerDefault::Init(resumption::LastState& last_state) {
#ifdef BLUETOOTH_SUPPORT
transport_adapter::TransportAdapterImpl* ta_bluetooth =
- new transport_adapter::BluetoothTransportAdapter(last_state);
+ new transport_adapter::BluetoothTransportAdapter(last_state, get_settings());
#ifdef TELEMETRY_MONITOR
if (metric_observer_) {
ta_bluetooth->SetTelemetryObserver(metric_observer_);
@@ -75,9 +76,9 @@ int TransportManagerDefault::Init(resumption::LastState& last_state) {
#endif
const uint16_t port =
- profile::Profile::instance()->transport_manager_tcp_adapter_port();
+ get_settings().transport_manager_tcp_adapter_port();
transport_adapter::TransportAdapterImpl* ta_tcp =
- new transport_adapter::TcpTransportAdapter(port, last_state);
+ new transport_adapter::TcpTransportAdapter(port, last_state, get_settings());
#ifdef TELEMETRY_MONITOR
if (metric_observer_) {
ta_tcp->SetTelemetryObserver(metric_observer_);
@@ -89,7 +90,7 @@ int TransportManagerDefault::Init(resumption::LastState& last_state) {
#if defined(USB_SUPPORT)
transport_adapter::TransportAdapterImpl* ta_usb =
- new transport_adapter::UsbAoaAdapter(last_state);
+ new transport_adapter::UsbAoaAdapter(last_state, get_settings());
#ifdef TELEMETRY_MONITOR
if (metric_observer_) {
ta_usb->SetTelemetryObserver(metric_observer_);
@@ -105,7 +106,4 @@ int TransportManagerDefault::Init(resumption::LastState& last_state) {
TransportManagerDefault::~TransportManagerDefault() {}
-TransportManagerDefault::TransportManagerDefault()
- : TransportManagerImpl() {}
-
} // namespace transport_manager
diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc
index 0f1696aad9..5635bf1fd3 100644
--- a/src/components/transport_manager/src/transport_manager_impl.cc
+++ b/src/components/transport_manager/src/transport_manager_impl.cc
@@ -40,6 +40,7 @@
#include <limits>
#include <functional>
#include <sstream>
+#include <iostream>
#include "utils/macro.h"
#include "utils/logger.h"
@@ -70,14 +71,16 @@ TransportManagerImpl::Connection TransportManagerImpl::convert(
return c;
}
-TransportManagerImpl::TransportManagerImpl()
- : is_initialized_(false),
+TransportManagerImpl::TransportManagerImpl(
+ const TransportManagerSettings& settings)
+ : is_initialized_(false)
#ifdef TELEMETRY_MONITOR
- metric_observer_(NULL),
+ , metric_observer_(NULL)
#endif // TELEMETRY_MONITOR
- connection_id_counter_(0),
- message_queue_("TM MessageQueue", this),
- event_queue_("TM EventQueue", this) {
+ , connection_id_counter_(0)
+ , message_queue_("TM MessageQueue", this)
+ , event_queue_("TM EventQueue", this)
+ , settings_(settings) {
LOG4CXX_TRACE(logger_, "TransportManager has created");
}
@@ -187,7 +190,7 @@ int TransportManagerImpl::Disconnect(const ConnectionUID cid) {
connection->shutDown = true;
const uint32_t disconnect_timeout =
- profile::Profile::instance()->transport_manager_disconnect_timeout();
+ get_settings().transport_manager_disconnect_timeout();
if (disconnect_timeout > 0) {
connection->timer->start(disconnect_timeout);
}
@@ -297,7 +300,7 @@ int TransportManagerImpl::SendMessageToDevice(const ::protocol_handler::RawMessa
return E_INVALID_HANDLE;
}
- if (connection->shut_down) {
+ if (connection->shutdown_) {
LOG4CXX_ERROR(logger_, "TransportManagerImpl::Disconnect: Connection is to shut down.");
LOG4CXX_TRACE(logger_,
"exit with E_CONNECTION_IS_TO_SHUTDOWN. Condition: connection->shutDown");
@@ -533,8 +536,12 @@ void TransportManagerImpl::PostEvent(const TransportAdapterEvent& event) {
event_queue_.PostMessage(event);
}
+const TransportManagerSettings& TransportManagerImpl::get_settings() const {
+ return settings_;
+}
+
void TransportManagerImpl::AddConnection(const ConnectionInternal& c) {
- LOG4CXX_AUTO_TRACE(logger_);
+ LOG4CXX_AUTO_TRACE(logger_);
LOG4CXX_DEBUG(logger_, "ConnectionInternal: " << &c);
sync_primitives::AutoWriteLock lock(connections_lock_);
connections_.push_back(c);
@@ -698,7 +705,7 @@ void TransportManagerImpl::Handle(TransportAdapterEvent event) {
break;
}
RaiseEvent(&TransportManagerListener::OnTMMessageSend, event.event_data);
- if (connection->shut_down && --connection->messages_count == 0) {
+ if (connection->shutdown_ && --connection->messages_count == 0) {
connection->timer->Stop();
connection->transport_adapter->Disconnect(connection->device,
connection->application);
@@ -855,20 +862,22 @@ void TransportManagerImpl::Handle(::protocol_handler::RawMessagePtr msg) {
LOG4CXX_TRACE(logger_, "exit");
}
-TransportManagerImpl::ConnectionInternal::ConnectionInternal(TransportManagerImpl* transport_manager,
- TransportAdapter* transport_adapter, const ConnectionUID id,
- const DeviceUID& dev_id, const ApplicationHandle& app_id,
+TransportManagerImpl::ConnectionInternal::ConnectionInternal(
+ TransportManagerImpl* transport_manager,
+ TransportAdapter* transport_adapter,
+ const ConnectionUID id,
+ const DeviceUID& dev_id,
+ const ApplicationHandle& app_id,
const DeviceHandle device_handle)
- : transport_manager(transport_manager),
- transport_adapter(transport_adapter),
- timer(utils::MakeShared<timer::Timer>(
- "TM DiscRoutine",
- new ::timer::TimerTaskImpl<ConnectionInternal> (
- this,
- &ConnectionInternal::DisconnectFailedRoutine))),
- shut_down(false),
- device_handle_(device_handle),
- messages_count(0) {
+ : transport_manager(transport_manager)
+ , transport_adapter(transport_adapter)
+ , timer(utils::MakeShared<timer::Timer, const char*, ::timer::TimerTaskImpl<ConnectionInternal>*>(
+ "TM DiscRoutine",
+ new ::timer::TimerTaskImpl<ConnectionInternal>(
+ this, &ConnectionInternal::DisconnectFailedRoutine)))
+ , shutdown_(false)
+ , device_handle_(device_handle)
+ , messages_count(0) {
Connection::id = id;
Connection::device = dev_id;
Connection::application = app_id;
@@ -878,7 +887,7 @@ void TransportManagerImpl::ConnectionInternal::DisconnectFailedRoutine() {
LOG4CXX_TRACE(logger_, "enter");
transport_manager->RaiseEvent(&TransportManagerListener::OnDisconnectFailed,
device_handle_, DisconnectDeviceError());
- shut_down = false;
+ shutdown_ = false;
timer->Stop();
LOG4CXX_TRACE(logger_, "exit");
}
diff --git a/src/components/transport_manager/src/usb/usb_aoa_adapter.cc b/src/components/transport_manager/src/usb/usb_aoa_adapter.cc
index edeb426c66..46f5fd8ec3 100644
--- a/src/components/transport_manager/src/usb/usb_aoa_adapter.cc
+++ b/src/components/transport_manager/src/usb/usb_aoa_adapter.cc
@@ -43,10 +43,12 @@ namespace transport_manager {
namespace transport_adapter {
CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager")
-UsbAoaAdapter::UsbAoaAdapter(resumption::LastState& last_state)
- : TransportAdapterImpl(
- new UsbDeviceScanner(this), new UsbConnectionFactory(this), NULL,
- last_state)
+UsbAoaAdapter::UsbAoaAdapter(resumption::LastState& last_state,
+ const TransportManagerSettings& settings)
+ : TransportAdapterImpl(new UsbDeviceScanner(this),
+ new UsbConnectionFactory(this),
+ NULL,
+ last_state, settings)
, is_initialised_(false)
, usb_handler_(new UsbHandler()) {
static_cast<UsbDeviceScanner*>(device_scanner_)->SetUsbHandler(usb_handler_);