#ifndef AMDUATD_SPACE_DOCTOR_H #define AMDUATD_SPACE_DOCTOR_H #include "amduat/asl/asl_pointer_fs.h" #include "amduat/asl/core.h" #include "amduat/asl/store.h" #include "amduatd_caps.h" #include "amduatd_fed.h" #include "amduatd_store.h" #include #include #ifdef __cplusplus extern "C" { #endif typedef enum { AMDUATD_DOCTOR_OK = 0, AMDUATD_DOCTOR_WARN = 1, AMDUATD_DOCTOR_FAIL = 2, AMDUATD_DOCTOR_SKIPPED = 3 } amduatd_space_doctor_status_t; typedef struct { char *name; amduatd_space_doctor_status_t status; char *detail; } amduatd_space_doctor_check_t; typedef struct { bool scoped; char space_id[AMDUAT_ASL_POINTER_NAME_MAX + 1u]; amduatd_store_backend_t backend; amduatd_space_doctor_check_t *checks; size_t checks_len; size_t ok_count; size_t warn_count; size_t fail_count; size_t skipped_count; } amduatd_space_doctor_report_t; bool amduatd_space_doctor_run(amduat_asl_store_t *store, amduat_asl_pointer_store_t *pointer_store, const amduatd_space_t *effective_space, const amduatd_cfg_t *cfg, const amduatd_fed_cfg_t *fed_cfg, amduatd_space_doctor_report_t *out_report); bool amduatd_space_doctor_report_json( const amduatd_space_doctor_report_t *report, char **out_json); void amduatd_space_doctor_report_free(amduatd_space_doctor_report_t *report); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* AMDUATD_SPACE_DOCTOR_H */