diff options
author | Andriy Byzhynar <abyzhynar@luxoft.com> | 2020-02-25 19:17:39 +0200 |
---|---|---|
committer | Andriy Byzhynar (GitHub) <AByzhynar@luxoft.com> | 2020-02-25 20:39:14 +0200 |
commit | 788437679eedc5b6d5240bb09cd0a89d6a60c47a (patch) | |
tree | 3cfed3ff98176d476d8e6196c2ce390fa79f56cb | |
parent | 51f5bbe9bdd4555e0359a97c5ba59055f07009af (diff) | |
download | sdl_core-feature/new_webengine_device_id_generation_V2.tar.gz |
Append to devid genfeature/new_webengine_device_id_generation_V2
7 files changed, 36 insertions, 49 deletions
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 f91f8ac0cd..d4ce0a39c8 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,9 +112,6 @@ 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 a6ee90d8ff..e9494b4ced 100644 --- a/src/components/include/transport_manager/transport_adapter/transport_adapter.h +++ b/src/components/include/transport_manager/transport_adapter/transport_adapter.h @@ -236,15 +236,6 @@ 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/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 7281f06394..99077b69f4 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,14 +523,6 @@ 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/websocket_server/websocket_server_transport_adapter.h b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_server_transport_adapter.h index ce2844fa45..b519707f23 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 @@ -98,7 +98,12 @@ class WebSocketServerTransportAdapter : public TransportAdapterImpl { */ bool Restore() OVERRIDE; - std::string GetStoredDeviceID(const std::string& device_name) const OVERRIDE; + /** + * @brief Get stored device ID + * @return stored unique device id, or empty string if no stored device id + * present in last saved state + */ + std::string GetStoredDeviceID() const; protected: /** @@ -121,6 +126,7 @@ class WebSocketServerTransportAdapter : public TransportAdapterImpl { */ TransportConfig transport_config_; DeviceSptr webengine_device_; + std::string webengine_device_id_; }; } // namespace transport_adapter 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 1fa5dd5f29..56d809a05f 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,13 +1160,6 @@ 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_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc index 1dde5f476a..612b9f1f39 100644 --- a/src/components/transport_manager/src/transport_manager_impl.cc +++ b/src/components/transport_manager/src/transport_manager_impl.cc @@ -42,7 +42,6 @@ #include <set> #include <sstream> -#include "utils/gen_hash.h" #include "utils/logger.h" #include "utils/macro.h" @@ -57,6 +56,7 @@ #include "transport_manager/transport_manager_listener_empty.h" #ifdef WEBSOCKET_SERVER_TRANSPORT_SUPPORT #include "transport_manager/websocket_server/websocket_device.h" +#include "transport_manager/websocket_server/websocket_server_transport_adapter.h" #endif #include "utils/timer_task_impl.h" @@ -658,7 +658,7 @@ void TransportManagerImpl::CreateWebEngineDevice() { LOG4CXX_TRACE(logger_, "Web engine support is disabled. Exiting function"); #else LOG4CXX_AUTO_TRACE(logger_); - auto web_socket_ta = std::find_if( + auto web_socket_ta_iterator = std::find_if( transport_adapters_.begin(), transport_adapters_.end(), [](const TransportAdapter* ta) { @@ -666,23 +666,27 @@ void TransportManagerImpl::CreateWebEngineDevice() { ta->GetDeviceType(); }); - if (transport_adapters_.end() == web_socket_ta) { + if (transport_adapters_.end() == web_socket_ta_iterator) { LOG4CXX_WARN(logger_, "WebSocketServerTransportAdapter not found." "Impossible to create WebEngineDevice"); return; } - std::string unique_device_id = - (*web_socket_ta) - ->GetStoredDeviceID(webengine_constants::kWebEngineDeviceName); + auto web_socket_ta = + dynamic_cast<transport_adapter::WebSocketServerTransportAdapter*>( + *web_socket_ta_iterator); - if (unique_device_id.empty()) { - srand(time(0)); - const size_t device_id_length = 64u; - unique_device_id = utils::gen_hash(device_id_length); + if (!web_socket_ta) { + LOG4CXX_ERROR(logger_, + "Unable to cast from Transport Adapter to " + "WebSocketServerTransportAdapter." + "Impossible to create WebEngineDevice"); + return; } + std::string unique_device_id = web_socket_ta->GetStoredDeviceID(); + DeviceHandle device_handle = converter_.UidToHandle( unique_device_id, webengine_constants::kWebEngineConnectionType); @@ -699,8 +703,8 @@ void TransportManagerImpl::CreateWebEngineDevice() { RaiseEvent(&TransportManagerListener::OnDeviceAdded, web_engine_device_info_); device_list_.push_back( - std::make_pair(*web_socket_ta, web_engine_device_info_)); - (*web_socket_ta)->AddDevice(ws_device); + std::make_pair(web_socket_ta, web_engine_device_info_)); + web_socket_ta->AddDevice(ws_device); #endif // WEBSOCKET_SERVER_TRANSPORT_SUPPORT } 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 d74cf008a3..fa26a07d46 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 @@ -41,6 +41,7 @@ #include <sstream> #include "transport_manager/websocket_server/websocket_listener.h" +#include "utils/gen_hash.h" #include "utils/logger.h" #include "utils/threads/thread_delegate.h" @@ -117,19 +118,22 @@ void WebSocketServerTransportAdapter::Store() const { bool WebSocketServerTransportAdapter::Restore() { LOG4CXX_AUTO_TRACE(logger_); + const Json::Value& dictionary = last_state().get_dictionary(); + const Json::Value ws_adapter_dictionary = + dictionary["TransportManager"]["WebsocketServerAdapter"]; + webengine_device_id_ = + ws_adapter_dictionary["device"]["unique_id"].asString(); + if (webengine_device_id_.empty()) { + srand(time(0)); + const size_t device_id_length = 64u; + webengine_device_id_ = utils::gen_hash(device_id_length); + } return true; } -std::string WebSocketServerTransportAdapter::GetStoredDeviceID( - const std::string& device_name) const { +std::string WebSocketServerTransportAdapter::GetStoredDeviceID() 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(); + return webengine_device_id_; } } // namespace transport_adapter |