Refactor of API interfaces
[src/app-framework-binder.git] / src / afb-client-demo.c
index 1ead5f7..434c6d1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015, 2016 "IoT.bzh"
+ * Copyright (C) 2015, 2016, 2017 "IoT.bzh"
  * Author "Fulup Ar Foll"
  * Author José Bollo <jose.bollo@iot.bzh>
  *
@@ -65,6 +65,9 @@ static void usage(int status, char *arg0)
 /* entry function */
 int main(int ac, char **av, char **env)
 {
+       int rc;
+       sd_event *loop;
+
        /* check the argument count */
        if (ac != 2 && ac != 4 && ac != 5)
                usage(1, av[0]);
@@ -73,8 +76,15 @@ int main(int ac, char **av, char **env)
        if (!strcmp(av[1], "-h") || !strcmp(av[1], "--help"))
                usage(0, av[0]);
 
+       /* get the default event loop */
+       rc = sd_event_default(&loop);
+       if (rc < 0) {
+               fprintf(stderr, "connection to default event loop failed: %s\n", strerror(-rc));
+               return 1;
+       }
+
        /* connect the websocket wsj1 to the uri given by the first argument */
-       wsj1 = afb_ws_client_connect_wsj1(av[1], &itf, NULL);
+       wsj1 = afb_ws_client_connect_wsj1(loop, av[1], &itf, NULL);
        if (wsj1 == NULL) {
                fprintf(stderr, "connection to %s failed: %m\n", av[1]);
                return 1;
@@ -84,7 +94,7 @@ int main(int ac, char **av, char **env)
        if (ac == 2) {
                /* get requests from stdin */
                fcntl(0, F_SETFL, O_NONBLOCK);
-               sd_event_add_io(afb_ws_client_get_event_loop(), &evsrc, 0, EPOLLIN, io_event_callback, NULL);
+               sd_event_add_io(loop, &evsrc, 0, EPOLLIN, io_event_callback, NULL);
        } else {
                /* the request is defined by the arguments */
                exonrep = 1;
@@ -93,7 +103,7 @@ int main(int ac, char **av, char **env)
 
        /* loop until end */
        for(;;)
-               sd_event_run(afb_ws_client_get_event_loop(), 30000000);
+               sd_event_run(loop, 30000000);
        return 0;
 }
 
@@ -212,9 +222,10 @@ static int io_event_callback(sd_event_source *src, int fd, uint32_t revents, voi
                rest[0] = i; while(i < count && line[i] != '\n') i++; rest[1] = i;
                if (i == count) break;
                line[i++] = 0;
-               if (api[0] == api[1] || verb[0] == verb[1])
-                       fprintf(stderr, "bad line: %s\n", line+pos);
-               else {
+               if (api[0] == api[1] || verb[0] == verb[1]) {
+                       if (api[0] != api[1] || verb[0] != verb[1])
+                               fprintf(stderr, "bad line: %s\n", line+pos);
+               } else {
                        line[api[1]] = line[verb[1]] = 0;
                        emit(line + api[0], line + verb[0], line + rest[0]);
                }