* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
+#include <algorithm>
#include "hs-clientmanager.h"
#include "hmi-debug.h"
+static const char _homescreen[] = "homescreen";
+
HS_ClientManager* HS_ClientManager::me = nullptr;
static void cbRemoveClientCtxt(void *data)
int HS_ClientManager::init(void)
{
HMI_NOTICE("homescreen-service","called.");
- // TODO : connect to windowmanger
- // get applist from appfw
-}
-
-/**
- * find HS_Client in client_list
- *
- * #### Parameters
- * - appid: app's id
- *
- * #### Return
- * found HS_Client pointer
- *
- */
-HS_Client* HS_ClientManager::find(std::string appid)
-{
- std::lock_guard<std::mutex> lock(this->mtx);
- HS_Client* p = nullptr;
- auto ip = client_list.find(appid);
- if(ip != client_list.end()) {
- p = client_list[appid];
- }
- return p;
-}
-
-/**
- * get HS_Client
- *
- * #### Parameters
- * - appid: app's id
- *
- * #### Return
- * found HS_Client pointer
- *
- */
-HS_Client* HS_ClientManager::getClient(afb_req_t req, std::string appid)
-{
- std::lock_guard<std::mutex> lock(this->mtx);
- HS_Client* p = nullptr;
- auto ip = client_list.find(appid);
- if(ip != client_list.end()) {
- p = client_list[appid];
- }
- else {
- appid2ctxt[appid] = createClientCtxt(req, appid);
- p = addClient(req, appid);
- }
- return p;
-}
-
-/**
- * get HS_Client pointers set
- *
- * #### Parameters
- * - Nothing
- *
- * #### Return
- * HS_Client pointers set
- *
- */
-std::vector<HS_Client*> HS_ClientManager::getAllClient(void)
-{
- std::lock_guard<std::mutex> lock(this->mtx);
- std::vector<HS_Client*> v;
- for(auto a : client_list)
- v.push_back(a.second);
- return v;
}
/**
delete appid2ctxt[ctxt->id];
appid2ctxt.erase(ctxt->id);
}
+
+/**
+ * handle homescreen request
+ *
+ * #### Parameters
+ * - request : the request
+ * - verb : the verb name
+ * - appid : to which application
+ *
+ * #### Return
+ * 0 : success
+ * others : fail
+ *
+ */
+int HS_ClientManager::handleRequest(afb_req_t request, const char *verb, const char *appid)
+{
+ HMI_NOTICE("homescreen-service","verb=[%s],appid=[%s].", verb, appid);
+ int ret = 0;
+ std::lock_guard<std::mutex> lock(this->mtx);
+ if(appid == nullptr) {
+ for(auto m : client_list) {
+ m.second->handleRequest(request, verb);
+ }
+ }
+ else {
+ auto ip = client_list.find(std::string(appid));
+ if(ip != client_list.end()) {
+ ret = ip->second->handleRequest(request, verb);
+ }
+ else {
+ if(!strcasecmp(verb, "subscribe")) {
+ appid2ctxt[appid] = createClientCtxt(request, appid);
+ HS_Client* client = addClient(request, appid);
+ ret = client->handleRequest(request, "subscribe");
+ }
+ else {
+ HMI_NOTICE("homescreen-service","not exist session");
+ ret = AFB_EVENT_BAD_REQUEST;
+ }
+ }
+ }
+ return ret;
+}
\ No newline at end of file