static struct event_base *eb;
+
+static void Pause(void);
+static void Resume(void);
+
/*--------------------------------------------------------------------*/
static int serv_sock = -1;
if (p == NULL)
return;
printf("V: <<%s>>\n", p);
+ if (!strcmp(p, "Child said <Ready>"))
+ Resume();
}
}
cmd_start(char **av)
{
- printf("%s()\n", __func__);
(void)av;
assert(pipe(pipe1) == 0);
assert(pipe(pipe2) == 0);
}
close(pipe1[0]);
close(pipe2[1]);
+ Pause();
}
/*--------------------------------------------------------------------*/
+static struct bufferevent *e_cmd;
+
static void
rd_cmd(struct bufferevent *bev, void *arg)
{
char *p;
char **av;
+ int run = 1;
(void)bev;
(void)arg;
- p = evbuffer_readline(bev->input);
- if (p == NULL)
- return;
- av = ParseArgv(p, 0);
- if (av[0] != NULL) {
- fprintf(stderr, "%s\n", av[0]);
- exit (1);
- }
- if (av[1] == NULL)
- return;
- if (!strcmp(av[1], "start"))
- cmd_start(av + 2);
- else if (!strcmp(av[1], "stop"))
- cmd_stop(av + 2);
- else if (!strcmp(av[1], "serve"))
- cmd_serve(av + 2);
- else if (!strcmp(av[1], "cli"))
- cmd_cli(av + 2);
- else if (!strcmp(av[1], "vcl"))
- cmd_vcl(av + 2);
- else if (!strcmp(av[1], "open"))
- cmd_open(av + 2);
- else if (!strcmp(av[1], "close"))
- cmd_close(av + 2);
- else {
- fprintf(stderr, "Unknown command \"%s\"\n", av[1]);
- exit (2);
+ while (run) {
+ p = evbuffer_readline(bev->input);
+ if (p == NULL)
+ return;
+ printf("]: <<%s>>\n", p);
+ av = ParseArgv(p, 0);
+ if (av[0] != NULL) {
+ fprintf(stderr, "%s\n", av[0]);
+ exit (1);
+ }
+ if (av[1] == NULL)
+ return;
+ if (!strcmp(av[1], "start")) {
+ cmd_start(av + 2);
+ run = 0;
+ } else if (!strcmp(av[1], "stop"))
+ cmd_stop(av + 2);
+ else if (!strcmp(av[1], "serve"))
+ cmd_serve(av + 2);
+ else if (!strcmp(av[1], "cli"))
+ cmd_cli(av + 2);
+ else if (!strcmp(av[1], "vcl"))
+ cmd_vcl(av + 2);
+ else if (!strcmp(av[1], "open"))
+ cmd_open(av + 2);
+ else if (!strcmp(av[1], "close"))
+ cmd_close(av + 2);
+ else {
+ fprintf(stderr, "Unknown command \"%s\"\n", av[1]);
+ exit (2);
+ }
+ FreeArgv(av);
}
- FreeArgv(av);
}
-/*--------------------------------------------------------------------*/
+static void
+Pause()
+{
+ printf("X: Pause\n");
+ bufferevent_disable(e_cmd, EV_READ);
+}
-static struct bufferevent *e_cmd;
+static void
+Resume()
+{
+ printf("X: Resume\n");
+ bufferevent_enable(e_cmd, EV_READ);
+ rd_cmd(e_cmd, NULL);
+}
+
+/*--------------------------------------------------------------------*/
int
main(int argc, char **argv)