labfy-investigation/include/core/evidence_import_task.h
2026-07-20 00:04:50 +02:00

89 lines
2.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******************************************************************************
* @file evidence_import_task.h
* @brief Tâche asynchrone dimport dune preuve.
******************************************************************************/
#ifndef LABFY_INVESTIGATION_EVIDENCE_IMPORT_TASK_H
#define LABFY_INVESTIGATION_EVIDENCE_IMPORT_TASK_H
#include "core/background_task.h"
#include "core/task_manager.h"
#include <glib.h>
/**
* @brief Codes derreur propres à la tâche dimport.
*/
typedef enum
{
EVIDENCE_IMPORT_TASK_ERROR_INVALID_ARGUMENT,
EVIDENCE_IMPORT_TASK_ERROR_DATABASE,
EVIDENCE_IMPORT_TASK_ERROR_IMPORT
} EvidenceImportTaskError;
/**
* @brief Domaine derreur du module.
*/
#define EVIDENCE_IMPORT_TASK_ERROR \
evidence_import_task_error_quark()
/**
* @brief Paramètres nécessaires à une tâche dimport.
*
* Toutes les chaînes sont copiées avant le démarrage du worker.
*/
typedef struct
{
const char *database_path;
const char *source_path;
const char *destination_directory;
const char *relative_directory;
const char *type_identifier;
const char *collected_at;
const char *source;
const char *description;
} EvidenceImportTaskRequest;
/**
* @brief Retourne le domaine derreur du module.
*
* @return Quark GLib du domaine derreur.
*/
GQuark evidence_import_task_error_quark(void);
/**
* @brief Crée, enregistre et démarre une tâche dimport.
*
* La tâche ouvre sa propre connexion SQLite dans le thread secondaire.
*
* En cas de succès :
*
* - TaskManager conserve une référence ;
* - le worker conserve une référence pendant son exécution ;
* - lappelant reçoit sa référence initiale et doit la libérer avec
* background_task_unref().
*
* completion_data est transféré à BackgroundTask uniquement si le
* démarrage réussit. En cas déchec, lappelant en reste propriétaire.
*
* @param task_manager Gestionnaire recevant la tâche.
* @param request Paramètres de limport.
* @param completion_callback Callback final facultatif.
* @param completion_data Données du callback final.
* @param completion_data_destroy Destructeur de completion_data.
* @param error Emplacement facultatif recevant une erreur.
*
* @return Nouvelle tâche démarrée, ou NULL.
*/
BackgroundTask *evidence_import_task_start(
TaskManager *task_manager,
const EvidenceImportTaskRequest *request,
BackgroundTaskCompletionCallback completion_callback,
gpointer completion_data,
GDestroyNotify completion_data_destroy,
GError **error
);
#endif