amduat-api/src/amduatd_space_doctor.h

61 lines
1.5 KiB
C
Raw Normal View History

#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 <stdbool.h>
#include <stddef.h>
#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 */