diff options
Diffstat (limited to 'src/glibext/workgroup-int.h')
-rw-r--r-- | src/glibext/workgroup-int.h | 59 |
1 files changed, 22 insertions, 37 deletions
diff --git a/src/glibext/workgroup-int.h b/src/glibext/workgroup-int.h index 4f84e86..7224cf9 100644 --- a/src/glibext/workgroup-int.h +++ b/src/glibext/workgroup-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 + * workgroup-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,40 @@ */ -#ifndef _GLIBEXT_DELAYED_INT_H -#define _GLIBEXT_DELAYED_INT_H +#ifndef _GLIBEXT_WORKGROUP_INT_H +#define _GLIBEXT_WORKGROUP_INT_H -#include "delayed.h" +#include "workgroup.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 +/* File de traitement pour un type donné (instance) */ +typedef struct _GWorkGroup { GObject parent; /* A laisser en premier */ - DL_LIST_ITEM(link); /* Lien vers les maillons */ + wgroup_id_t id; /* Identifiant de travaux menés*/ - bool completed; /* Fin de la tâche ? */ - GMutex mutex; /* Accès à la variable */ - GCond cond; /* Attente de changement */ + GGenericWork *works; /* Tâches à mener à bien */ + GMutex mutex; /* Verrou pour l'accès */ + GCond cond; /* Réveil pour un traitement */ + GCond wait_cond; /* Réveil d'attente de fin */ + gint pending; /* Tâches en cours d'exécution */ -}; + GThread **threads; /* Procédure de traitement */ + guint threads_count; /* Nombre de procédures */ + bool force_exit; /* Procédure d'arrêt */ -/* Travail différé (classe) */ -struct _GDelayedWorkClass +} GWorkGroup; + +/* File de traitement pour un type donné (classe) */ +typedef struct _GWorkGroupClass { 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) +} GWorkGroupClass; -#endif /* _GLIBEXT_DELAYED_INT_H */ +#endif /* _GLIBEXT_WORKGROUP_INT_H */ |