#include <errno.h>
#include <signal.h>
#include <unistd.h>
-#include <fcntl.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
-#include <systemd/sd-event.h>
-#include <systemd/sd-daemon.h>
-
-#include <uuid/uuid.h>
#include <json-c/json.h>
#include <afb/afb-binding-v2.h>
-#include "afb-systemd.h"
-#include "afb-session.h"
#include "afb-cred.h"
#include "afb-stub-ws.h"
#include "afb-api.h"
#include "afb-xreq.h"
#include "afb-api-so-v2.h"
-#include "afb-api-ws.h"
#include "afb-apiset.h"
#include "afb-fdev.h"
-#include "jobs.h"
+
+#include "fdev.h"
#include "verbose.h"
#include "wrap-json.h"
-#include "process-name.h"
#include "afs-supervision.h"
#include "afs-supervisor.h"
/* supervision socket path */
static const char supervision_socket_path[] = AFS_SURPERVISION_SOCKET;
+static struct fdev *supervision_fdev;
/* global mutex */
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
/*
* handle even on server socket
*/
-static int listening(sd_event_source *src, int fd, uint32_t revents, void *closure)
+static void listening(void *closure, uint32_t revents, struct fdev *fdev)
{
if ((revents & EPOLLIN) != 0)
- accept_supervision_link(fd);
+ accept_supervision_link((int)(intptr_t)closure);
if ((revents & EPOLLHUP) != 0) {
ERROR("supervision socket closed");
exit(1);
}
- return 0;
}
/*
static void f_exit(struct afb_req req)
{
propagate(req, NULL);
+ afb_req_success(req, NULL, NULL);
}
static void f_debug_wait(struct afb_req req)
{
propagate(req, "wait");
+ afb_req_success(req, NULL, NULL);
}
static void f_debug_break(struct afb_req req)
{
propagate(req, "break");
+ afb_req_success(req, NULL, NULL);
}
/*************************************************************************************/
}
/* integrate the socket to the loop */
- rc = sd_event_add_io(afb_systemd_get_event_loop(),
- NULL, fd, EPOLLIN,
- listening, NULL);
+ supervision_fdev = afb_fdev_create(fd);
if (rc < 0) {
ERROR("handling socket event isn't possible");
return rc;
}
+ fdev_set_events(supervision_fdev, EPOLLIN);
+ fdev_set_callback(supervision_fdev, listening, (void*)(intptr_t)fd);
return 0;
}