cwist
Modern C web framework with libttak runtime
Loading...
Searching...
No Matches
session_manager.h
Go to the documentation of this file.
1
4#ifndef cwist_session_manager_h
5#define cwist_session_manager_h
6
7#include <stddef.h>
8#include <stdint.h>
9
11 uint32_t ref_count;
12 void (*destructor)(void *);
13};
14
16 uint8_t *buffer;
17 size_t capacity;
18 size_t offset;
19};
20
24
28void session_arena_init(struct session_arena *arena, uint8_t *buffer, size_t capacity);
29
33void *session_arena_alloc(struct session_arena *arena, size_t size);
34
38void session_arena_reset(struct session_arena *arena);
39
43void session_rc_init(struct session_rc_header *header, void (*destructor)(void *));
44
48void *session_shared_alloc(size_t payload_size, void (*destructor)(void *));
49
53void session_shared_inc(void *payload);
54
58void session_shared_dec(void *payload);
59
63void session_manager_init(struct session_manager *manager, uint8_t *buffer, size_t capacity);
64
68void session_manager_reset(struct session_manager *manager);
69
70#endif
void session_arena_init(struct session_arena *arena, uint8_t *buffer, size_t capacity)
Initialize a session arena.
void session_shared_dec(void *payload)
Decrement reference count and free if zero.
void session_manager_reset(struct session_manager *manager)
Reset session manager.
void * session_shared_alloc(size_t payload_size, void(*destructor)(void *))
Allocate shared session memory.
void session_arena_reset(struct session_arena *arena)
Reset a session arena.
void * session_arena_alloc(struct session_arena *arena, size_t size)
Allocate from a session arena.
void session_shared_inc(void *payload)
Increment reference count.
void session_manager_init(struct session_manager *manager, uint8_t *buffer, size_t capacity)
Initialize session manager.
void session_rc_init(struct session_rc_header *header, void(*destructor)(void *))
Initialize reference-counted header.
Linear arena used for fast request-lifetime allocations.
Top-level session allocator state owned by a request context.
struct session_arena request_arena
Reference-count header placed immediately before shared session payloads.
void(* destructor)(void *)