#include <systemd/sd-event.h>
#include "afb-api.h"
#include "afb-apiset.h"
-#include "afb-common.h"
+#include "afb-systemd.h"
#include "afb-stub-ws.h"
#include "verbose.h"
#include "sd-fds.h"
while (length && path[length - 1] != '/' && path[length - 1] != ':')
length = length - 1;
api->api = &api->path[length];
- if (api->api == NULL || !afb_api_is_valid_name(api->api)) {
+ if (api->api == NULL || !afb_api_is_valid_name(api->api, 1)) {
errno = EINVAL;
goto error2;
}
}
freeaddrinfo(rai);
return -1;
-
}
static int api_ws_socket(const char *path, int server)
/**********************************************************************************/
-int afb_api_ws_add_client(const char *path, struct afb_apiset *apiset)
+int afb_api_ws_add_client(const char *path, struct afb_apiset *apiset, int strong)
{
struct api_ws *apiws;
struct afb_stub_ws *stubws;
error2:
free(apiws);
error:
- return -1;
+ return -!!strong;
+}
+
+int afb_api_ws_add_client_strong(const char *path, struct afb_apiset *apiset)
+{
+ return afb_api_ws_add_client(path, apiset, 1);
+}
+
+int afb_api_ws_add_client_weak(const char *path, struct afb_apiset *apiset)
+{
+ return afb_api_ws_add_client(path, apiset, 0);
}
static int api_ws_server_accept_client(struct api_ws *apiws, int fd)
ERROR("can't create socket %s", apiws->path);
else {
/* listen for service */
- rc = sd_event_add_io(afb_common_get_event_loop(),
+ rc = sd_event_add_io(afb_systemd_get_event_loop(),
&apiws->listensrc, apiws->fd, EPOLLIN,
api_ws_server_listen_callback, apiws);
if (rc >= 0)
{
int rc;
struct api_ws *apiws;
- struct afb_api api;
/* creates the ws api object */
apiws = api_ws_make(path);
goto error;
/* check api name */
- if (afb_apiset_get(apiset, apiws->api, &api)) {
+ if (!afb_apiset_lookup(apiset, apiws->api, 1)) {
ERROR("Can't provide ws-server for %s: API %s doesn't exist", path, apiws->api);
goto error2;
}