diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2021-02-15 17:50:30 +0200 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2021-03-03 16:57:40 +0200 |
commit | e316917605f65a59af1435247df883f3f335ad26 (patch) | |
tree | 0dc2b391e088fd54f9225bded839d3a58126d7b8 /src/hs-proxy.cpp | |
parent | a7bdb3df4c761d4856cb7eebdc32c63bbf06936f (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.cpp | 18 |
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 |