add functions for dumping server state
This commit is contained in:
parent
4609154d55
commit
a66d02c329
28
job.c
28
job.c
|
@ -60,3 +60,31 @@ void job_free(Job *j) {
|
||||||
/* Free data and next 'smaller' objects */
|
/* Free data and next 'smaller' objects */
|
||||||
free(j);
|
free(j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void job_dump(Job *j, FILE*f) {
|
||||||
|
|
||||||
|
static const char* const job_type_table[_JOB_TYPE_MAX] = {
|
||||||
|
[JOB_START] = "START",
|
||||||
|
[JOB_STOP] = "STOP",
|
||||||
|
[JOB_VERIFY_STARTED] = "VERIFY_STARTED",
|
||||||
|
[JOB_RELOAD] = "RELOAD",
|
||||||
|
[JOB_RESTART] = "RESTART",
|
||||||
|
[JOB_TRY_RESTART] = "TRY_RESTART",
|
||||||
|
[JOB_RESTART_FINISH] = "RESTART_FINISH"
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char* const job_state_table[_JOB_STATE_MAX] = {
|
||||||
|
[JOB_WAITING] = "WAITING",
|
||||||
|
[JOB_RUNNING] = "RUNNING",
|
||||||
|
[JOB_DONE] = "DONE"
|
||||||
|
};
|
||||||
|
|
||||||
|
assert(j);
|
||||||
|
assert(f);
|
||||||
|
|
||||||
|
fprintf(f, "Job %u: %s → %s in state %s\n",
|
||||||
|
j->id,
|
||||||
|
name_id(j->name),
|
||||||
|
job_type_table[j->type],
|
||||||
|
job_state_table[j->state]);
|
||||||
|
}
|
||||||
|
|
1
job.h
1
job.h
|
@ -53,5 +53,6 @@ struct Job {
|
||||||
Job* job_new(Manager *m, JobType type, Name *name);
|
Job* job_new(Manager *m, JobType type, Name *name);
|
||||||
int job_link(Job *job);
|
int job_link(Job *job);
|
||||||
void job_free(Job *job);
|
void job_free(Job *job);
|
||||||
|
void job_dump(Job *j, FILE*f);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
10
main.c
10
main.c
|
@ -23,10 +23,12 @@ int main(int argc, char *argv[]) {
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((r = manager_add_job(m, JOB_START, milestone, JOB_REPLACE, &job)) < 0) {
|
manager_dump_names(m, stdout);
|
||||||
fprintf(stderr, "Failed to start default milestone: %s\n", strerror(-r));
|
|
||||||
goto finish;
|
/* if ((r = manager_add_job(m, JOB_START, milestone, JOB_REPLACE, &job)) < 0) { */
|
||||||
}
|
/* fprintf(stderr, "Failed to start default milestone: %s\n", strerror(-r)); */
|
||||||
|
/* goto finish; */
|
||||||
|
/* } */
|
||||||
|
|
||||||
retval = 0;
|
retval = 0;
|
||||||
|
|
||||||
|
|
22
manager.c
22
manager.c
|
@ -333,3 +333,25 @@ finish:
|
||||||
*_ret = ret;
|
*_ret = ret;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void manager_dump_jobs(Manager *s, FILE *f) {
|
||||||
|
void *state;
|
||||||
|
Job *j;
|
||||||
|
|
||||||
|
assert(s);
|
||||||
|
assert(f);
|
||||||
|
|
||||||
|
HASHMAP_FOREACH(j, s->jobs, state)
|
||||||
|
job_dump(j, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void manager_dump_names(Manager *s, FILE *f) {
|
||||||
|
void *state;
|
||||||
|
Name *n;
|
||||||
|
|
||||||
|
assert(s);
|
||||||
|
assert(f);
|
||||||
|
|
||||||
|
HASHMAP_FOREACH(n, s->names, state)
|
||||||
|
name_dump(n, f);
|
||||||
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
typedef struct Manager Manager;
|
typedef struct Manager Manager;
|
||||||
|
|
||||||
|
@ -44,4 +45,7 @@ Name *manager_get_name(Manager *m, const char *name);
|
||||||
int manager_load_name(Manager *m, const char *name, Name **_ret);
|
int manager_load_name(Manager *m, const char *name, Name **_ret);
|
||||||
int manager_add_job(Manager *m, JobType job, Name *name, JobMode mode, Job **_ret);
|
int manager_add_job(Manager *m, JobType job, Name *name, JobMode mode, Job **_ret);
|
||||||
|
|
||||||
|
void manager_dump_names(Manager *s, FILE *f);
|
||||||
|
void manager_dump_jobs(Manager *s, FILE *f);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
29
name.c
29
name.c
|
@ -112,7 +112,6 @@ static void bidi_set_free(Name *name, Set *s) {
|
||||||
Name *other;
|
Name *other;
|
||||||
|
|
||||||
assert(name);
|
assert(name);
|
||||||
assert(s);
|
|
||||||
|
|
||||||
/* Frees the set and makes sure we are dropped from the
|
/* Frees the set and makes sure we are dropped from the
|
||||||
* inverse pointers */
|
* inverse pointers */
|
||||||
|
@ -360,3 +359,31 @@ int name_merge(Name *name, Name *other) {
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* name_id(Name *n) {
|
||||||
|
assert(n);
|
||||||
|
|
||||||
|
return set_first(n->meta.names);
|
||||||
|
}
|
||||||
|
|
||||||
|
void name_dump(Name *n, FILE *f) {
|
||||||
|
|
||||||
|
static const char* const state_table[_NAME_STATE_MAX] = {
|
||||||
|
[NAME_STUB] = "STUB",
|
||||||
|
[NAME_LOADED] = "LOADED",
|
||||||
|
[NAME_FAILED] = "FAILED"
|
||||||
|
};
|
||||||
|
|
||||||
|
assert(n);
|
||||||
|
|
||||||
|
fprintf(stderr,
|
||||||
|
"Name %s (%s), state %s\n",
|
||||||
|
name_id(n),
|
||||||
|
n->meta.description ? n->meta.description : name_id(n),
|
||||||
|
state_table[n->meta.state]);
|
||||||
|
|
||||||
|
if (n->meta.job) {
|
||||||
|
fprintf(f, "\t▶ ");
|
||||||
|
job_dump(n->meta.job, f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
6
name.h
6
name.h
|
@ -39,7 +39,8 @@ typedef enum NameType {
|
||||||
typedef enum NameState {
|
typedef enum NameState {
|
||||||
NAME_STUB,
|
NAME_STUB,
|
||||||
NAME_LOADED,
|
NAME_LOADED,
|
||||||
NAME_FAILED
|
NAME_FAILED,
|
||||||
|
_NAME_STATE_MAX
|
||||||
} NameState;
|
} NameState;
|
||||||
|
|
||||||
typedef enum NameDependency {
|
typedef enum NameDependency {
|
||||||
|
@ -276,5 +277,8 @@ void name_free(Name *name);
|
||||||
int name_link(Name *name);
|
int name_link(Name *name);
|
||||||
int name_merge(Name *name, Name *other);
|
int name_merge(Name *name, Name *other);
|
||||||
int name_augment(Name *n);
|
int name_augment(Name *n);
|
||||||
|
const char* name_id(Name *n);
|
||||||
|
|
||||||
|
void name_dump(Name *n, FILE *f);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue