summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndriy Byzhynar <abyzhynar@luxoft.com>2020-02-25 19:17:39 +0200
committerAndriy Byzhynar (GitHub) <AByzhynar@luxoft.com>2020-02-25 20:39:14 +0200
commit788437679eedc5b6d5240bb09cd0a89d6a60c47a (patch)
tree3cfed3ff98176d476d8e6196c2ce390fa79f56cb
parent51f5bbe9bdd4555e0359a97c5ba59055f07009af (diff)
downloadsdl_core-feature/new_webengine_device_id_generation_V2.tar.gz
-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/transport_manager/include/transport_manager/transport_adapter/transport_adapter_impl.h8
-rw-r--r--src/components/transport_manager/include/transport_manager/websocket_server/websocket_server_transport_adapter.h8
-rw-r--r--src/components/transport_manager/src/transport_adapter/transport_adapter_impl.cc7
-rw-r--r--src/components/transport_manager/src/transport_manager_impl.cc28
-rw-r--r--src/components/transport_manager/src/websocket_server/websocket_server_transport_adapter.cc22
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