summaryrefslogtreecommitdiffstats
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:57:40 +0200
commite316917605f65a59af1435247df883f3f335ad26 (patch)
tree0dc2b391e088fd54f9225bded839d3a58126d7b8 /src/hs-proxy.cpp
parenta7bdb3df4c761d4856cb7eebdc32c63bbf06936f (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