summaryrefslogtreecommitdiff
path: root/src/analysis
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-04-13 18:41:28 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-04-13 18:41:28 (GMT)
commite75a1aea506869d441fc084f78102367be1f9ed2 (patch)
tree77b46bed6e4026fd764fc3767e1cb9feb660dd56 /src/analysis
parent8d4c5ae6dfd812b753109a25d7e84f7e524d4bf0 (diff)
Simplified the loading process of binary contents.
Diffstat (limited to 'src/analysis')
-rw-r--r--src/analysis/loading.c114
-rw-r--r--src/analysis/loading.h8
-rw-r--r--src/analysis/project.c12
3 files changed, 6 insertions, 128 deletions
diff --git a/src/analysis/loading.c b/src/analysis/loading.c
index a376b4b..842628d 100644
--- a/src/analysis/loading.c
+++ b/src/analysis/loading.c
@@ -113,9 +113,6 @@ typedef struct _exploring_group
GBinContent **contents; /* Contenus reconnus dispos. */
size_t count; /* Taille de cette liste */
- GLoadedContent **loaded; /* Contenus reconnus à intégrer*/
- size_t noted; /* Taille de cette liste */
-
} exploring_group;
/* Exploration de contenus binaires (instance) */
@@ -732,9 +729,6 @@ wgroup_id_t g_content_explorer_create_group(GContentExplorer *explorer, GBinCont
group->contents = NULL;
group->count = 0;
- group->loaded = NULL;
- group->noted = 0;
-
/* Alimentation du contenu initial */
work = g_exploring_work_new(content);
@@ -790,12 +784,6 @@ void g_content_explorer_delete_group(GContentExplorer *explorer, wgroup_id_t wid
if (group->contents != NULL)
free(group->contents);
- for (i = 0; i < group->noted; i++)
- g_object_unref(G_OBJECT(group->loaded[i]));
-
- if (group->loaded != NULL)
- free(group->loaded);
-
/* Réorganisation de la liste */
index = group - explorer->groups;
@@ -866,39 +854,6 @@ void g_content_explorer_populate_group(GContentExplorer *explorer, wgroup_id_t w
/******************************************************************************
* *
* Paramètres : explorer = gestionnaire d'explorations à consulter. *
-* wid = identifiant du groupe recherché. *
-* loaded = contenu chargé et pouvant être représenté. *
-* *
-* Description : Note un contenu chargé pour future intégration guidée. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void g_content_explorer_note_detected(GContentExplorer *explorer, wgroup_id_t wid, GLoadedContent *loaded)
-{
- exploring_group *group; /* Groupe d'opération concerné */
-
- g_mutex_lock(&explorer->mutex);
-
- group = g_content_explorer_find_group(explorer, wid);
- assert(group != NULL);
-
- group->loaded = realloc(group->loaded, ++group->noted * sizeof(GLoadedContent *));
-
- group->loaded[group->noted - 1] = loaded;
- g_object_ref(G_OBJECT(loaded));
-
- g_mutex_unlock(&explorer->mutex);
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : explorer = gestionnaire d'explorations à consulter. *
* wid = identifiant du groupe à parcourir. *
* count = nombre de contenus binaires retournés. [OUT] *
* *
@@ -949,53 +904,6 @@ GBinContent **g_content_explorer_get_all(GContentExplorer *explorer, wgroup_id_t
}
-/******************************************************************************
-* *
-* Paramètres : explorer = gestionnaire d'explorations à consulter. *
-* wid = identifiant du groupe à parcourir. *
-* noted = nombre de contenus chargés retournés. [OUT] *
-* *
-* Description : Fournit la liste de tous les contenus préalablement détectés.*
-* *
-* Retour : Liste de contenus chargés enregistrés. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-GLoadedContent **g_content_explorer_get_detected(GContentExplorer *explorer, wgroup_id_t wid, size_t *noted)
-{
- GLoadedContent **result; /* Trouvailles à retourner */
- exploring_group *group; /* Groupe d'opération concerné */
- size_t i; /* Boucle de parcours */
-
- g_mutex_lock(&explorer->mutex);
-
- group = g_content_explorer_find_group(explorer, wid);
- assert(group != NULL);
-
- /* Allocation de la liste finale */
-
- *noted = group->noted;
- result = (GLoadedContent **)malloc(*noted * sizeof(GLoadedContent *));
-
- /* On parcourt les éventuels contenus encapsulés découverts */
-
- for (i = 0; i < group->noted; i++)
- {
- result[i] = group->loaded[i];
-
- g_object_ref(G_OBJECT(result[i]));
-
- }
-
- g_mutex_unlock(&explorer->mutex);
-
- return result;
-
-}
-
-
/* ---------------------------------------------------------------------------------- */
/* TACHE DE RESOLUTION DE CONTENU */
@@ -1401,8 +1309,6 @@ static void g_content_resolver_ack(GContentResolver *resolver, GResolvingWork *w
* wid = identifiant du groupe de tâches réservé. *
* contents = contenus à analyser. *
* count = nombre de ces contenus. *
-* detected = contenus préalablement détectés. *
-* noted = nombre de contenus chargés. *
* *
* Description : Initie une nouvelle vague de résolution de contenus. *
* *
@@ -1412,7 +1318,7 @@ static void g_content_resolver_ack(GContentResolver *resolver, GResolvingWork *w
* *
******************************************************************************/
-void g_content_resolver_create_group(GContentResolver *resolver, wgroup_id_t wid, GBinContent **contents, size_t count, GLoadedContent **detected, size_t noted)
+void g_content_resolver_create_group(GContentResolver *resolver, wgroup_id_t wid, GBinContent **contents, size_t count)
{
resolving_group *group; /* Groupe ciblé par l'opération*/
GWorkQueue *queue; /* Gestionnaire de différés */
@@ -1434,21 +1340,6 @@ void g_content_resolver_create_group(GContentResolver *resolver, wgroup_id_t wid
group->loaded = NULL;
group->count = 0;
- /* Insertion des résultats préalables */
-
- if (noted > 0)
- {
- group->count = noted;
- group->loaded = realloc(group->loaded, group->count * sizeof(GLoadedContent *));
-
- for (i = 0; i < noted; i++)
- {
- group->loaded[i] = detected[i];
- g_object_ref(G_OBJECT(detected[i]));
- }
-
- }
-
/* Alimentation du contenu initial */
queue = get_work_queue();
@@ -1466,6 +1357,9 @@ void g_content_resolver_create_group(GContentResolver *resolver, wgroup_id_t wid
g_mutex_unlock(&resolver->mutex);
+ if (count == 0)
+ g_signal_emit_by_name(resolver, "resolved", wid);
+
}
diff --git a/src/analysis/loading.h b/src/analysis/loading.h
index d3b9ed9..2310aef 100644
--- a/src/analysis/loading.h
+++ b/src/analysis/loading.h
@@ -67,15 +67,9 @@ void g_content_explorer_delete_group(GContentExplorer *, wgroup_id_t);
/* Ajoute un nouveau contenu découvert au crédit d'un groupe. */
void g_content_explorer_populate_group(GContentExplorer *, wgroup_id_t, GBinContent *);
-/* Note un contenu chargé pour future intégration guidée. */
-void g_content_explorer_note_detected(GContentExplorer *, wgroup_id_t, GLoadedContent *);
-
/* Fournit la liste de tous les contenus disponibles. */
GBinContent **g_content_explorer_get_all(GContentExplorer *, wgroup_id_t, size_t *);
-/* Fournit la liste de tous les contenus préalablement détectés. */
-GLoadedContent **g_content_explorer_get_detected(GContentExplorer *, wgroup_id_t, size_t *);
-
/* ------------------- RESOLUTION DE CONTENUS BINAIRES EN CHARGES ------------------- */
@@ -103,7 +97,7 @@ GType g_content_resolver_get_type(void);
GContentResolver *g_content_resolver_new(void);
/* Initie une nouvelle vague de résolution de contenus. */
-void g_content_resolver_create_group(GContentResolver *, wgroup_id_t, GBinContent **, size_t, GLoadedContent **, size_t);
+void g_content_resolver_create_group(GContentResolver *, wgroup_id_t, GBinContent **, size_t);
/* Termine une vague de résolution de contenu. */
void g_content_resolver_delete_group(GContentResolver *, wgroup_id_t);
diff --git a/src/analysis/project.c b/src/analysis/project.c
index e3b38b2..71e0f43 100644
--- a/src/analysis/project.c
+++ b/src/analysis/project.c
@@ -1246,8 +1246,6 @@ static void on_new_content_explored(GContentExplorer *explorer, wgroup_id_t wid,
{
GBinContent **available; /* Contenus binaires présents */
size_t count; /* Quantité de ces contenus */
- GLoadedContent **detected; /* Contenus chargés présents */
- size_t noted; /* Quantité de ces contenus */
GContentResolver *resolver; /* Resolveur de contenus */
size_t i; /* Boucle de parcours */
@@ -1256,11 +1254,9 @@ static void on_new_content_explored(GContentExplorer *explorer, wgroup_id_t wid,
available = g_content_explorer_get_all(explorer, wid, &count);
assert(count > 0);
- detected = g_content_explorer_get_detected(explorer, wid, &noted);
-
resolver = get_current_content_resolver();
- g_content_resolver_create_group(resolver, wid, available, count, detected, noted);
+ g_content_resolver_create_group(resolver, wid, available, count);
g_object_unref(G_OBJECT(resolver));
@@ -1269,12 +1265,6 @@ static void on_new_content_explored(GContentExplorer *explorer, wgroup_id_t wid,
free(available);
- for (i = 0; i < noted; i++)
- g_object_unref(G_OBJECT(detected[i]));
-
- if (detected != NULL)
- free(detected);
-
}
}