diff options
author | José Bollo <jose.bollo@iot.bzh> | 2018-02-22 13:22:48 +0100 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2018-02-22 13:22:48 +0100 |
commit | ca820c65c2b03a24e8936218171c6c1d138fd1f7 (patch) | |
tree | f7e31ea8e63d3321af64226e360a78c504a09bb3 /src/afb-ws-client.c | |
parent | f15ea770dd9b13a20331853a026091316984f9ca (diff) |
fdev: Introduce fdev for file event handling
This is an effort to keep cutting dependency to systemd.
Change-Id: I9a0c032a1095e297c7f3ac5b67827fda3658b8d9
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-ws-client.c')
-rw-r--r-- | src/afb-ws-client.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/src/afb-ws-client.c b/src/afb-ws-client.c index e1d3277e..7e1a04f1 100644 --- a/src/afb-ws-client.c +++ b/src/afb-ws-client.c @@ -29,6 +29,7 @@ #include <fcntl.h> #include "afb-wsj1.h" +#include "fdev-systemd.h" /**************** WebSocket handshake ****************************/ @@ -320,6 +321,7 @@ struct afb_wsj1 *afb_ws_client_connect_wsj1(struct sd_event *eloop, const char * const char *path; struct addrinfo hint, *rai, *iai; struct afb_wsj1 *result; + struct fdev *fdev; /* scan the uri */ rc = parse_uri(uri, &host, &service, &path); @@ -354,10 +356,13 @@ struct afb_wsj1 *afb_ws_client_connect_wsj1(struct sd_event *eloop, const char * if (rc == 0) { rc = negociate(fd, proto_json1, path, xhost); if (rc == 0) { - result = afb_wsj1_create(eloop, fd, itf, closure); - if (result != NULL) { - fcntl(fd, F_SETFL, O_NONBLOCK); - break; + fdev = fdev_systemd_create(eloop, fd); + if (fdev) { + result = afb_wsj1_create(fdev, itf, closure); + if (result != NULL) { + fcntl(fd, F_SETFL, O_NONBLOCK); + break; + } } } } @@ -505,16 +510,18 @@ struct afb_proto_ws *afb_ws_client_connect_api(struct sd_event *eloop, const cha { int fd; struct afb_proto_ws *pws; + struct fdev *fdev; fd = get_socket(uri); if (fd >= 0) { - pws = afb_proto_ws_create_client(eloop, fd, itf, closure); - if (pws) - return pws; + fdev = fdev_systemd_create(eloop, fd); + if (fdev) { + pws = afb_proto_ws_create_client(fdev, itf, closure); + if (pws) + return pws; + } close(fd); } return NULL; } - - |