From 78714c9fee6e88483d91a682d0002e7afd4e6c6c Mon Sep 17 00:00:00 2001 From: Kozoriz Date: Mon, 11 Apr 2016 16:37:41 +0300 Subject: TransportManager update after removing all singletons --- .../bluetooth/bluetooth_transport_adapter.h | 3 +- .../transport_manager/tcp/tcp_transport_adapter.h | 3 +- .../transport_adapter/transport_adapter_impl.h | 9 +++- .../transport_manager/transport_manager_default.h | 10 ++-- .../transport_manager/transport_manager_impl.h | 25 +++++++--- .../transport_manager/usb/usb_aoa_adapter.h | 3 +- .../src/bluetooth/bluetooth_transport_adapter.cc | 4 +- .../src/tcp/tcp_transport_adapter.cc | 8 +-- .../transport_adapter/transport_adapter_impl.cc | 10 ++-- .../src/transport_manager_default.cc | 18 +++---- .../src/transport_manager_impl.cc | 57 +++++++++++++--------- .../transport_manager/src/usb/usb_aoa_adapter.cc | 10 ++-- 12 files changed, 95 insertions(+), 65 deletions(-) (limited to 'src/components/transport_manager') 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 { +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 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 #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 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 > 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 #include #include +#include #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( - "TM DiscRoutine", - new ::timer::TimerTaskImpl ( - this, - &ConnectionInternal::DisconnectFailedRoutine))), - shut_down(false), - device_handle_(device_handle), - messages_count(0) { + : transport_manager(transport_manager) + , transport_adapter(transport_adapter) + , timer(utils::MakeShared*>( + "TM DiscRoutine", + new ::timer::TimerTaskImpl( + 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(device_scanner_)->SetUsbHandler(usb_handler_); -- cgit v1.2.1