diff options
author | JackLivio <jack@livio.io> | 2018-11-13 16:40:23 -0500 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2018-11-13 16:40:23 -0500 |
commit | 691d5e4c34206daefe685f836a7ac90e2a211379 (patch) | |
tree | 937c1f2665e26596e02c93e1362197f948965ea2 /src | |
parent | 1c6f3ccd47244625a9bb968f2fa515bc50a89f24 (diff) | |
download | sdl_core-691d5e4c34206daefe685f836a7ac90e2a211379.tar.gz |
Show pending cloud apps in update app list
Diffstat (limited to 'src')
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; } |