summaryrefslogtreecommitdiff
path: root/src/glibext/workqueue-int.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext/workqueue-int.h')
-rw-r--r--src/glibext/workqueue-int.h50
1 files changed, 15 insertions, 35 deletions
diff --git a/src/glibext/workqueue-int.h b/src/glibext/workqueue-int.h
index 4f84e86..40afa19 100644
--- a/src/glibext/workqueue-int.h
+++ b/src/glibext/workqueue-int.h
@@ -1,8 +1,8 @@
/* Chrysalide - Outil d'analyse de fichiers binaires
- * delayed-int.h - définitions internes pour la gestion des travaux différés
+ * workqueue-int.h - définitions internes pour la gestion des travaux différés
*
- * Copyright (C) 2009-2018 Cyrille Bagard
+ * Copyright (C) 2009-2024 Cyrille Bagard
*
* This file is part of Chrysalide.
*
@@ -21,55 +21,35 @@
*/
-#ifndef _GLIBEXT_DELAYED_INT_H
-#define _GLIBEXT_DELAYED_INT_H
+#ifndef _GLIBEXT_WORKQUEUE_INT_H
+#define _GLIBEXT_WORKQUEUE_INT_H
-#include "delayed.h"
+#include "workqueue.h"
-#include "notifier.h"
-#include "../common/dllist.h"
-
-
-/* -------------------------- TACHE DIFFEREE DANS LE TEMPS -------------------------- */
-
-
-/* Traite un travail programmé. */
-typedef void (* run_task_fc) (GDelayedWork *, GtkStatusStack *);
-
-
-/* Travail différé (instance) */
-struct _GDelayedWork
+/* Gestionnaire des travaux différés (instance) */
+struct _GWorkQueue
{
GObject parent; /* A laisser en premier */
- DL_LIST_ITEM(link); /* Lien vers les maillons */
+ wgroup_id_t generator; /* Générateur d'identifiants */
- bool completed; /* Fin de la tâche ? */
- GMutex mutex; /* Accès à la variable */
- GCond cond; /* Attente de changement */
+ GWorkGroup **groups; /* Files de traitement */
+ size_t groups_count; /* Nombre de files internes */
+ GMutex mutex; /* Verrou pour l'accès */
+ GCond wait_all; /* Réveil d'attente globale */
};
-/* Travail différé (classe) */
-struct _GDelayedWorkClass
+/* Gestionnaire des travaux différés (classe) */
+struct _GWorkQueueClass
{
GObjectClass parent; /* A laisser en premier */
- run_task_fc run; /* Traitement externalisé */
-
- /* Signaux */
-
- void (* work_completed) (GDelayedWork *);
-
};
-#define delayed_work_list_add_tail(new, head) dl_list_add_tail(new, head, GDelayedWork, link)
-#define delayed_work_list_del(item, head) dl_list_del(item, head, GDelayedWork, link)
-
-
-#endif /* _GLIBEXT_DELAYED_INT_H */
+#endif /* _GLIBEXT_WORKQUEUE_INT_H */