ascii-chat 0.6.0
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)
 Create memory backend instance.
 

Variables

const rate_limiter_backend_ops_t memory_backend_ops
 Memory backend operations vtable.
 

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  )

Create memory backend instance.

Returns
Backend instance or NULL on failure

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

238 {
240 if (!backend) {
241 log_error("Failed to allocate memory backend");
242 return NULL;
243 }
244
245 memset(backend, 0, sizeof(*backend));
246
247 if (mutex_init(&backend->lock) != 0) {
248 log_error("Failed to initialize mutex");
249 SAFE_FREE(backend);
250 return NULL;
251 }
252
253 log_debug("Memory rate limiter backend initialized");
254 return backend;
255}
#define SAFE_FREE(ptr)
Definition common.h:320
#define SAFE_MALLOC(size, cast)
Definition common.h:208
#define log_error(...)
Log an ERROR message.
#define log_debug(...)
Log a DEBUG message.
int mutex_init(mutex_t *mutex)
Initialize a mutex.
Memory backend data.
mutex_t lock
Mutex for thread safety.

References memory_backend_t::lock, log_debug, log_error, mutex_init(), SAFE_FREE, and SAFE_MALLOC.

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,
}

Memory backend operations vtable.

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

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

Referenced by rate_limiter_create_memory().