You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2015/11/03 16:09:41 UTC
[15/50] [abbrv] celix git commit: CELIX-280: 280 fixed
deployment_admin shutdown
CELIX-280: 280 fixed deployment_admin shutdown
Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/6c938519
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/6c938519
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/6c938519
Branch: refs/heads/master
Commit: 6c9385199bf2bb026c4919b2def71d2eda4f0ff0
Parents: 9550e63
Author: Bjoern Petri <bp...@apache.org>
Authored: Sun Oct 25 16:00:57 2015 +0100
Committer: Bjoern Petri <bp...@apache.org>
Committed: Sun Oct 25 16:00:57 2015 +0100
----------------------------------------------------------------------
deployment_admin/private/src/deployment_admin.c | 24 ++++++++++++++------
1 file changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/celix/blob/6c938519/deployment_admin/private/src/deployment_admin.c
----------------------------------------------------------------------
diff --git a/deployment_admin/private/src/deployment_admin.c b/deployment_admin/private/src/deployment_admin.c
index 7a78012..7e936e4 100644
--- a/deployment_admin/private/src/deployment_admin.c
+++ b/deployment_admin/private/src/deployment_admin.c
@@ -67,7 +67,7 @@ static void* deploymentAdmin_poll(void *deploymentAdmin);
celix_status_t deploymentAdmin_download(deployment_admin_pt admin, char * url, char **inputFile);
size_t deploymentAdmin_writeData(void *ptr, size_t size, size_t nmemb, FILE *stream);
static celix_status_t deploymentAdmin_deleteTree(char * directory);
-celix_status_t deploymentAdmin_readVersions(deployment_admin_pt admin, array_list_pt *versions);
+celix_status_t deploymentAdmin_readVersions(deployment_admin_pt admin, array_list_pt versions);
celix_status_t deploymentAdmin_stopDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt target);
celix_status_t deploymentAdmin_updateDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt source);
@@ -145,6 +145,10 @@ celix_status_t deploymentAdmin_create(bundle_context_pt context, deployment_admi
celix_status_t deploymentAdmin_destroy(deployment_admin_pt admin) {
celix_status_t status = CELIX_SUCCESS;
+ admin->running = false;
+
+ celixThread_join(admin->poller, NULL);
+
hash_map_iterator_pt iter = hashMapIterator_create(admin->packages);
while (hashMapIterator_hasNext(iter)) {
@@ -214,7 +218,9 @@ static void *deploymentAdmin_poll(void *deploymentAdmin) {
while (admin->running) {
//poll ace
array_list_pt versions = NULL;
- deploymentAdmin_readVersions(admin, &versions);
+ arrayList_create(&versions);
+
+ deploymentAdmin_readVersions(admin, versions);
char *last = arrayList_get(versions, arrayList_size(versions) - 1);
@@ -299,10 +305,12 @@ static void *deploymentAdmin_poll(void *deploymentAdmin) {
}
}
}
+
sleep(5);
+
+ arrayList_destroy(versions);
}
- celixThread_exit(NULL);
return NULL;
}
@@ -329,9 +337,9 @@ size_t deploymentAdmin_parseVersions(void *contents, size_t size, size_t nmemb,
return realsize;
}
-celix_status_t deploymentAdmin_readVersions(deployment_admin_pt admin, array_list_pt *versions) {
+celix_status_t deploymentAdmin_readVersions(deployment_admin_pt admin, array_list_pt versions) {
celix_status_t status = CELIX_SUCCESS;
- arrayList_create(versions);
+
CURL *curl;
CURLcode res;
curl = curl_easy_init();
@@ -353,12 +361,14 @@ celix_status_t deploymentAdmin_readVersions(deployment_admin_pt admin, array_lis
char *last;
char *token = strtok_r(chunk.memory, "\n", &last);
while (token != NULL) {
- arrayList_add(*versions, strdup(token));
+ arrayList_add(versions, strdup(token));
token = strtok_r(NULL, "\n", &last);
}
}
-
+ if (chunk.memory) {
+ free(chunk.memory);
+ }
return status;
}