ascii-chat 0.11.33
Video chat in your terminal
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 239 of file network/rate_limit/memory.c.

239 {
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, "rate_limiter") != 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}
#define SAFE_FREE(ptr)
Definition common.h:376
#define SAFE_MALLOC(size, cast)
Definition common.h:264
#define log_error(...)
Log an ERROR message.
Definition log/log.h:587
#define log_debug(...)
Log a DEBUG message.
Definition log/log.h:548
int mutex_init(mutex_t *mutex, const char *name)
Initialize a mutex with a name.
Definition threading.c:16
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 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().