summaryrefslogtreecommitdiff
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
parent8d4c5ae6dfd812b753109a25d7e84f7e524d4bf0 (diff)
Simplified the loading process of binary contents.
-rw-r--r--plugins/pychrysalide/analysis/loading.c43
-rw-r--r--src/analysis/loading.c114
-rw-r--r--src/analysis/loading.h8
-rw-r--r--src/analysis/project.c12
4 files changed, 6 insertions, 171 deletions
diff --git a/plugins/pychrysalide/analysis/loading.c b/plugins/pychrysalide/analysis/loading.c
index a0b9c38..dea4e31 100644
--- a/plugins/pychrysalide/analysis/loading.c
+++ b/plugins/pychrysalide/analysis/loading.c
@@ -44,9 +44,6 @@
/* Ajoute un nouveau contenu découvert au crédit d'un groupe. */
static PyObject *py_content_explorer_populate_group(PyObject *, PyObject *);
-/* Note un contenu chargé pour future intégration guidée. */
-static PyObject *py_content_explorer_note_detected(PyObject *, PyObject *);
-
/* ------------------- RESOLUTION DE CONTENUS BINAIRES EN CHARGES ------------------- */
@@ -97,41 +94,6 @@ static PyObject *py_content_explorer_populate_group(PyObject *self, PyObject *ar
}
-/******************************************************************************
-* *
-* Paramètres : self = classe représentant un binaire. *
-* args = arguments fournis à l'appel. *
-* *
-* Description : Note un contenu chargé pour future intégration guidée. *
-* *
-* Retour : None. *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-static PyObject *py_content_explorer_note_detected(PyObject *self, PyObject *args)
-{
- PyObject *result; /* Valeur à retourner */
- unsigned long long wid; /* Identifiant de groupe */
- GLoadedContent *loaded; /* Contenu chargé au final */
- int ret; /* Bilan de lecture des args. */
- GContentExplorer *explorer; /* Explorateur à manipuler */
-
- ret = PyArg_ParseTuple(args, "KO&", &wid, convert_to_loaded_content, &loaded);
- if (!ret) return NULL;
-
- explorer = G_CONTENT_EXPLORER(pygobject_get(self));
-
- g_content_explorer_note_detected(explorer, wid, loaded);
-
- result = Py_None;
- Py_INCREF(result);
-
- return result;
-
-}
-
/******************************************************************************
* *
@@ -153,11 +115,6 @@ PyTypeObject *get_python_content_explorer_type(void)
METH_VARARGS,
"populate_group($self, wid, content, /)\n--\n\nPush a new binary content into the list to explore."
},
- {
- "note_detected", py_content_explorer_note_detected,
- METH_VARARGS,
- "note_detected($self, wid, loaded, /)\n--\n\nMark a loaded content as one final candidate."
- },
{ NULL }
};
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);
-
}
}