1 //******************************************************************
3 // Copyright 2015 Samsung Electronics All Rights Reserved.
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
24 * This file contains the resource container APIs provided to the developers.
27 #ifndef RCSRESOURCECONTAINER_H_
28 #define RCSRESOURCECONTAINER_H_
35 #include "RCSBundleInfo.h"
43 * @class RCSResourceContainer
44 * @brief This class provides APIs for managing the container and bundles in the container.
47 class RCSResourceContainer
51 * API for starting the Container
53 * @details This API start the container with the provided Configuration file.
55 * @param configFile configuration File that contains the Bundle/Bundles information.
58 virtual void startContainer(const std::string &configFile) = 0;
60 * API for stopping the Container
62 virtual void stopContainer() = 0;
66 * API for getting the list of all bundles in the container
68 * @return List of BundleInfo pointer each associated with a bundle
71 virtual std::list<RCSBundleInfo *> listBundles() = 0;
73 * API for starting the bundle.
75 * @param bundleId Id of the Bundle
78 virtual void startBundle(const std::string &bundleId) = 0;
80 * API for Stopping the bundle
82 * @param bundleId Id of the Bundle
85 virtual void stopBundle(const std::string &bundleId) = 0;
87 // dynamic configuration
89 * API for adding the bundle to the Container
91 * @param bundleId Id of the Bundle
92 * @param bundleUri Uri of the bundle
93 * @param bundlePath Path of the bundle
94 * @param activator Activation prefix for .so bundles, or activator class name for .jar bundles
95 * @param params key-value pairs in string form for other Bundle parameters
98 virtual void addBundle(const std::string &bundleId, const std::string &bundleUri,
99 const std::string &bundlePath, const std::string &activator,
100 std::map<std::string, std::string> params) = 0;
102 * API for removing the bundle from the container
104 * @param bundleId Id of the Bundle
107 virtual void removeBundle(const std::string &bundleId) = 0;
110 * API for adding the Resource configuration information to the bundle
112 * @param bundleId Id of the Bundle
113 * @param resourceUri URI of the resource
114 * @param params key-value pairs in string form for other Bundle parameters
117 virtual void addResourceConfig(const std::string &bundleId, const std::string &esourceUri,
118 std::map<std::string, std::string> params) = 0;
120 * API for removing the Resource configuration information from the bundle
122 * @param bundleId Id of the Bundle
123 * @param resourceUri URI of the resource
126 virtual void removeResourceConfig(const std::string &bundleId, const std::string &resourceUri) = 0;
129 * API for getting the list of Bundle Resources
131 * @param bundleId Id of the Bundle
134 virtual std::list<std::string> listBundleResources(const std::string &bundleId) = 0;
137 * API for getting the Instance of ResourceContainer class
139 * @return Instance of the "RCSResourceContainer" class
142 static RCSResourceContainer *getInstance();
145 RCSResourceContainer();
146 virtual ~RCSResourceContainer();
148 RCSResourceContainer(const RCSResourceContainer &) = delete;
149 RCSResourceContainer(RCSResourceContainer &&) = delete;
150 RCSResourceContainer &operator=(const RCSResourceContainer &) const = delete;
151 RCSResourceContainer &operator=(RCSResourceContainer &&) const = delete;
156 #endif /* RCSRESOURCECONTAINER_H_ */