summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2018-11-13 16:40:23 -0500
committerJackLivio <jack@livio.io>2018-11-13 16:40:23 -0500
commit691d5e4c34206daefe685f836a7ac90e2a211379 (patch)
tree937c1f2665e26596e02c93e1362197f948965ea2 /src
parent1c6f3ccd47244625a9bb968f2fa515bc50a89f24 (diff)
downloadsdl_core-691d5e4c34206daefe685f836a7ac90e2a211379.tar.gz
Show pending cloud apps in update app list
Diffstat (limited to 'src')
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h4
-rw-r--r--src/components/application_manager/src/application_manager_impl.cc52
-rw-r--r--src/components/connection_handler/src/connection_handler_impl.cc17
-rw-r--r--src/components/include/connection_handler/connection_handler_observer.h2
-rw-r--r--src/components/transport_manager/src/cloud/cloud_device.cc2
-rw-r--r--src/components/transport_manager/src/cloud/cloud_websocket_transport_adapter.cc9
6 files changed, 67 insertions, 19 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 23d7fc4892..6f6482e717 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
@@ -362,6 +362,8 @@ class ApplicationManagerImpl
void CollectCloudAppInformation();
+ void CreatePendingApplication(const transport_manager::ConnectionUID connection_id, const transport_manager::DeviceInfo& device_info, connection_handler::DeviceHandle device_id);
+
/*
* @brief Returns unique correlation ID for HMI request
*
@@ -1451,6 +1453,8 @@ class ApplicationManagerImpl
DeviceMap secondary_transport_devices_cache_;
+ std::map<std::string, std::string> pending_device_map_;
+
#ifdef TELEMETRY_MONITOR
AMTelemetryObserver* metric_observer_;
#endif // TELEMETRY_MONITOR
diff --git a/src/components/application_manager/src/application_manager_impl.cc b/src/components/application_manager/src/application_manager_impl.cc
index 061f3885a9..76067f1dc7 100644
--- a/src/components/application_manager/src/application_manager_impl.cc
+++ b/src/components/application_manager/src/application_manager_impl.cc
@@ -799,18 +799,50 @@ void ApplicationManagerImpl::CollectCloudAppInformation() {
GetPolicyHandler().GetCloudAppParameters(*it, endpoint, certificate, auth_token,
cloud_transport_type, hybrid_app_preference);
+ pending_device_map_.insert(std::pair<std::string, std::string>(endpoint, *it));
+
connection_handler().AddCloudAppDevice(*it, endpoint, cloud_transport_type);
- std::string device_mac;
- std::string connection_type;
- /*ApplicationSharedPtr application(
- new ApplicationImpl(app_id,
- policy_app_id,
- device_mac,
- device_id,
- app_name,
- GetPolicyHandler().GetStatisticManager(),
- *this)); */
+
+
+ }
+}
+
+void ApplicationManagerImpl::CreatePendingApplication(const transport_manager::ConnectionUID connection_id, const transport_manager::DeviceInfo& device_info, connection_handler::DeviceHandle device_id) {
+ LOG4CXX_AUTO_TRACE(logger_);
+
+ std::string policy_app_id = "";
+ std::string name = device_info.name();
+ auto it = pending_device_map_.find(name);
+ if (it == pending_device_map_.end()) {
+ return;
+ }
+
+ policy_app_id = it->second;
+ ApplicationSharedPtr application(
+ new ApplicationImpl(0,
+ policy_app_id,
+ device_info.mac_address(),
+ device_id,
+ custom_str::CustomString("CloudApp"), //todo replace this with policy nick name
+ GetPolicyHandler().GetStatisticManager(),
+ *this));
+
+ if(!application) {
+ LOG4CXX_INFO(logger_, "Could not streate application");
+ return;
}
+
+ application->set_hmi_application_id(GenerateNewHMIAppID());
+
+ sync_primitives::AutoLock lock(apps_to_register_list_lock_ptr_);
+ LOG4CXX_DEBUG(
+ logger_, "apps_to_register_ size before: " << apps_to_register_.size());
+ apps_to_register_.insert(application);
+ LOG4CXX_DEBUG(logger_,
+ "apps_to_register_ size after: " << apps_to_register_.size());
+
+ SendUpdateAppList();
+
}
uint32_t ApplicationManagerImpl::GetNextHMICorrelationID() {
diff --git a/src/components/connection_handler/src/connection_handler_impl.cc b/src/components/connection_handler/src/connection_handler_impl.cc
index d1c62e36bb..59fef50b0f 100644
--- a/src/components/connection_handler/src/connection_handler_impl.cc
+++ b/src/components/connection_handler/src/connection_handler_impl.cc
@@ -263,13 +263,22 @@ void ConnectionHandlerImpl::OnConnectionPending(
//todo maybe create a seperate "pending_connection_list"
sync_primitives::AutoWriteLock lock(connection_list_lock_);
if (connection_list_.find(connection_id) == connection_list_.end()) {
- connection_list_.insert(ConnectionList::value_type(
- connection_id,
- new Connection(connection_id,
+
+ Connection* connection = new Connection(connection_id,
device_info.device_handle(),
this,
- get_settings().heart_beat_timeout())));
+ get_settings().heart_beat_timeout());
+
+ connection_list_.insert(ConnectionList::value_type(
+ connection_id, connection));
+
+ connection_handler::DeviceHandle device_id = connection->connection_device_handle();
+ //uint32_t app_id = KeyFromPair(connection_id, session_id);
+
+ connection_handler_observer_->CreatePendingApplication(connection_id, device_info, device_id);
}
+
+
}
void ConnectionHandlerImpl::OnConnectionEstablished(
diff --git a/src/components/include/connection_handler/connection_handler_observer.h b/src/components/include/connection_handler/connection_handler_observer.h
index 154a2a8e34..9716f2c890 100644
--- a/src/components/include/connection_handler/connection_handler_observer.h
+++ b/src/components/include/connection_handler/connection_handler_observer.h
@@ -161,6 +161,8 @@ class ConnectionHandlerObserver {
*/
virtual void OnSecondaryTransportEndedCallback(const int32_t session_key) = 0;
+ virtual void CreatePendingApplication(const transport_manager::ConnectionUID connection_id, const transport_manager::DeviceInfo& device_info, connection_handler::DeviceHandle device_id) = 0;
+
protected:
/**
* \brief Destructor
diff --git a/src/components/transport_manager/src/cloud/cloud_device.cc b/src/components/transport_manager/src/cloud/cloud_device.cc
index ab7f8db69a..df17753ccc 100644
--- a/src/components/transport_manager/src/cloud/cloud_device.cc
+++ b/src/components/transport_manager/src/cloud/cloud_device.cc
@@ -42,7 +42,7 @@ CREATE_LOGGERPTR_GLOBAL(logger_, "TransportManager")
CloudDevice::CloudDevice(std::string& host,
std::string& port,
std::string& name)
- : Device(name, std::string(name+host+port)) {}
+ : Device(name, std::string(name)) {}
bool CloudDevice::IsSameAs(const Device* other) const {
diff --git a/src/components/transport_manager/src/cloud/cloud_websocket_transport_adapter.cc b/src/components/transport_manager/src/cloud/cloud_websocket_transport_adapter.cc
index 746eafbcc3..49a0020423 100644
--- a/src/components/transport_manager/src/cloud/cloud_websocket_transport_adapter.cc
+++ b/src/components/transport_manager/src/cloud/cloud_websocket_transport_adapter.cc
@@ -83,13 +83,14 @@ void CloudWebsocketTransportAdapter::CreateDevice(const std::string& uid) {
LOG4CXX_DEBUG(logger_, "Valid Endpoint: " << uid);
std::size_t pos = uid.find(":");
pos = uid.find(":", pos+1);
- std::size_t size = uid.length();
- std::string host = uid.substr(0, size - pos);
- std::string port = uid.substr(pos);
+ //std::size_t size = uid.length();
+ std::string host = uid.substr(0, pos);
+ std::string port = uid.substr(pos+1);
std::string device_id = uid;
LOG4CXX_DEBUG(logger_, "Creating Cloud Device For Host: " << host << " and Port: " << port);
+ //todo get nickname from policies to name device
auto cloud_device = std::make_shared<CloudDevice>(host, port, device_id);
DeviceVector devices{cloud_device};
@@ -102,7 +103,7 @@ void CloudWebsocketTransportAdapter::CreateDevice(const std::string& uid) {
uid, 0, this);
ConnectionCreated(connection, uid, 0);
- ConnectDone(uid, 0);
+ ConnectPending(uid, 0);
return;
}