Web/app.h
2025-09-15 12:57:54 -05:00

52 lines
1.3 KiB
C

#ifndef APP_H
#define APP_H
#include "context.h"
#include "router.h"
#include "reactor/pool.h"
#include "reactor/epoll.h"
typedef struct app app_t;
typedef void (*app_handler_t)(context_t *ctx);
// Web application
struct app {
runtime_t *rt;
pool_t *pool;
router_t *router;
int listen_fd;
int port;
// Configuration
int max_conns;
size_t read_buf_size;
size_t write_buf_size;
size_t arena_size;
// Default handlers
app_handler_t not_found;
app_handler_t error_handler;
};
// App lifecycle
app_t* app_new(void);
void app_free(app_t *a);
int app_listen(app_t *a, int port);
int app_run(app_t *a);
// Route registration
void app_get(app_t *a, const char *path, app_handler_t handler);
void app_post(app_t *a, const char *path, app_handler_t handler);
void app_put(app_t *a, const char *path, app_handler_t handler);
void app_delete(app_t *a, const char *path, app_handler_t handler);
void app_route(app_t *a, const char *method, const char *path, app_handler_t handler);
// Configuration
void app_set_max_conns(app_t *a, int max);
void app_set_buffer_sizes(app_t *a, size_t read_size, size_t write_size);
void app_set_arena_size(app_t *a, size_t size);
void app_set_not_found(app_t *a, app_handler_t handler);
void app_set_error(app_t *a, app_handler_t handler);
#endif // APP_H