summaryrefslogtreecommitdiff
path: root/src/components/application_manager/include/application_manager/app_service_manager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/application_manager/include/application_manager/app_service_manager.h')
-rw-r--r--src/components/application_manager/include/application_manager/app_service_manager.h179
1 files changed, 124 insertions, 55 deletions
diff --git a/src/components/application_manager/include/application_manager/app_service_manager.h b/src/components/application_manager/include/application_manager/app_service_manager.h
index 4c0877a456..9690d7cd46 100644
--- a/src/components/application_manager/include/application_manager/app_service_manager.h
+++ b/src/components/application_manager/include/application_manager/app_service_manager.h
@@ -34,10 +34,9 @@
#define SRC_COMPONENTS_APPLICATION_MANAGER_INCLUDE_APPLICATION_MANAGER_APP_SERVICE_MANAGER_H_
#include "application_manager/application.h"
+#include "application_manager/rpc_passing_handler.h"
#include "interfaces/MOBILE_API.h"
#include "smart_objects/smart_object.h"
-#include "application_manager/application.h"
-#include "application_manager/rpc_passing_handler.h"
namespace resumption {
class LastState;
@@ -52,6 +51,7 @@ struct AppService {
smart_objects::SmartObject record;
};
+class RPCPassingHandler;
class ApplicationManager;
/**
* @brief The AppServiceManager is TODO.
@@ -70,95 +70,153 @@ class AppServiceManager {
/**
* @brief Class destructor
*/
- ~AppServiceManager();
+ virtual ~AppServiceManager();
/**
- * @brief TODO
- * @param manifest
+ * @brief Publish an app service. This service will be activated if it is the
+ * default service for its type, or if it is the first service to register of
+ * its type.
+ * @param manifest - The app service manifest of the service to be published
+ * @param mobile_service - True, if the service is being published by a mobile
+ * app. False, if published by the embedded system.
+ * @param connection_key - If mobile_service is true, the connection key of
+ * the app publishing this service.
+ * @return The app service record of the published app service
*/
- smart_objects::SmartObject PublishAppService(
+ virtual smart_objects::SmartObject PublishAppService(
const smart_objects::SmartObject& manifest,
const bool mobile_service,
- const uint32_t connection_key);
+ const uint32_t connection_key = 0u);
/**
- * @brief TODO
- * @param service_id
+ * @brief Unpublish an existing app service
+ * @param service_id - The ID of the app service to be deleted.
+ * @return True on success, false otherwise
*/
- bool UnpublishAppService(const std::string service_id);
-
- void OnAppActivated(ApplicationConstSharedPtr app);
+ virtual bool UnpublishAppService(const std::string service_id);
/**
- * @brief TODO
- * @param connection_key
+ * @brief Callback for when an application is activated. Will activate all
+ * services which were published by this app.
+ * @param app - The application that was activated.
*/
- void UnpublishServices(const uint32_t connection_key);
+ virtual void OnAppActivated(ApplicationConstSharedPtr app);
/**
- * @brief TODO
- * @param service_id
+ * @brief Unpublish any published services for a given mobile application
+ * @param connection_key - The connection key of the application from which
+ * all published services should be deleted.
*/
- bool SetDefaultService(const std::string service_id);
+ virtual void UnpublishServices(const uint32_t connection_key);
/**
- * @brief TODO
- * @param service_id
+ * @brief Sets a service to the default service for its type
+ * @param service_id - The ID of the service to become the default
+ * @return True on success, false otherwise
*/
- bool RemoveDefaultService(const std::string service_id);
+ virtual bool SetDefaultService(const std::string service_id);
/**
- * @brief TODO
- * @param service_id
+ * @brief Removes a service from the list of default services.
+ * @param service_id - The ID of the existing default service.
+ * @return True on success, false otherwise
*/
- bool ActivateAppService(const std::string service_id);
+ virtual bool RemoveDefaultService(const std::string service_id);
/**
- * @brief TODO
- * @param service_id
+ * @brief Activate an existing service
+ * @param service_id - The ID of the service to be activated.
+ * @return True if the service is active, false otherwise
*/
- bool DeactivateAppService(const std::string service_id);
+ virtual bool ActivateAppService(const std::string service_id);
/**
- * @brief TODO
- * @param manifest
+ * @brief Deactivate an existing active service
+ * @param service_id - The ID of the service to be deactivated.
+ * @return True if the service was deactivated, false otherwise
*/
- std::vector<smart_objects::SmartObject> GetAllServices();
- std::vector<std::pair<std::string, AppService> > GetActiveServices();
+ virtual bool DeactivateAppService(const std::string service_id);
- void GetProviderByType(const std::string& service_type,
- bool mobile_consumer,
- ApplicationSharedPtr& app,
- bool& hmi_service);
+ /**
+ * @brief Get a list of all published service records.
+ * @return A list of all all published service records.
+ */
+ virtual std::vector<smart_objects::SmartObject> GetAllServiceRecords();
- void GetProviderByID(const std::string& service_id,
- bool mobile_consumer,
- ApplicationSharedPtr& app,
- bool& hmi_service);
+ /**
+ * @brief Get a list of all active app services.
+ * @return A list of all all active app services.
+ */
+ virtual std::vector<AppService> GetActiveServices();
- AppService* ActiveServiceByType(std::string service_type);
+ /**
+ * @brief Retrieve the active service provider for a given service type
+ * @param service_type - The service type of the provider to be retrieved
+ * @param mobile_consumer - True, if the consumer trying to communicate with
+ * the provider is a mobile application
+ * @param app - Output parameter that will be filled with the application
+ * providing the requested service on success, unchanged on failure
+ * @param hmi_service - Output parameter set to true if the service
+ * provider is the HMI, unchanged on failure
+ */
+ virtual void GetProviderByType(const std::string& service_type,
+ const bool mobile_consumer,
+ ApplicationSharedPtr& app,
+ bool& hmi_service);
- AppService* EmbeddedServiceForType(std::string service_type);
+ /**
+ * @brief Retrieve the service provider with a given service ID
+ * @param service_type - The service type of the provider to be retrieved
+ * @param mobile_consumer - True, if the consumer trying to communicate with
+ * the provider is a mobile application
+ * @param app - Output parameter that will be filled with the application
+ * providing the requested service on success, unchanged on failure
+ * @param hmi_service - Output parameter set to true if the service
+ * provider is the HMI, unchanged on failure
+ */
+ virtual void GetProviderByID(const std::string& service_id,
+ const bool mobile_consumer,
+ ApplicationSharedPtr& app,
+ bool& hmi_service);
- AppService* FindServiceByID(std::string service_id);
+ /**
+ * @brief Get the active service for a given service type.
+ * @param service_type - The service type
+ * @return A pointer to the active service for the given service type on
+ * success, NULL on failure
+ */
+ virtual AppService* ActiveServiceForType(const std::string service_type);
- std::string DefaultServiceByType(std::string service_type);
+ /**
+ * @brief Get the embedded service for a given service type.
+ * @param service_type - The service type
+ * @return A pointer to the embedded service for the given service type on
+ * success, NULL on failure
+ */
+ virtual AppService* EmbeddedServiceForType(const std::string service_type);
/**
- * @brief TODO
- * @param service_id
- * @param service_published
+ * @brief Get the service with a given service ID.
+ * @param service_type - The service ID
+ * @return A pointer to requested service on success, NULL on failure
*/
- void SetServicePublished(const std::string service_id,
- bool service_published);
+ virtual AppService* FindServiceByID(const std::string service_id);
/**
- * @brief TODO
- * @param out_params
+ * @brief Update a navigation system capability struct with the capabilities
+ * of the active navigation service.
+ * @param out_params - The struct to be modified
+ * @return True on success, false otherwise (if there was no active NAVIGATION
+ * service)
*/
- bool UpdateNavigationCapabilities(smart_objects::SmartObject& out_params);
+ virtual bool UpdateNavigationCapabilities(
+ smart_objects::SmartObject& out_params);
- RPCPassingHandler& GetRPCPassingHandler();
+ /**
+ * @brief Get the RPCPassingHandler tied to this object
+ * @return The RPCPassingHandler tied to this object
+ */
+ virtual RPCPassingHandler& GetRPCPassingHandler();
private:
ApplicationManager& app_manager_;
@@ -168,16 +226,27 @@ class AppServiceManager {
std::map<std::string, AppService> published_services_;
RPCPassingHandler rpc_passing_handler_;
+ void SetServicePublished(const std::string service_id,
+ bool service_published);
void AppServiceUpdated(
const smart_objects::SmartObject& service_record,
const mobile_apis::ServiceUpdateReason::eType update_reason,
smart_objects::SmartObject& msg_params);
void GetProviderFromService(const AppService& service,
- bool mobile_consumer,
+ const bool mobile_consumer,
ApplicationSharedPtr& app,
bool& hmi_service);
- AppService* FindServiceByPolicyAppID(std::string policy_app_id,
- std::string type);
+
+ /**
+ * @brief Get the policy app ID of the default service provider for a given
+ * service type.
+ * @param service_type - The service type
+ * @return The policy app ID of the default service provider for the given
+ * service type on success, "" on failure
+ */
+ std::string DefaultServiceByType(const std::string service_type);
+ AppService* FindServiceByPolicyAppID(const std::string policy_app_id,
+ const std::string type);
std::string GetPolicyAppID(AppService service);
};