#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