aboutsummaryrefslogtreecommitdiff
path: root/src/pevent.h
blob: da09f596393aa08072b9e1007d76682d4f04bf16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef POTD_EVENT_H
#define POTD_EVENT_H 1

#include <sys/epoll.h>

#include "socket.h"

#define POTD_MAXFD 32
#define POTD_MAXEVENTS 64

typedef struct event_ctx {
    int epoll_fd;
    int active;
    struct epoll_event events[POTD_MAXEVENTS];
} event_ctx;

typedef int (*on_event_cb) (int fd, void *user_data);


void event_init(event_ctx **ctx);

int event_setup(event_ctx *ctx);

int event_add_sock(event_ctx *ctx, psocket *sock);

int event_add_fd(event_ctx *ctx, int fd);

int event_loop(event_ctx *ctx, on_event_cb on_event, void *user_data);

#endif