aboutsummaryrefslogtreecommitdiffstats
path: root/src/hs-proxy.cpp
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2021-02-15 17:50:30 +0200
committerMarius Vlad <marius.vlad@collabora.com>2021-03-03 16:50:07 +0200
commit31eeddf43beed3dd5f6b85eb8f8c2f3e46f3e34c (patch)
treeb8f428e39d720187ea06f41fc65c3b31edc2d75e /src/hs-proxy.cpp
parent2101ce76906836e8337eacab5ee8ecff2cbcff9f (diff)
hs-proxy,hs-clientmanager: Handle correctly the shutdown of apps
The fake subscribe mechanism failed to account for the client context, which is bound to the afb_req_t of the client itself, and only dealing with the client list. This effectively means we can't really register (a/an automated) callback function to remove the appid from the client list once the application has been legally terminated/stopped. This adds a check to verify, for the showWindow verb, if the application is still found to be running, and return the appropriate value in case that is not case. This should determine to start the application and fix the issue. Bug-AGL: SPEC-3796 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia828e1ec374bf3bed21c52814721074c01f16691
Diffstat (limited to 'src/hs-proxy.cpp')
-rw-r--r--src/hs-proxy.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/hs-proxy.cpp b/src/hs-proxy.cpp
index 7571dad..f8b796c 100644
--- a/src/hs-proxy.cpp
+++ b/src/hs-proxy.cpp
@@ -56,6 +56,7 @@ static void api_callback(void *closure, struct json_object *object, const char *
/* if we have an error then we couldn't start the application so we remove it */
if (error) {
+ AFB_INFO("asynchronous call, removing client %s", cdata->appid);
clientManager->removeClient(cdata->appid);
}
@@ -122,6 +123,23 @@ int HS_AfmMainProxy::runnables(afb_api_t api, struct json_object **object)
}
/**
+ * get running application list
+ *
+ * #### Parameters
+ * - api : the api serving the request
+ * - object : return the details of appid
+ *
+ * #### Return
+ * 0 : success
+ * 1 : fail
+ *
+ */
+int HS_AfmMainProxy::ps(afb_api_t api, struct json_object **object)
+{
+ return api_call_sync(api, _afm_main, "runners", nullptr, object);
+}
+
+/**
* get details of application
*
* #### Parameters