summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/src/transport_manager_default.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/transport_manager/src/transport_manager_default.cc')
-rw-r--r--src/components/transport_manager/src/transport_manager_default.cc65
1 files changed, 43 insertions, 22 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..0d58e24b5c 100644
--- a/src/components/transport_manager/src/transport_manager_default.cc
+++ b/src/components/transport_manager/src/transport_manager_default.cc
@@ -55,9 +55,39 @@
namespace transport_manager {
CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager")
+TransportAdapterFactory::TransportAdapterFactory() {
+#ifdef BLUETOOTH_SUPPORT
+ ta_bluetooth_creator_ = [](resumption::LastState& last_state,
+ const TransportManagerSettings& settings) {
+ return new transport_adapter::BluetoothTransportAdapter(last_state,
+ settings);
+ };
+#endif
+ ta_tcp_creator_ = [](const uint16_t port,
+ resumption::LastState& last_state,
+ const TransportManagerSettings& settings) {
+ return new transport_adapter::TcpTransportAdapter(
+ port, last_state, settings);
+ };
+#if defined(USB_SUPPORT)
+ ta_usb_creator_ = [](resumption::LastState& last_state,
+ const TransportManagerSettings& settings) {
+ return new transport_adapter::UsbAoaAdapter(last_state, settings);
+ };
+#endif
+#if defined(CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT)
+ ta_cloud_creator_ = [](resumption::LastState& last_state,
+ const TransportManagerSettings& settings) {
+ return new transport_adapter::CloudWebsocketTransportAdapter(last_state,
+ 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) {
LOG4CXX_TRACE(logger_, "enter");
@@ -68,54 +98,45 @@ int TransportManagerDefault::Init(resumption::LastState& last_state) {
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, 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, 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, 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, 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 +144,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, 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, settings);
AddTransportAdapter(iap2_usb_emu_adapter);
#endif // BUILD_TEST