#include <stdbool.h>
#include <inttypes.h>
+#include <stdio.h>
typedef struct Manager Manager;
/* Names that need to be loaded */
LIST_HEAD(Meta, load_queue); /* this is actually more a stack than a queue, but uh. */
- /* Jobs to be added resp. removed. */
- Hashmap *jobs_to_add; /* Name object => Job object 1:1 */
- Set *jobs_to_remove;
+ /* Jobs to be added */
+ Hashmap *transaction_jobs; /* Name object => Job object list 1:1 */
+ JobDependency *transaction_anchor;
bool dispatching_load_queue:1;
+
+ Hashmap *pids; /* pid => Name object n:1 */
};
Manager* manager_new(void);
Name *manager_get_name(Manager *m, const char *name);
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 type, Name *name, JobMode mode, bool force, Job **_ret);
+
+void manager_dump_names(Manager *s, FILE *f, const char *prefix);
+void manager_dump_jobs(Manager *s, FILE *f, const char *prefix);
+
+void manager_transaction_unlink_job(Manager *m, Job *j);
+
+void manager_clear_jobs(Manager *m);
+
+void manager_run_jobs(Manager *m);
#endif