Csilk 0.2.1
A lightweight, high-performance C HTTP web framework
Loading...
Searching...
No Matches
context_internal.h
Go to the documentation of this file.
1
28#ifndef CSILK_CONTEXT_INTERNAL_H
29#define CSILK_CONTEXT_INTERNAL_H
30
31#include <setjmp.h>
32#include <uv.h>
33
34#include "csilk/csilk.h"
35
47 char* method;
54 char* path;
55 const char* input_type;
57 const char* output_type;
59 const char* summary;
60 const char* description;
63 const char* perm_required;
65 const char* perm_resource;
67};
68typedef struct csilk_method_handler_s csilk_method_handler_t;
69
77typedef struct csilk_storage_item_s {
78 char* key;
79 void* value;
81 struct csilk_storage_item_s* next;
84
108 /* === Handler Chain State === */
116 /* === Error Recovery (setjmp/longjmp) === */
117 jmp_buf jump_buffer;
123 /* === Memory Management === */
129 /* === Request Data === */
134 /* === Response Data === */
139 /* === URL Path Parameters === */
147 /* === Protocol Mode Flags === */
152 int is_sse;
159 void (*on_ws_message)(csilk_ctx_t* c, const uint8_t* payload, size_t len, int opcode);
160
162 void (*on_ws_send)(csilk_ctx_t* c, const uint8_t* payload, size_t len, int opcode);
163
164 /* === Pluggable Driver Pointers === */
179 /* === Simple Key-Value Storage (arena-backed linked list) === */
187 /* === HTTP/2 Stream Support === */
188 int32_t stream_id;
189 struct csilk_ctx_s*
192 /* === Internal I/O State === */
197 uv_work_t work_req;
209 /* === Zero-Copy File Serving (sendfile) === */
213 size_t file_offset;
215 size_t file_size;
218 csilk_method_handler_t*
225 char request_id[37];
226};
227
229void _csilk_ctx_init(csilk_ctx_t* c, struct csilk_server_s* s, void* client);
230
231#endif /* CSILK_CONTEXT_INTERNAL_H */
Arena allocator for request-scoped memory.
Definition arena.c:101
const char * input_type
Definition context_internal.h:55
const char * perm_required
Definition context_internal.h:63
void * value
Definition context_internal.h:79
csilk_handler_t * handlers
Definition context_internal.h:48
struct csilk_method_handler_s * next
Definition context_internal.h:50
const char * description
Definition context_internal.h:60
const char * output_type
Definition context_internal.h:57
void _csilk_ctx_init(csilk_ctx_t *c, struct csilk_server_s *s, void *client)
Internal context initialiser.
Definition context.c:853
const char * perm_resource
Definition context_internal.h:65
const char * summary
Definition context_internal.h:59
struct csilk_storage_item_s * next
Definition context_internal.h:81
char * path
Definition context_internal.h:54
char * key
Definition context_internal.h:78
char * method
Definition context_internal.h:47
Method-specific handler mapping with OpenAPI metadata and permission info.
Definition context_internal.h:46
A single key-value item in the context's custom storage linked list.
Definition context_internal.h:77
High-performance C web framework — main public API header.
A single URL path parameter extracted from a route pattern.
Definition csilk.h:213
Parsed HTTP request.
Definition csilk.h:174
Mutable HTTP response.
Definition csilk.h:194
void(* csilk_handler_t)(csilk_ctx_t *c)
Function pointer for route handlers and middleware.
Definition csilk.h:120
#define CSILK_MAX_PARAMS
Maximum number of URL path parameters that can be extracted from a single request....
Definition csilk.h:39
Main Server structure — represents the core HTTP server instance.
Definition server_internal.h:54
Virtual function table implemented by each cipher backend.
Definition cipher.h:50
Pluggable cryptographic primitive driver.
Definition csilk.h:2090
Main Request Context — holds all state for the current HTTP request/response cycle.
Definition context_internal.h:107
csilk_crypto_driver_t * crypto_driver
Definition context_internal.h:169
size_t file_offset
Definition context_internal.h:213
void(* on_ws_send)(csilk_ctx_t *c, const uint8_t *payload, size_t len, int opcode)
Definition context_internal.h:162
void(* on_ws_message)(csilk_ctx_t *c, const uint8_t *payload, size_t len, int opcode)
Definition context_internal.h:159
struct csilk_server_s * server
Definition context_internal.h:185
void * _internal_client
Definition context_internal.h:193
int32_t stream_id
Definition context_internal.h:188
size_t file_size
Definition context_internal.h:215
int aborted
Definition context_internal.h:113
csilk_cipher_driver_t * cipher_driver
Definition context_internal.h:173
struct csilk_ctx_s * next_stream
Definition context_internal.h:189
char request_id[37]
Definition context_internal.h:225
csilk_method_handler_t * current_handler
Definition context_internal.h:219
int handler_index
Definition context_internal.h:109
csilk_response_t response
Definition context_internal.h:135
int is_sse
Definition context_internal.h:152
csilk_storage_driver_t * storage_driver
Definition context_internal.h:165
jmp_buf jump_buffer
Definition context_internal.h:117
int has_jump_buffer
Definition context_internal.h:119
csilk_storage_item_t * storage_head
Definition context_internal.h:180
int is_websocket
Definition context_internal.h:148
csilk_handler_t * handlers
Definition context_internal.h:111
int response_started
Definition context_internal.h:204
int is_async
Definition context_internal.h:200
csilk_arena_t * arena
Definition context_internal.h:124
int file_fd
Definition context_internal.h:210
csilk_request_t request
Definition context_internal.h:130
uv_work_t work_req
Definition context_internal.h:197
csilk_param_t params[CSILK_MAX_PARAMS]
Definition context_internal.h:140
int params_count
Definition context_internal.h:144
Pluggable storage driver for context key-value pairs.
Definition csilk.h:95