93 lines
2.1 KiB
C
93 lines
2.1 KiB
C
/**
|
|
* @file re_main.h Interface to main polling routine
|
|
*
|
|
* Copyright (C) 2010 Creytiv.com
|
|
*/
|
|
|
|
#include "re_async.h"
|
|
|
|
struct re;
|
|
struct re_fhs;
|
|
|
|
enum {
|
|
#ifndef FD_READ
|
|
FD_READ = 1<<0,
|
|
#endif
|
|
#ifndef FD_WRITE
|
|
FD_WRITE = 1<<1,
|
|
#endif
|
|
FD_EXCEPT = 1<<2
|
|
};
|
|
|
|
|
|
/**
|
|
* File descriptor event handler
|
|
*
|
|
* @param flags Event flags
|
|
* @param arg Handler argument
|
|
*/
|
|
typedef void (fd_h)(int flags, void *arg);
|
|
|
|
/**
|
|
* Thread-safe signal handler
|
|
*
|
|
* @param sig Signal number
|
|
*/
|
|
typedef void (re_signal_h)(int sig);
|
|
|
|
|
|
int fd_listen(struct re_fhs **fhsp, re_sock_t fd, int flags, fd_h *fh,
|
|
void *arg);
|
|
struct re_fhs *fd_close(struct re_fhs *fhs);
|
|
int fd_setsize(int maxfds);
|
|
|
|
int libre_init(void);
|
|
void libre_close(void);
|
|
void libre_exception_btrace(bool enable);
|
|
|
|
int re_main(re_signal_h *signalh);
|
|
void re_cancel(void);
|
|
int re_debug(struct re_printf *pf, void *unused);
|
|
int re_nfds(void);
|
|
|
|
int re_alloc(struct re **rep);
|
|
int re_thread_attach(struct re *re);
|
|
void re_thread_detach(void);
|
|
|
|
int re_thread_init(void);
|
|
void re_thread_close(void);
|
|
void re_thread_enter(void);
|
|
void re_thread_leave(void);
|
|
int re_thread_check(bool debug);
|
|
int re_thread_async_init(uint16_t workers);
|
|
void re_thread_async_close(void);
|
|
int re_thread_async(re_async_work_h *work, re_async_h *cb, void *arg);
|
|
int re_thread_async_main(re_async_work_h *work, re_async_h *cb, void *arg);
|
|
int re_thread_async_id(intptr_t id, re_async_work_h *work, re_async_h *cb,
|
|
void *arg);
|
|
int re_thread_async_main_id(intptr_t id, re_async_work_h *work, re_async_h *cb,
|
|
void *arg);
|
|
void re_thread_async_cancel(intptr_t id);
|
|
void re_thread_async_main_cancel(intptr_t id);
|
|
|
|
void re_set_mutex(void *mutexp);
|
|
void re_fhs_flush(void);
|
|
|
|
struct tmrl *re_tmrl_get(void);
|
|
|
|
/** Polling methods */
|
|
enum poll_method {
|
|
METHOD_NULL = 0,
|
|
METHOD_SELECT,
|
|
METHOD_EPOLL,
|
|
METHOD_KQUEUE,
|
|
/* sep */
|
|
METHOD_MAX
|
|
};
|
|
|
|
int poll_method_set(enum poll_method method);
|
|
enum poll_method poll_method_get(void);
|
|
enum poll_method poll_method_best(void);
|
|
const char *poll_method_name(enum poll_method method);
|
|
int poll_method_type(enum poll_method *method, const struct pl *name);
|