59e887c0ef850e163b0fbe8dba39198d141718a1
[project/procd.git] / instance.h
1 #ifndef __PROCD_INSTANCE_H
2 #define __PROCD_INSTANCE_H
3
4 #include <libubox/vlist.h>
5 #include <libubox/uloop.h>
6 #include "utils.h"
7
8 struct service_instance {
9         struct vlist_node node;
10         struct service *srv;
11         const char *name;
12
13         bool valid;
14         bool restart;
15         struct blob_attr *config;
16         struct uloop_process proc;
17         struct uloop_timeout timeout;
18
19         struct blob_attr *command;
20         struct blobmsg_list env;
21         struct blobmsg_list data;
22         struct blobmsg_list netdev;
23 };
24
25 void instance_start(struct service_instance *in);
26 void instance_stop(struct service_instance *in, bool restart);
27 bool instance_update(struct service_instance *in, struct service_instance *in_new);
28 void instance_init(struct service_instance *in, struct service *s, struct blob_attr *config);
29 void instance_free(struct service_instance *in);
30 void instance_dump(struct blob_buf *b, struct service_instance *in);
31
32 #endif