summaryrefslogtreecommitdiff
path: root/src/service.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/service.c')
-rwxr-xr-xsrc/service.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/service.c b/src/service.c
index e01f86a..7c88313 100755
--- a/src/service.c
+++ b/src/service.c
@@ -60,6 +60,7 @@ struct service_s {
int id;
service_type_e type;
bundle *data;
+ int launch_pid;
};
typedef struct service_request_context_s {
@@ -265,6 +266,7 @@ int service_create_request(bundle *data, service_h *service)
}
service_request->id = service_new_id();
+ service_request->launch_pid = -1;
*service = service_request;
@@ -754,6 +756,26 @@ int service_send_launch_request(service_h service, service_reply_cb callback, vo
}
}
+ service->launch_pid = launch_pid;
+
+ return SERVICE_ERROR_NONE;
+}
+
+
+int service_send_terminate_request(service_h service)
+{
+ if (service_valiate_service(service))
+ {
+ return service_error(SERVICE_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+ }
+
+ if(service->type != SERVICE_TYPE_REQUEST || service->launch_pid < 0)
+ {
+ return service_error(SERVICE_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL);
+ }
+
+ appsvc_subapp_terminate_request_pid(service->launch_pid);
+
return SERVICE_ERROR_NONE;
}