ascii-chat 0.8.38
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
memory.c File Reference

🧠 In-memory rate limiting backend using uthash More...

Go to the source code of this file.

Data Structures

struct  rate_event_s
 Rate event record in memory. More...
 
struct  memory_backend_t
 Memory backend data. More...
 

Typedefs

typedef struct rate_event_s rate_event_t
 Rate event record in memory.
 

Functions

void * memory_backend_create (void)
 

Variables

const rate_limiter_backend_ops_t memory_backend_ops
 

Detailed Description

🧠 In-memory rate limiting backend using uthash

Thread-safe implementation for ascii-chat server where persistence is not needed.

Definition in file network/rate_limit/memory.c.

Typedef Documentation

◆ rate_event_t

typedef struct rate_event_s rate_event_t

Rate event record in memory.

Function Documentation

◆ memory_backend_create()

void * memory_backend_create ( void  )

Definition at line 239 of file network/rate_limit/memory.c.

239 {
240 memory_backend_t *backend = SAFE_MALLOC(sizeof(memory_backend_t), memory_backend_t *);
241 if (!backend) {
242 log_error("Failed to allocate memory backend");
243 return NULL;
244 }
245
246 memset(backend, 0, sizeof(*backend));
247
248 if (mutex_init(&backend->lock) != 0) {
249 log_error("Failed to initialize mutex");
250 SAFE_FREE(backend);
251 return NULL;
252 }
253
254 log_debug("Memory rate limiter backend initialized");
255 return backend;
256}
Memory backend data.
mutex_t lock
Mutex for thread safety.
int mutex_init(mutex_t *mutex)
Definition threading.c:16

References memory_backend_t::lock, and mutex_init().

Referenced by rate_limiter_create_memory().

Variable Documentation

◆ memory_backend_ops

const rate_limiter_backend_ops_t memory_backend_ops
Initial value:
= {
.check = memory_check,
.record = memory_record,
.cleanup = memory_cleanup,
.destroy = memory_destroy,
}

Definition at line 258 of file network/rate_limit/memory.c.

258 {
259 .check = memory_check,
260 .record = memory_record,
261 .cleanup = memory_cleanup,
262 .destroy = memory_destroy,
263};

Referenced by rate_limiter_create_memory().