diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-05-09 11:56:15 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-05-09 11:56:15 (GMT) |
commit | bb242c2cda6a590fef652e62688c10e2d52a7ff0 (patch) | |
tree | 8d59ef7d6edc7887806906ac65938510c52c9a5b /src/analysis/project.c | |
parent | 286878b36b5cf7a3f44251f62c94a57f0f29d3cf (diff) |
Simplified the content loading handling.
Diffstat (limited to 'src/analysis/project.c')
-rw-r--r-- | src/analysis/project.c | 93 |
1 files changed, 29 insertions, 64 deletions
diff --git a/src/analysis/project.c b/src/analysis/project.c index b4108ff..d2228e2 100644 --- a/src/analysis/project.c +++ b/src/analysis/project.c @@ -46,11 +46,7 @@ /* Suivi du chargement de contenus binaires */ typedef struct _loading_params { - union - { - const gid_t *exp_gid; /* Identifiant d'exploration */ - const gid_t **exp_gids; /* Identifiants d'exploration */ - }; + const wgroup_id_t **exp_wids; /* Identifiants d'exploration */ size_t exp_count; /* Quantitié d'identifiants */ size_t resolved; /* Compteur de résolutions */ @@ -115,16 +111,16 @@ static loading_params *g_study_project_prepare_content_loading(GStudyProject *); static void g_study_project_destroy_content_loading(GStudyProject *, loading_params *); /* Retrouve les infos de chargements liées à une exploration. */ -static loading_params *g_study_project_find_exploration(GStudyProject *, gid_t, const gid_t **); +static loading_params *g_study_project_find_exploration(GStudyProject *, wgroup_id_t, const wgroup_id_t **); /* Assure l'intégration de contenus listés dans du XML. */ static void g_study_project_recover_binary_contents(GStudyProject *, xmlDoc *, xmlXPathContext *); /* Note la fin d'une phase d'exploration de contenu. */ -static void on_new_content_explored(GContentExplorer *, gid_t, GStudyProject *); +static void on_new_content_explored(GContentExplorer *, wgroup_id_t, GStudyProject *); /* Note la fin d'une phase de resolution de contenu. */ -static void on_new_content_resolved(GContentResolver *, gid_t, GStudyProject *); +static void on_new_content_resolved(GContentResolver *, wgroup_id_t, GStudyProject *); /* Réceptionne la recette d'une analyse de contenu. */ static void on_loaded_content_analyzed(GLoadedContent *, gboolean, GStudyProject *); @@ -568,23 +564,13 @@ static void g_study_project_destroy_content_loading(GStudyProject *project, load explorer = get_current_content_explorer(); resolver = get_current_content_resolver(); - if (params->exp_count == 1) + for (i = 0; i < params->exp_count; i++) { - g_content_resolver_delete_group(resolver, *params->exp_gid); - g_content_explorer_delete_group(explorer, *params->exp_gid); + g_content_resolver_delete_group(resolver, *params->exp_wids[i]); + g_content_explorer_delete_group(explorer, *params->exp_wids[i]); } - else - { - for (i = 0; i < params->exp_count; i++) - { - g_content_resolver_delete_group(resolver, *params->exp_gids[i]); - g_content_explorer_delete_group(explorer, *params->exp_gids[i]); - } - - free(params->exp_gids); - - } + free(params->exp_wids); g_object_unref(G_OBJECT(explorer)); g_object_unref(G_OBJECT(resolver)); @@ -611,7 +597,7 @@ static void g_study_project_destroy_content_loading(GStudyProject *project, load /****************************************************************************** * * * Paramètres : project = projet dont le contenu est à consulter. * -* gid = identifiant du groupe d'exploration recherché. * +* wid = identifiant du groupe d'exploration recherché. * * ptr = pointeur vers la valeur d'origine externe. * * * * Description : Retrouve les infos de chargements liées à une exploration. * @@ -622,10 +608,10 @@ static void g_study_project_destroy_content_loading(GStudyProject *project, load * * ******************************************************************************/ -static loading_params *g_study_project_find_exploration(GStudyProject *project, gid_t gid, const gid_t **ptr) +static loading_params *g_study_project_find_exploration(GStudyProject *project, wgroup_id_t wid, const wgroup_id_t **ptr) { loading_params *result; /* Trouvaille à retourner */ - const gid_t *value; /* Raccourci de confort */ + const wgroup_id_t *value; /* Raccourci de confort */ size_t i; /* Boucle de parcours #1 */ size_t k; /* Boucle de parcours #2 */ @@ -636,28 +622,15 @@ static loading_params *g_study_project_find_exploration(GStudyProject *project, value = NULL; for (i = 0; i < project->ld_count && result == NULL; i++) - { - if (project->ld_params[i].exp_count == 1) + for (k = 0; k < project->ld_params[i].exp_count && result == NULL; k++) { - value = project->ld_params[i].exp_gid; + value = project->ld_params[i].exp_wids[k]; - if (*value == gid) + if (*value == wid) result = &project->ld_params[i]; } - else - for (k = 0; k < project->ld_params[i].exp_count && result == NULL; k++) - { - value = project->ld_params[i].exp_gids[k]; - - if (*value == gid) - result = &project->ld_params[i]; - - } - - } - if (ptr != NULL) { assert(result == NULL || value != NULL); @@ -706,8 +679,7 @@ static void g_study_project_recover_binary_contents(GStudyProject *project, xmlD params = g_study_project_prepare_content_loading(project); - if (count > 1) - params->exp_gids = (const gid_t **)malloc(count * sizeof(gid_t *)); + params->exp_wids = (const wgroup_id_t **)malloc(count * sizeof(wgroup_id_t *)); params->resolved = 0; @@ -730,13 +702,7 @@ static void g_study_project_recover_binary_contents(GStudyProject *project, xmlD continue; } - if (count == 1) - { - params->exp_gid = g_content_explorer_create_group(explorer, content); - explored++; - } - else - params->exp_gids[explored++] = g_content_explorer_create_group(explorer, content); + params->exp_wids[explored++] = g_content_explorer_create_group(explorer, content); g_object_unref(G_OBJECT(content)); @@ -780,7 +746,7 @@ void g_study_project_discover_binary_content(GStudyProject *project, GBinContent params = g_study_project_prepare_content_loading(project); - params->exp_gid = g_content_explorer_create_group(explorer, content); + params->exp_wids = (const wgroup_id_t **)malloc(sizeof(wgroup_id_t *)); params->exp_count = 1; params->resolved = 0; @@ -788,6 +754,8 @@ void g_study_project_discover_binary_content(GStudyProject *project, GBinContent params->xdoc = NULL; params->context = NULL; + params->exp_wids[0] = g_content_explorer_create_group(explorer, content); + g_mutex_unlock(&project->ld_mutex); g_object_unref(G_OBJECT(explorer)); @@ -798,7 +766,7 @@ void g_study_project_discover_binary_content(GStudyProject *project, GBinContent /****************************************************************************** * * * Paramètres : explorer = gestionnaire d'explorations à consulter. * -* gid = groupe d'exploration concerné. * +* wid = groupe d'exploration concerné. * * project = projet avide des résultats des opérations. * * * * Description : Note la fin d'une phase d'exploration de contenu. * @@ -809,31 +777,28 @@ void g_study_project_discover_binary_content(GStudyProject *project, GBinContent * * ******************************************************************************/ -static void on_new_content_explored(GContentExplorer *explorer, gid_t gid, GStudyProject *project) +static void on_new_content_explored(GContentExplorer *explorer, wgroup_id_t wid, GStudyProject *project) { - const gid_t *gid_ptr; /* Référence vers l'origine */ + const wgroup_id_t *wid_ptr; /* Référence vers l'origine */ loading_params *params; /* Informations de chargement */ GBinContent **available; /* Contenus binaires présents */ size_t count; /* Quantité de ces contenus */ - const wgroup_id_t *wid; /* Groupe de tâches */ GContentResolver *resolver; /* Resolveur de contenus */ size_t i; /* Boucle de parcours */ g_mutex_lock(&project->ld_mutex); - params = g_study_project_find_exploration(project, gid, &gid_ptr); + params = g_study_project_find_exploration(project, wid, &wid_ptr); /* S'il s'agit bien d'une exploration nouvelle */ if (params != NULL) { - wid = g_content_explorer_get_group_work_id(explorer, gid); - - available = g_content_explorer_get_all(explorer, gid, &count); + available = g_content_explorer_get_all(explorer, wid, &count); assert(count > 0); resolver = get_current_content_resolver(); - g_content_resolver_create_group(resolver, wid, gid_ptr, available, count); + g_content_resolver_create_group(resolver, wid_ptr, available, count); g_object_unref(G_OBJECT(resolver)); @@ -852,7 +817,7 @@ static void on_new_content_explored(GContentExplorer *explorer, gid_t gid, GStud /****************************************************************************** * * * Paramètres : resolver = gestionnaire de résolutions à consulter. * -* gid = groupe d'exploration concerné. * +* wid = groupe d'exploration concerné. * * project = projet avide des résultats des opérations. * * * * Description : Note la fin d'une phase de resolution de contenu. * @@ -863,7 +828,7 @@ static void on_new_content_explored(GContentExplorer *explorer, gid_t gid, GStud * * ******************************************************************************/ -static void on_new_content_resolved(GContentResolver *resolver, gid_t gid, GStudyProject *project) +static void on_new_content_resolved(GContentResolver *resolver, wgroup_id_t wid, GStudyProject *project) { loading_params *params; /* Informations de chargement */ GLoadedContent **available; /* Contenus chargés valables */ @@ -878,12 +843,12 @@ static void on_new_content_resolved(GContentResolver *resolver, gid_t gid, GStud g_mutex_lock(&project->ld_mutex); - params = g_study_project_find_exploration(project, gid, NULL); + params = g_study_project_find_exploration(project, wid, NULL); /* S'il s'agit bien d'une exploration nouvelle */ if (params != NULL) { - available = g_content_resolver_get_all(resolver, gid, &count); + available = g_content_resolver_get_all(resolver, wid, &count); /* Rechargement à partir d'XML ? */ if (params->xdoc != NULL) |