struct mempool *pool;
struct odes *request;
struct odes *reply;
+ struct odes *task_status;
+ int task_lock_fd;
byte *user;
};
struct task {
cnode n;
byte *name;
+ uns open_data; // Number of parts for open-data tasks
+ clist parts; // List of parts of this task (simp_nodes)
+ clist *extensions; // List of allowed extensions for this task (simp_nodes)
};
extern clist task_list;
extern struct cf_section tasks_conf;
struct task *task_find(byte *name);
+int part_exists_p(struct task *t, byte *name);
int user_exists_p(byte *user);
+int ext_exists_p(struct task *t, byte *ext);
+
+void task_lock_status(struct conn *c);
+void task_unlock_status(struct conn *c, uns write_back);
+void task_load_status(struct conn *c);
+
+struct odes *task_status_find_task(struct conn *c, struct task *t, uns create);
+struct odes *task_status_find_part(struct odes *t, byte *part, uns create);
+
+void task_submit_part(byte *user, byte *task, byte *part, byte *ext, uns version, struct fastbuf *fb);
+void task_delete_part(byte *user, byte *task, byte *part, byte *ext, uns version);
#endif