summaryrefslogtreecommitdiff
path: root/src/analysis/project.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-05-09 11:56:15 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-05-09 11:56:15 (GMT)
commitbb242c2cda6a590fef652e62688c10e2d52a7ff0 (patch)
tree8d59ef7d6edc7887806906ac65938510c52c9a5b /src/analysis/project.c
parent286878b36b5cf7a3f44251f62c94a57f0f29d3cf (diff)
Simplified the content loading handling.
Diffstat (limited to 'src/analysis/project.c')
-rw-r--r--src/analysis/project.c93
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)