X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fhs-clientmanager.cpp;h=fe1cc67a575f05bc5d18c92697d6e7f659a77182;hb=b20509dec7cca94ca4e6bd87f6d6f27320983d19;hp=83d6bb304deebd6238c7c0f0d42c15a45f60b69b;hpb=46ac770dd55f51bc5d611ba3e5dd883e5f51edfa;p=apps%2Fagl-service-homescreen.git diff --git a/src/hs-clientmanager.cpp b/src/hs-clientmanager.cpp index 83d6bb3..fe1cc67 100644 --- a/src/hs-clientmanager.cpp +++ b/src/hs-clientmanager.cpp @@ -17,8 +17,11 @@ #include #include #include "hs-clientmanager.h" +#include "hs-apprecover.h" static const char _homescreen[] = "homescreen"; +static const char _area[] = "area"; +static const char _parameter[] = "parameter"; HS_ClientManager* HS_ClientManager::me = nullptr; @@ -171,13 +174,15 @@ int HS_ClientManager::handleRequest(afb_req_t request, const char *verb, const c { AFB_INFO("verb=[%s],appid=[%s].", verb, appid); int ret = 0; - std::lock_guard lock(this->mtx); + bool isRegisterApp = false; if(appid == nullptr) { + std::lock_guard lock(this->mtx); for(auto m : client_list) { m.second->handleRequest(request, verb); } } else { + std::lock_guard lock(this->mtx); auto ip = client_list.find(std::string(appid)); if(ip != client_list.end()) { ret = ip->second->handleRequest(request, verb); @@ -187,7 +192,7 @@ int HS_ClientManager::handleRequest(afb_req_t request, const char *verb, const c appid2ctxt[appid] = createClientCtxt(request, appid); HS_Client* client = addClient(request, appid); ret = client->handleRequest(request, "subscribe"); - registerApplication(appid); + isRegisterApp = true; } else { AFB_NOTICE("not exist session"); @@ -195,6 +200,9 @@ int HS_ClientManager::handleRequest(afb_req_t request, const char *verb, const c } } } + if(isRegisterApp) { + checkRegisterApp(request->api, std::string(appid)); + } return ret; } @@ -213,6 +221,7 @@ int HS_ClientManager::handleRequest(afb_req_t request, const char *verb, const c */ int HS_ClientManager::pushEvent(const char *event, struct json_object *param, std::string appid) { + AFB_INFO("event=[%s], appid=[%s].", event, appid.c_str()); if(event == nullptr) { AFB_WARNING("event name is null."); return -1; @@ -235,16 +244,29 @@ int HS_ClientManager::pushEvent(const char *event, struct json_object *param, st } /** - * register recovered application + * check register application * * #### Parameters - * - appid : application id + * - api : the api + * - appid : register application's id * * #### Return * None * */ -void HS_ClientManager::registerApplication(std::string appid) +void HS_ClientManager::checkRegisterApp(afb_api_t api, const std::string &appid) { + if(HS_AppRecover::instance()->registerRecoveredApp(api, appid)) { + AFB_INFO("register recover application %s.", appid.c_str()); + return; + } + if(startup_appid == appid) { + startup_appid.clear(); +// pushEvent("showWindow", nullptr, appid); + struct json_object* json_param = json_object_new_object(); + json_object_object_add(json_param, _area, json_object_new_string(startup_area.c_str())); + pushEvent("showWindow", json_param, appid); + startup_area.clear(); + } } \ No newline at end of file