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

38 lines
950 B
C

#ifndef POOL_H
#define POOL_H
#include "conn.h"
#include "epoll.h"
// Connection pool
struct pool {
conn_t *conns; // array of connections
int max_conns; // pool size
conn_t *free_list; // available connections
runtime_t *rt; // epoll runtime
// Buffer configuration
size_t read_buf_size; // per-conn read buffer
size_t write_buf_size; // per-conn write buffer
size_t arena_size; // per-request arena size
// Callbacks
void (*on_request)(conn_t *c); // request complete
void (*on_close)(conn_t *c); // connection closed
};
// Pool management
pool_t* pool_new(runtime_t *rt, int max_conns);
void pool_free(pool_t *p);
conn_t* pool_get(pool_t *p);
void pool_put(pool_t *p, conn_t *c);
// Accessors
runtime_t* pool_runtime(pool_t *p);
// Internal handlers
void pool_handle_request(pool_t *p, conn_t *c);
void pool_handle_close(pool_t *p, conn_t *c);
#endif // POOL_H