KEEL 1.0.0
Minimal C11 HTTP client/server library built on epoll/kqueue/io_uring/poll
Loading...
Searching...
No Matches
connection.h
Go to the documentation of this file.
1#ifndef KEEL_CONNECTION_H
2#define KEEL_CONNECTION_H
3
4#include <keel/allocator.h>
5#include <keel/chunked.h>
6#include <keel/file_io.h>
7#include <keel/request.h>
8#include <keel/response.h>
9#include <keel/parser.h>
10#include <keel/router.h>
11#include <stddef.h>
12#include <stdint.h>
13
15#define KL_READ_BUF_SIZE 8192
16
17typedef struct KlTls KlTls;
21
33
85
93
101int kl_conn_pool_init(KlConnPool *pool, int capacity, KlAllocator *alloc);
102
105
108
111
117
123
129
137KlConnState kl_conn_on_file_complete(KlConn *c, ssize_t result, int zero_copy);
138
140uint64_t kl_monotonic_ms(void);
141
142#endif
KlConnState kl_conn_on_handshake(KlConn *c)
Process TLS handshake on a connection.
KlConn * kl_conn_acquire(KlConnPool *pool, int fd)
Acquire a connection slot from the pool. Returns NULL if full.
KlConnState
Definition connection.h:22
@ KL_CONN_PROCESSING
Definition connection.h:26
@ KL_CONN_WEBSOCKET
Definition connection.h:28
@ KL_CONN_SUSPENDED
Definition connection.h:30
@ KL_CONN_CLOSED
Definition connection.h:31
@ KL_CONN_READING
Definition connection.h:24
@ KL_CONN_READING_BODY
Definition connection.h:25
@ KL_CONN_TLS_HANDSHAKE
Definition connection.h:23
@ KL_CONN_SENDING
Definition connection.h:27
@ KL_CONN_HTTP2
Definition connection.h:29
KlConnState kl_conn_on_writable(KlConn *c)
Process writable event (send response data).
uint64_t kl_monotonic_ms(void)
Monotonic clock in milliseconds (for timeout tracking).
void kl_conn_pool_free(KlConnPool *pool)
Free all pool resources.
int kl_conn_pool_init(KlConnPool *pool, int capacity, KlAllocator *alloc)
Initialize a pre-allocated connection pool.
KlConnState kl_conn_on_file_complete(KlConn *c, ssize_t result, int zero_copy)
Handle async file I/O completion (called from server tick loop).
void kl_conn_release(KlConnPool *pool, KlConn *c)
Release a connection back to the pool (closes fd).
KlConnState kl_conn_on_readable(KlConn *c, KlRouter *router)
Process readable data on a connection (parse headers/body, invoke handler).
#define KL_MAX_PARAMS
Maximum number of route parameters.
Definition request.h:22
Bring-your-own allocator vtable.
Definition allocator.h:12
An in-flight async operation that suspends a connection.
Definition async.h:29
Definition chunked.h:19
Definition connection.h:86
KlConn * free_list
Definition connection.h:90
int active_count
Definition connection.h:89
int capacity
Definition connection.h:88
KlConn * conns
Definition connection.h:87
KlAllocator * alloc
Definition connection.h:91
Definition connection.h:34
size_t file_io_sent
Definition connection.h:76
int tls_want
Definition connection.h:61
KlRoute * route
Definition connection.h:50
KlParam params[KL_MAX_PARAMS]
Definition connection.h:51
size_t read_cap
Definition connection.h:41
KlConnState state
Definition connection.h:36
uint64_t suspend_start_ms
Definition connection.h:71
char * read_buf
Definition connection.h:39
size_t max_body_size
Definition connection.h:68
size_t hdr_sent
Definition connection.h:48
KlChunkedDecoder chunked_dec
Definition connection.h:58
void(* access_log)(const KlRequest *req, int status, size_t body_bytes, double duration_ms, void *user_data)
Definition connection.h:78
int route_result
Definition connection.h:53
KlTls * tls
Definition connection.h:60
int file_io_phase
Definition connection.h:74
uint64_t body_start_ms
Definition connection.h:57
KlRequest req
Definition connection.h:44
size_t max_header_size
Definition connection.h:42
size_t file_io_len
Definition connection.h:75
KlFileIO * file_io
Definition connection.h:73
size_t read_len
Definition connection.h:40
KlResponse res
Definition connection.h:45
KlH2ServerConfig * h2_config
Definition connection.h:66
KlH2ServerConn * h2
Definition connection.h:65
KlWsServerConn * ws
Definition connection.h:63
uint64_t request_start_ms
Definition connection.h:56
void * access_log_data
Definition connection.h:81
struct KlAsyncOp * async_op
Definition connection.h:70
KlRouter * router
Definition connection.h:67
int num_params
Definition connection.h:52
KlAllocator * alloc
Definition connection.h:37
KlParser * parser
Definition connection.h:46
int fd
Definition connection.h:35
struct KlConn * next_free
Definition connection.h:83
uint64_t last_active_ms
Definition connection.h:55
Definition file_io.h:16
Definition h2_server.h:74
Definition h2_server.h:101
Definition request.h:14
Definition parser.h:18
Definition request.h:26
Definition response.h:21
Definition router.h:22
Definition router.h:42
Definition tls.h:27
Definition websocket_server.h:46