diff options
Diffstat (limited to 'src/glibext/workqueue-int.h')
-rw-r--r-- | src/glibext/workqueue-int.h | 50 |
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 */ |