diff options
Diffstat (limited to 'src/components/transport_manager/src/transport_manager_default.cc')
-rw-r--r-- | src/components/transport_manager/src/transport_manager_default.cc | 77 |
1 files changed, 53 insertions, 24 deletions
diff --git a/src/components/transport_manager/src/transport_manager_default.cc b/src/components/transport_manager/src/transport_manager_default.cc index 71fc41ada9..868fcc3f15 100644 --- a/src/components/transport_manager/src/transport_manager_default.cc +++ b/src/components/transport_manager/src/transport_manager_default.cc @@ -55,67 +55,92 @@ namespace transport_manager { CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager") +TransportAdapterFactory::TransportAdapterFactory() { +#ifdef BLUETOOTH_SUPPORT + ta_bluetooth_creator_ = [](resumption::LastStateWrapperPtr last_state_wrapper, + const TransportManagerSettings& settings) { + return new transport_adapter::BluetoothTransportAdapter(last_state_wrapper, + settings); + }; +#endif + ta_tcp_creator_ = [](const uint16_t port, + resumption::LastStateWrapperPtr last_state_wrapper, + const TransportManagerSettings& settings) { + return new transport_adapter::TcpTransportAdapter( + port, last_state_wrapper, settings); + }; +#if defined(USB_SUPPORT) + ta_usb_creator_ = [](resumption::LastStateWrapperPtr last_state_wrapper, + const TransportManagerSettings& settings) { + return new transport_adapter::UsbAoaAdapter(last_state_wrapper, settings); + }; +#endif +#if defined(CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT) + ta_cloud_creator_ = [](resumption::LastStateWrapperPtr last_state_wrapper, + const TransportManagerSettings& settings) { + return new transport_adapter::CloudWebsocketTransportAdapter( + last_state_wrapper, settings); + }; +#endif +} + TransportManagerDefault::TransportManagerDefault( - const TransportManagerSettings& settings) - : TransportManagerImpl(settings) {} + const TransportManagerSettings& settings, + const TransportAdapterFactory& ta_factory) + : TransportManagerImpl(settings), ta_factory_(ta_factory) {} -int TransportManagerDefault::Init(resumption::LastState& last_state) { +int TransportManagerDefault::Init( + resumption::LastStateWrapperPtr last_state_wrapper) { LOG4CXX_TRACE(logger_, "enter"); - if (E_SUCCESS != TransportManagerImpl::Init(last_state)) { + if (E_SUCCESS != TransportManagerImpl::Init(last_state_wrapper)) { LOG4CXX_TRACE(logger_, "exit with E_TM_IS_NOT_INITIALIZED. Condition: E_SUCCESS != " "TransportManagerImpl::Init()"); return E_TM_IS_NOT_INITIALIZED; } -#ifdef BLUETOOTH_SUPPORT - transport_adapter::TransportAdapterImpl* ta_bluetooth = - new transport_adapter::BluetoothTransportAdapter(last_state, - get_settings()); + const auto& settings = get_settings(); + +#if defined(BLUETOOTH_SUPPORT) + auto ta_bluetooth = + ta_factory_.ta_bluetooth_creator_(last_state_wrapper, settings); #ifdef TELEMETRY_MONITOR if (metric_observer_) { ta_bluetooth->SetTelemetryObserver(metric_observer_); } #endif // TELEMETRY_MONITOR AddTransportAdapter(ta_bluetooth); - ta_bluetooth = NULL; -#endif +#endif // BLUETOOTH_SUPPORT - const uint16_t port = get_settings().transport_manager_tcp_adapter_port(); - transport_adapter::TransportAdapterImpl* ta_tcp = - new transport_adapter::TcpTransportAdapter( - port, last_state, get_settings()); + auto ta_tcp = + ta_factory_.ta_tcp_creator_(settings.transport_manager_tcp_adapter_port(), + last_state_wrapper, + settings); #ifdef TELEMETRY_MONITOR if (metric_observer_) { ta_tcp->SetTelemetryObserver(metric_observer_); } #endif // TELEMETRY_MONITOR AddTransportAdapter(ta_tcp); - ta_tcp = NULL; #if defined(USB_SUPPORT) - transport_adapter::TransportAdapterImpl* ta_usb = - new transport_adapter::UsbAoaAdapter(last_state, get_settings()); + auto ta_usb = ta_factory_.ta_usb_creator_(last_state_wrapper, settings); #ifdef TELEMETRY_MONITOR if (metric_observer_) { ta_usb->SetTelemetryObserver(metric_observer_); } #endif // TELEMETRY_MONITOR AddTransportAdapter(ta_usb); - ta_usb = NULL; #endif // USB_SUPPORT #if defined(CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT) - transport_adapter::TransportAdapterImpl* ta_cloud = - new transport_adapter::CloudWebsocketTransportAdapter(last_state, - get_settings()); + auto ta_cloud = ta_factory_.ta_cloud_creator_(last_state_wrapper, settings); #ifdef TELEMETRY_MONITOR if (metric_observer_) { ta_cloud->SetTelemetryObserver(metric_observer_); } #endif // TELEMETRY_MONITOR AddTransportAdapter(ta_cloud); - ta_cloud = NULL; #endif // CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT #if defined BUILD_TESTS @@ -123,14 +148,14 @@ int TransportManagerDefault::Init(resumption::LastState& last_state) { transport_adapter::IAP2BluetoothEmulationTransportAdapter* iap2_bt_emu_adapter = new transport_adapter::IAP2BluetoothEmulationTransportAdapter( - iap2_bt_emu_port, last_state, get_settings()); + iap2_bt_emu_port, last_state_wrapper, settings); AddTransportAdapter(iap2_bt_emu_adapter); const uint16_t iap2_usb_emu_port = 34567; transport_adapter::IAP2USBEmulationTransportAdapter* iap2_usb_emu_adapter = new transport_adapter::IAP2USBEmulationTransportAdapter( - iap2_usb_emu_port, last_state, get_settings()); + iap2_usb_emu_port, last_state_wrapper, settings); AddTransportAdapter(iap2_usb_emu_adapter); #endif // BUILD_TEST @@ -139,6 +164,10 @@ int TransportManagerDefault::Init(resumption::LastState& last_state) { return E_SUCCESS; } +int TransportManagerDefault::Init(resumption::LastState&) { + return 1; +} + TransportManagerDefault::~TransportManagerDefault() {} } // namespace transport_manager |