summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndriy Byzhynar <abyzhynar@luxoft.com>2020-02-20 16:58:53 +0200
committerAndriy Byzhynar <abyzhynar@luxoft.com>2020-02-24 18:24:33 +0200
commit2c784da15f120869d25267bd5b778d983504440a (patch)
tree98e7696a485365127d7fca9d6070e9f85a319904
parent3af95076c6c05d68e46c9d08a5800b9cdb8536df (diff)
downloadsdl_core-2c784da15f120869d25267bd5b778d983504440a.tar.gz
Rework WebEngine device ID generation
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h2
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_get_vehicle_data_response.cc6
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc11
-rw-r--r--src/components/application_manager/test/application_manager_impl_test.cc6
-rw-r--r--src/components/connection_handler/include/connection_handler/connection_handler_impl.h4
-rw-r--r--src/components/connection_handler/src/connection_handler_impl.cc8
-rw-r--r--src/components/include/application_manager/application_manager.h2
-rw-r--r--src/components/include/connection_handler/connection_handler.h14
-rw-r--r--src/components/include/test/connection_handler/mock_connection_handler.h3
-rw-r--r--src/components/include/test/transport_manager/mock_transport_manager.h2
-rw-r--r--src/components/include/test/transport_manager/transport_adapter/mock_transport_adapter.h3
-rw-r--r--src/components/include/transport_manager/transport_adapter/transport_adapter.h9
-rw-r--r--src/components/include/transport_manager/transport_manager.h7
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h8
-rw-r--r--src/components/transport_manager/include/transport_manager/transport_manager_impl.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/websocket_server/websocket_secure_session.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/websocket_server/websocket_server_transport_adapter.h14
-rw-r--r--src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc7
-rw-r--r--src/components/transport_manager/src/transport_manager_default.cc1
-rw-r--r--src/components/transport_manager/src/transport_manager_impl.cc30
-rw-r--r--src/components/transport_manager/src/websocket_server/websocket_device.cc2
-rw-r--r--src/components/transport_manager/src/websocket_server/websocket_server_transport_adapter.cc41
22 files changed, 127 insertions, 57 deletions
diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h
index e4cab833e4..51e46bc082 100644
--- a/src/components/application_manager/include/application_manager/application_manager_impl.h
+++ b/src/components/application_manager/include/application_manager/application_manager_impl.h
@@ -1161,8 +1161,6 @@ class ApplicationManagerImpl
void ApplyFunctorForEachPlugin(
std::function<void(plugin_manager::RPCPlugin&)> functor) OVERRIDE;
- void SetVINCode(const std::string& vin_code) OVERRIDE;
-
private:
/**
* @brief Adds application to registered applications list and marks it as
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_get_vehicle_data_response.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_get_vehicle_data_response.cc
index 75da07bc22..6a60cc968e 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_get_vehicle_data_response.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/commands/hmi/vi_get_vehicle_data_response.cc
@@ -79,12 +79,6 @@ void VIGetVehicleDataResponse::Run() {
} else {
event.set_smart_object(*message_);
policy_handler_.OnVehicleDataUpdated(*message_);
- if ((*message_).keyExists(strings::msg_params) &&
- (*message_)[strings::msg_params].keyExists(strings::vin)) {
- const std::string vin =
- (*message_)[strings::msg_params][strings::vin].asString();
- application_manager_.SetVINCode(vin);
- }
}
event.raise(application_manager_.event_dispatcher());
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 99024924a1..35cc8541f6 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -843,6 +843,11 @@ void ApplicationManagerImpl::ConnectToDevice(const std::string& device_mac) {
void ApplicationManagerImpl::OnHMIStartedCooperation() {
LOG4CXX_AUTO_TRACE(logger_);
hmi_cooperating_ = true;
+
+#ifdef WEBSOCKET_SERVER_TRANSPORT_SUPPORT
+ connection_handler_->CreateWebEngineDevice();
+#endif // WEBSOCKET_SERVER_TRANSPORT_SUPPORT
+
MessageHelper::SendGetSystemInfoRequest(*this);
std::shared_ptr<smart_objects::SmartObject> is_vr_ready(
@@ -3216,7 +3221,6 @@ void ApplicationManagerImpl::UnregisterApplication(
RemoveAppsWaitingForRegistration(handle);
}
}
-
const auto enabled_local_apps = policy_handler_->GetEnabledLocalApps();
if (helpers::in_range(enabled_local_apps, app_to_remove->policy_app_id())) {
LOG4CXX_DEBUG(logger_,
@@ -4378,11 +4382,6 @@ void ApplicationManagerImpl::ApplyFunctorForEachPlugin(
plugin_manager_->ForEachPlugin(functor);
}
-void ApplicationManagerImpl::SetVINCode(const std::string& vin_code) {
- LOG4CXX_AUTO_TRACE(logger_);
- connection_handler_->CreateWebEngineDevice(vin_code);
-}
-
event_engine::EventDispatcher& ApplicationManagerImpl::event_dispatcher() {
return event_dispatcher_;
}
diff --git a/src/components/application_manager/test/application_manager_impl_test.cc b/src/components/application_manager/test/application_manager_impl_test.cc
index b9bf3aaa99..f32f070f6f 100644
--- a/src/components/application_manager/test/application_manager_impl_test.cc
+++ b/src/components/application_manager/test/application_manager_impl_test.cc
@@ -2024,12 +2024,6 @@ TEST_F(ApplicationManagerImplTest, AddAndRemoveQueryAppDevice_SUCCESS) {
EXPECT_FALSE(app_manager_impl_->IsAppsQueriedFrom(device_handle));
}
-TEST_F(ApplicationManagerImplTest, SetVINCode_SUCCESS) {
- const std::string vin_code = "VIN CODE";
- EXPECT_CALL(mock_connection_handler_, CreateWebEngineDevice(vin_code));
- app_manager_impl_->SetVINCode(vin_code);
-}
-
} // namespace application_manager_test
} // namespace components
} // namespace test
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 bffd1188f8..858edbf093 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
@@ -606,10 +606,10 @@ class ConnectionHandlerImpl
const transport_manager::ConnectionUID secondary_connection_handle)
OVERRIDE;
- void CreateWebEngineDevice(const std::string& vin_code) OVERRIDE;
-
const transport_manager::DeviceInfo& GetWebEngineDeviceInfo() const OVERRIDE;
+ void CreateWebEngineDevice() OVERRIDE;
+
private:
/**
* \brief Disconnect application.
diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc
index 4b50e189e6..ca62d085cc 100644
--- a/src/components/connection_handler/src/connection_handler_impl.cc
+++ b/src/components/connection_handler/src/connection_handler_impl.cc
@@ -866,15 +866,15 @@ void ConnectionHandlerImpl::OnSecondaryTransportEnded(
}
}
-void ConnectionHandlerImpl::CreateWebEngineDevice(const std::string& vin_code) {
- transport_manager_.CreateWebEngineDevice(vin_code);
-}
-
const transport_manager::DeviceInfo&
ConnectionHandlerImpl::GetWebEngineDeviceInfo() const {
return transport_manager_.GetWebEngineDeviceInfo();
}
+void ConnectionHandlerImpl::CreateWebEngineDevice() {
+ transport_manager_.CreateWebEngineDevice();
+}
+
const std::string
ConnectionHandlerImpl::TransportTypeProfileStringFromConnHandle(
transport_manager::ConnectionUID connection_handle) const {
diff --git a/src/components/include/application_manager/application_manager.h b/src/components/include/application_manager/application_manager.h
index 6527cb960c..4e3905eb92 100644
--- a/src/components/include/application_manager/application_manager.h
+++ b/src/components/include/application_manager/application_manager.h
@@ -712,8 +712,6 @@ class ApplicationManager {
virtual void ApplyFunctorForEachPlugin(
std::function<void(plugin_manager::RPCPlugin&)> functor) = 0;
- virtual void SetVINCode(const std::string& vin_code) = 0;
-
/*
* @brief Converts connection string transport type representation
* to HMI Common_TransportType
diff --git a/src/components/include/connection_handler/connection_handler.h b/src/components/include/connection_handler/connection_handler.h
index 4c3aa69ea7..e98a78f377 100644
--- a/src/components/include/connection_handler/connection_handler.h
+++ b/src/components/include/connection_handler/connection_handler.h
@@ -313,20 +313,18 @@ class ConnectionHandler {
const transport_manager::ConnectionUID secondary_connection_handle) = 0;
/**
- * @brief Called when VIN code is received, creates
- * WebSocketDevice for WebEngine and add it to the device list
- * @param vin_code VIN code received from HMI
- */
- virtual void CreateWebEngineDevice(const std::string& vin_code) = 0;
-
- /**
* @brief GetWebEngineDeviceInfo
* @return device info for WebEngine device
*/
-
virtual const transport_manager::DeviceInfo& GetWebEngineDeviceInfo()
const = 0;
+ /**
+ * @brief Called when HMI cooperation is started,
+ * creates WebSocketDevice for WebEngine
+ */
+ virtual void CreateWebEngineDevice() = 0;
+
protected:
/**
* \brief Destructor
diff --git a/src/components/include/test/connection_handler/mock_connection_handler.h b/src/components/include/test/connection_handler/mock_connection_handler.h
index 9642621147..6acffea0ed 100644
--- a/src/components/include/test/connection_handler/mock_connection_handler.h
+++ b/src/components/include/test/connection_handler/mock_connection_handler.h
@@ -133,8 +133,7 @@ class MockConnectionHandler : public connection_handler::ConnectionHandler {
OnSecondaryTransportEnded,
void(const transport_manager::ConnectionUID primary_connection_handle,
const transport_manager::ConnectionUID secondary_connection_handle));
-
- MOCK_METHOD1(CreateWebEngineDevice, void(const std::string& vin_code));
+ MOCK_METHOD0(CreateWebEngineDevice, void());
MOCK_CONST_METHOD0(GetWebEngineDeviceInfo, transport_manager::DeviceInfo&());
};
diff --git a/src/components/include/test/transport_manager/mock_transport_manager.h b/src/components/include/test/transport_manager/mock_transport_manager.h
index 5681bba875..470ffb096c 100644
--- a/src/components/include/test/transport_manager/mock_transport_manager.h
+++ b/src/components/include/test/transport_manager/mock_transport_manager.h
@@ -86,7 +86,7 @@ class MockTransportManager : public ::transport_manager::TransportManager,
MOCK_METHOD1(SetTelemetryObserver,
void(transport_manager::TMTelemetryObserver* observer));
- MOCK_METHOD1(CreateWebEngineDevice, void(const std::string& vin_code));
+ MOCK_METHOD0(CreateWebEngineDevice, void());
MOCK_CONST_METHOD0(GetWebEngineDeviceInfo, transport_manager::DeviceInfo&());
};
diff --git a/src/components/include/test/transport_manager/transport_adapter/mock_transport_adapter.h b/src/components/include/test/transport_manager/transport_adapter/mock_transport_adapter.h
index d4ce0a39c8..f91f8ac0cd 100644
--- a/src/components/include/test/transport_manager/transport_adapter/mock_transport_adapter.h
+++ b/src/components/include/test/transport_manager/transport_adapter/mock_transport_adapter.h
@@ -112,6 +112,9 @@ class MockTransportAdapter
transport_manager::transport_adapter::DeviceSptr(
transport_manager::transport_adapter::DeviceSptr device));
+ MOCK_CONST_METHOD1(GetStoredDeviceID,
+ std::string(const std::string& device_name));
+
#ifdef TELEMETRY_MONITOR
MOCK_METHOD0(GetTelemetryObserver,
::transport_manager::TMTelemetryObserver*());
diff --git a/src/components/include/transport_manager/transport_adapter/transport_adapter.h b/src/components/include/transport_manager/transport_adapter/transport_adapter.h
index e9494b4ced..a6ee90d8ff 100644
--- a/src/components/include/transport_manager/transport_adapter/transport_adapter.h
+++ b/src/components/include/transport_manager/transport_adapter/transport_adapter.h
@@ -236,6 +236,15 @@ class TransportAdapter {
virtual DeviceSptr AddDevice(DeviceSptr device) = 0;
/**
+ * @brief Get stored device ID from last state
+ * @param device_name - name of the device, which id is required
+ * @return stored unique device id, or empty string if no stored device id
+ * present in last saved state
+ */
+ virtual std::string GetStoredDeviceID(
+ const std::string& device_name) const = 0;
+
+ /**
* @brief RunAppOnDevice allows to run specific application on the certain
*device.
*
diff --git a/src/components/include/transport_manager/transport_manager.h b/src/components/include/transport_manager/transport_manager.h
index e5f79edfc5..4c3da6a523 100644
--- a/src/components/include/transport_manager/transport_manager.h
+++ b/src/components/include/transport_manager/transport_manager.h
@@ -217,11 +217,10 @@ class TransportManager {
const TransportAction required_action) const = 0;
/**
- * @brief Called when VIN code is received, creates
- * WebSocketDevice for WebEngine and add it to the device list
- * @param vin_code VIN code received from HMI
+ * @brief Called when websocket server transport adapter is available.
+ * Creates WebSocketDevice for WebEngine and add it to the device list
*/
- virtual void CreateWebEngineDevice(const std::string& vin_code) = 0;
+ virtual void CreateWebEngineDevice() = 0;
/**
* @brief GetWebEngineDeviceInfo
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 99077b69f4..7281f06394 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
@@ -523,6 +523,14 @@ class TransportAdapterImpl : public TransportAdapter,
virtual bool Restore();
/**
+ * @brief Get stored device ID form last state
+ * @param device_name - name of the device, which id is required
+ * @return stored unique device id, or empty string if no stored device id
+ * present in last saved state
+ */
+ virtual std::string GetStoredDeviceID(const std::string& device_name) const;
+
+ /**
* @brief Returns true if \a device is to be connected automatically
*/
virtual bool ToBeAutoConnected(DeviceSptr device) const;
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 3cfe7c5dfe..3cc64511a1 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
@@ -259,7 +259,7 @@ class TransportManagerImpl
int PerformActionOnClients(
const TransportAction required_action) const OVERRIDE;
- void CreateWebEngineDevice(const std::string& vin_code) OVERRIDE;
+ void CreateWebEngineDevice() OVERRIDE;
const DeviceInfo& GetWebEngineDeviceInfo() const OVERRIDE;
diff --git a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_secure_session.h b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_secure_session.h
index 72c16ff85b..a3ead8e5a5 100644
--- a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_secure_session.h
+++ b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_secure_session.h
@@ -31,8 +31,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_WEBSOCKET_SERVER_WEBSOCKET_SECURE_SESSION_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_WEBSOCKET_SERVER_WEBSOCKET_SECURE_SESSION_H_
-#include "transport_manager/websocket_server/websocket_session.h"
#include <memory>
+#include "transport_manager/websocket_server/websocket_session.h"
namespace transport_manager {
namespace transport_adapter {
diff --git a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_server_transport_adapter.h b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_server_transport_adapter.h
index 28e4436605..ce2844fa45 100644
--- a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_server_transport_adapter.h
+++ b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_server_transport_adapter.h
@@ -36,6 +36,7 @@
#ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_WEBSOCKET_SERVER_WEBSOCKET_SERVER_TRANSPORT_ADAPTER_H_
#define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_WEBSOCKET_SERVER_WEBSOCKET_SERVER_TRANSPORT_ADAPTER_H_
+#include <string>
#include "transport_manager/transport_adapter/transport_adapter_impl.h"
namespace transport_manager {
@@ -86,6 +87,19 @@ class WebSocketServerTransportAdapter : public TransportAdapterImpl {
*/
virtual TransportConfig GetTransportConfiguration() const OVERRIDE;
+ /**
+ * @brief Store adapter state in last state
+ */
+ void Store() const OVERRIDE;
+
+ /**
+ * @brief Restore adapter state from last state
+ * @return True on success false otherwise
+ */
+ bool Restore() OVERRIDE;
+
+ std::string GetStoredDeviceID(const std::string& device_name) const OVERRIDE;
+
protected:
/**
* @brief Return type of device.
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 56d809a05f..1fa5dd5f29 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
@@ -1160,6 +1160,13 @@ bool TransportAdapterImpl::Restore() {
return true;
}
+std::string TransportAdapterImpl::GetStoredDeviceID(
+ const std::string& device_name) const {
+ LOG4CXX_AUTO_TRACE(logger_);
+ UNUSED(device_name);
+ return std::string();
+}
+
bool TransportAdapterImpl::ToBeAutoConnected(DeviceSptr device) const {
return false;
}
diff --git a/src/components/transport_manager/src/transport_manager_default.cc b/src/components/transport_manager/src/transport_manager_default.cc
index 0a8289253f..517ec2a611 100644
--- a/src/components/transport_manager/src/transport_manager_default.cc
+++ b/src/components/transport_manager/src/transport_manager_default.cc
@@ -146,6 +146,7 @@ int TransportManagerDefault::Init(resumption::LastState& last_state) {
#ifdef WEBSOCKET_SERVER_TRANSPORT_SUPPORT
auto ta_websocket = new transport_adapter::WebSocketServerTransportAdapter(
last_state, get_settings());
+
#ifdef TELEMETRY_MONITOR
if (metric_observer_) {
ta_websocket->SetTelemetryObserver(metric_observer_);
diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc
index 66a892a322..1dde5f476a 100644
--- a/src/components/transport_manager/src/transport_manager_impl.cc
+++ b/src/components/transport_manager/src/transport_manager_impl.cc
@@ -42,6 +42,7 @@
#include <set>
#include <sstream>
+#include "utils/gen_hash.h"
#include "utils/logger.h"
#include "utils/macro.h"
@@ -652,7 +653,7 @@ int TransportManagerImpl::PerformActionOnClients(
return E_SUCCESS;
}
-void TransportManagerImpl::CreateWebEngineDevice(const std::string& vin_code) {
+void TransportManagerImpl::CreateWebEngineDevice() {
#ifndef WEBSOCKET_SERVER_TRANSPORT_SUPPORT
LOG4CXX_TRACE(logger_, "Web engine support is disabled. Exiting function");
#else
@@ -667,17 +668,27 @@ void TransportManagerImpl::CreateWebEngineDevice(const std::string& vin_code) {
if (transport_adapters_.end() == web_socket_ta) {
LOG4CXX_WARN(logger_,
- "WebSocketTransportAdapter not found."
- "Not able to create WebEngineDevice");
+ "WebSocketServerTransportAdapter not found."
+ "Impossible to create WebEngineDevice");
return;
}
+ std::string unique_device_id =
+ (*web_socket_ta)
+ ->GetStoredDeviceID(webengine_constants::kWebEngineDeviceName);
+
+ if (unique_device_id.empty()) {
+ srand(time(0));
+ const size_t device_id_length = 64u;
+ unique_device_id = utils::gen_hash(device_id_length);
+ }
+
DeviceHandle device_handle = converter_.UidToHandle(
- vin_code, webengine_constants::kWebEngineConnectionType);
+ unique_device_id, webengine_constants::kWebEngineConnectionType);
web_engine_device_info_ =
DeviceInfo(device_handle,
- vin_code,
+ unique_device_id,
webengine_constants::kWebEngineDeviceName,
webengine_constants::kWebEngineConnectionType);
@@ -690,8 +701,7 @@ void TransportManagerImpl::CreateWebEngineDevice(const std::string& vin_code) {
device_list_.push_back(
std::make_pair(*web_socket_ta, web_engine_device_info_));
(*web_socket_ta)->AddDevice(ws_device);
-
-#endif
+#endif // WEBSOCKET_SERVER_TRANSPORT_SUPPORT
}
const DeviceInfo& TransportManagerImpl::GetWebEngineDeviceInfo() const {
@@ -900,9 +910,9 @@ void TransportManagerImpl::TryDeviceSwitch(
IOSBTAdapterFinder());
if (transport_adapters_.end() == ios_bt_adapter) {
- LOG4CXX_WARN(
- logger_,
- "There is no iAP2 Bluetooth adapter found. Switching is not possible.");
+ LOG4CXX_WARN(logger_,
+ "There is no iAP2 Bluetooth adapter found. Switching is not "
+ "possible.");
return;
}
diff --git a/src/components/transport_manager/src/websocket_server/websocket_device.cc b/src/components/transport_manager/src/websocket_server/websocket_device.cc
index 1a5db29d36..502daf349b 100644
--- a/src/components/transport_manager/src/websocket_server/websocket_device.cc
+++ b/src/components/transport_manager/src/websocket_server/websocket_device.cc
@@ -71,7 +71,7 @@ bool WebSocketDevice::IsSameAs(const Device* other) const {
}
ApplicationList WebSocketDevice::GetApplicationList() const {
- return ApplicationList{0};
+ return app_list_;
}
const std::string& WebSocketDevice::GetHost() const {
diff --git a/src/components/transport_manager/src/websocket_server/websocket_server_transport_adapter.cc b/src/components/transport_manager/src/websocket_server/websocket_server_transport_adapter.cc
index 2983d1db9a..d74cf008a3 100644
--- a/src/components/transport_manager/src/websocket_server/websocket_server_transport_adapter.cc
+++ b/src/components/transport_manager/src/websocket_server/websocket_server_transport_adapter.cc
@@ -70,7 +70,8 @@ void WebSocketServerTransportAdapter::TransportConfigUpdated(
TransportAdapterImpl::TransportConfigUpdated(new_config);
}
-TransportConfig WebSocketServerTransportAdapter::GetTransportConfiguration() const {
+TransportConfig WebSocketServerTransportAdapter::GetTransportConfiguration()
+ const {
LOG4CXX_AUTO_TRACE(logger_);
return transport_config_;
}
@@ -82,6 +83,7 @@ DeviceType WebSocketServerTransportAdapter::GetDeviceType() const {
DeviceSptr WebSocketServerTransportAdapter::AddDevice(DeviceSptr device) {
LOG4CXX_AUTO_TRACE(logger_);
webengine_device_ = device;
+ Store();
return TransportAdapterImpl::AddDevice(webengine_device_);
}
@@ -93,5 +95,42 @@ TransportAdapter::Error WebSocketServerTransportAdapter::Init() {
return TransportAdapterImpl::Init();
}
+void WebSocketServerTransportAdapter::Store() const {
+ LOG4CXX_AUTO_TRACE(logger_);
+ if (webengine_device_) {
+ Json::Value& dictionary = last_state().get_dictionary();
+ if (dictionary["TransportManager"].isMember("WebsocketServerAdapter")) {
+ LOG4CXX_DEBUG(
+ logger_, "WebsocketServerAdapter already exists. Storing is skipped");
+ return;
+ }
+
+ Json::Value device_dictionary;
+ device_dictionary["unique_id"] = webengine_device_->unique_device_id();
+
+ Json::Value ws_adapter_dictionary;
+ ws_adapter_dictionary["device"] = device_dictionary;
+ dictionary["TransportManager"]["WebsocketServerAdapter"] =
+ ws_adapter_dictionary;
+ }
+}
+
+bool WebSocketServerTransportAdapter::Restore() {
+ LOG4CXX_AUTO_TRACE(logger_);
+ return true;
+}
+
+std::string WebSocketServerTransportAdapter::GetStoredDeviceID(
+ const std::string& device_name) const {
+ LOG4CXX_AUTO_TRACE(logger_);
+ if (webengine_constants::kWebEngineDeviceName == device_name) {
+ const Json::Value& dictionary = last_state().get_dictionary();
+ const Json::Value ws_adapter_dictionary =
+ dictionary["TransportManager"]["WebsocketServerAdapter"];
+ return ws_adapter_dictionary["device"]["unique_id"].asString();
+ }
+ return std::string();
+}
+
} // namespace transport_adapter
} // namespace transport_manager