|
cwist
Modern C web framework with libttak runtime
|
session_manager.h interface. More...
#include <stddef.h>#include <stdint.h>
Go to the source code of this file.
Classes | |
| struct | session_rc_header |
| Reference-count header placed immediately before shared session payloads. More... | |
| struct | session_arena |
| Linear arena used for fast request-lifetime allocations. More... | |
| struct | session_manager |
| Top-level session allocator state owned by a request context. More... | |
Functions | |
| void | session_arena_init (struct session_arena *arena, uint8_t *buffer, size_t capacity) |
| Initialize a session arena. | |
| void * | session_arena_alloc (struct session_arena *arena, size_t size) |
| Allocate from a session arena. | |
| void | session_arena_reset (struct session_arena *arena) |
| Reset a session arena. | |
| void | session_rc_init (struct session_rc_header *header, void(*destructor)(void *)) |
| Initialize reference-counted header. | |
| void * | session_shared_alloc (size_t payload_size, void(*destructor)(void *)) |
| Allocate shared session memory. | |
| void | session_shared_inc (void *payload) |
| Increment reference count. | |
| void | session_shared_dec (void *payload) |
| Decrement reference count and free if zero. | |
| void | session_manager_init (struct session_manager *manager, uint8_t *buffer, size_t capacity) |
| Initialize session manager. | |
| void | session_manager_reset (struct session_manager *manager) |
| Reset session manager. | |
session_manager.h interface.
Definition in file session_manager.h.
| void * session_arena_alloc | ( | struct session_arena * | arena, |
| size_t | size | ||
| ) |
Allocate from a session arena.
Allocate from a session arena.
| arena | Arena that owns the backing storage. |
| size | Number of bytes requested before alignment. |
Definition at line 30 of file session_manager.c.
References session_arena::buffer, cap, session_arena::capacity, and session_arena::offset.
| void session_arena_init | ( | struct session_arena * | arena, |
| uint8_t * | buffer, | ||
| size_t | capacity | ||
| ) |
Initialize a session arena.
Initialize a session arena.
| arena | Arena to initialize. |
| buffer | Backing storage to consume sequentially. |
| capacity | Total number of bytes available in buffer. |
Definition at line 17 of file session_manager.c.
References session_arena::buffer, session_arena::capacity, and session_arena::offset.
| void session_arena_reset | ( | struct session_arena * | arena | ) |
Reset a session arena.
Reset a session arena.
| arena | Arena to reset. |
Definition at line 46 of file session_manager.c.
References session_arena::offset.
| void session_manager_init | ( | struct session_manager * | manager, |
| uint8_t * | buffer, | ||
| size_t | capacity | ||
| ) |
Initialize session manager.
Initialize session manager.
| manager | Manager to initialize. |
| buffer | Backing arena storage. |
| capacity | Size of buffer in bytes. |
Definition at line 116 of file session_manager.c.
References cap, and session_arena_init().
| void session_manager_reset | ( | struct session_manager * | manager | ) |
Reset session manager.
Reset session manager.
| manager | Manager whose arena should be rewound. |
Definition at line 125 of file session_manager.c.
References cap, and session_arena_reset().
| void session_rc_init | ( | struct session_rc_header * | header, |
| void(*)(void *) | destructor | ||
| ) |
Initialize reference-counted header.
Initialize reference-counted header.
| header | Header that precedes the payload. |
| destructor | Optional callback run just before the payload is freed. |
Definition at line 56 of file session_manager.c.
References session_rc_header::destructor, and session_rc_header::ref_count.
Allocate shared session memory.
Allocate shared session memory.
| payload_size | Number of bytes visible to callers. |
| destructor | Optional callback invoked before memory is released. |
Definition at line 68 of file session_manager.c.
References cap, cwist_alloc(), session_rc_header::destructor, and session_rc_init().
Decrement reference count and free if zero.
Decrement reference count and free if zero.
| payload | Payload returned by session_shared_alloc(). |
Definition at line 96 of file session_manager.c.
References cap, cwist_free(), session_rc_header::destructor, and session_rc_header::ref_count.
Increment reference count.
Increment reference count.
| payload | Payload returned by session_shared_alloc(). |
Definition at line 84 of file session_manager.c.
References cap, and session_rc_header::ref_count.