ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
session_log_buffer.h File Reference

Thread-safe circular log buffer for session screens (status, splash) More...

Go to the source code of this file.

Data Structures

struct  session_log_entry_t
 Single log entry with sequence number for ordering. More...
 

Macros

#define SESSION_LOG_BUFFER_SIZE   8192
 
#define SESSION_LOG_LINE_MAX   1024
 

Typedefs

typedef struct session_log_buffer session_log_buffer_t
 Opaque handle to log buffer instance.
 

Functions

session_log_buffer_t * session_log_buffer_create (void)
 Create a new session log buffer instance.
 
void session_log_buffer_destroy (session_log_buffer_t *buf)
 Cleanup session log buffer instance.
 
void session_log_buffer_clear (session_log_buffer_t *buf)
 Clear all log entries from buffer.
 
void session_log_buffer_append (session_log_buffer_t *buf, const char *message)
 Append a log message to the buffer.
 
size_t session_log_buffer_get_recent (session_log_buffer_t *buf, session_log_entry_t *out_entries, size_t max_count)
 Get recent log entries from buffer.
 

Detailed Description

Thread-safe circular log buffer for session screens (status, splash)

Provides a reusable log capture mechanism for session screens that need to display logs alongside fixed header content without terminal scrolling.

Thread-safe for concurrent append operations. Designed for use by:

  • Server status screen (live log feed under status header)
  • Splash screen (logs under animated ASCII art)
Author
Zachary Fogg me@zf.nosp@m.o.gg
Date
February 2026

Definition in file include/ascii-chat/session/session_log_buffer.h.

Macro Definition Documentation

◆ SESSION_LOG_BUFFER_SIZE

#define SESSION_LOG_BUFFER_SIZE   8192

◆ SESSION_LOG_LINE_MAX

#define SESSION_LOG_LINE_MAX   1024

Typedef Documentation

◆ session_log_buffer_t

Opaque handle to log buffer instance.

Definition at line 38 of file include/ascii-chat/session/session_log_buffer.h.

Function Documentation

◆ session_log_buffer_append()

void session_log_buffer_append ( session_log_buffer_t *  buf,
const char *  message 
)

Append a log message to the buffer.

Thread-safe. Called from logging system to capture messages. Message is copied into circular buffer (oldest entry overwritten if full).

Parameters
bufBuffer instance (must not be NULL)
messageLog message text (already formatted with colors)

Definition at line 93 of file platform/wasm/stubs/log.c.

93 {
94 (void)buf;
95 (void)message;
96 // No-op - session log buffer not used in WASM
97}

References atomic_fetch_add_u64(), atomic_load_u64(), atomic_store_u64(), session_log_buffer::entries, session_log_entry_t::message, session_log_buffer::mutex, mutex_lock, mutex_unlock, SAFE_STRNCPY, session_log_entry_t::sequence, session_log_buffer::sequence, SESSION_LOG_BUFFER_SIZE, SESSION_LOG_LINE_MAX, and session_log_buffer::write_pos.

◆ session_log_buffer_clear()

void session_log_buffer_clear ( session_log_buffer_t *  buf)

Clear all log entries from buffer.

Thread-safe. Resets buffer to empty state, discarding all captured logs. Useful for clearing initialization logs before screen starts rendering.

Parameters
bufBuffer instance (must not be NULL)

Definition at line 88 of file platform/wasm/stubs/log.c.

88 {
89 (void)buf;
90 // No-op - session log buffer not used in WASM
91}

References atomic_store_u64(), session_log_buffer::entries, session_log_entry_t::message, session_log_buffer::mutex, mutex_lock, mutex_unlock, session_log_entry_t::sequence, session_log_buffer::sequence, SESSION_LOG_BUFFER_SIZE, and session_log_buffer::write_pos.

Referenced by terminal_screen_log_clear().

◆ session_log_buffer_create()

session_log_buffer_t * session_log_buffer_create ( void  )

Create a new session log buffer instance.

Allocates and initializes a circular buffer for log capture. Caller is responsible for calling session_log_buffer_destroy() when done.

Returns
Pointer to new buffer instance, or NULL on allocation failure

Definition at line 79 of file platform/wasm/stubs/log.c.

79 {
80 return NULL; // No-op - session log buffer not used in WASM
81}

References atomic_store_u64(), session_log_buffer::mutex, mutex_init(), SAFE_CALLOC, session_log_buffer::sequence, and session_log_buffer::write_pos.

Referenced by terminal_screen_log_init().

◆ session_log_buffer_destroy()

void session_log_buffer_destroy ( session_log_buffer_t *  buf)

Cleanup session log buffer instance.

Frees the buffer and all internal resources. Safe to call with NULL.

Parameters
bufBuffer instance to destroy (can be NULL)

Definition at line 83 of file platform/wasm/stubs/log.c.

83 {
84 (void)buf;
85 // No-op - session log buffer not used in WASM
86}

References session_log_buffer::mutex, mutex_destroy(), and SAFE_FREE.

Referenced by terminal_screen_log_destroy().

◆ session_log_buffer_get_recent()

size_t session_log_buffer_get_recent ( session_log_buffer_t *  buf,
session_log_entry_t *  out_entries,
size_t  max_count 
)

Get recent log entries from buffer.

Thread-safe. Copies up to max_count recent entries into out_entries. Entries are returned in chronological order (oldest first).

Parameters
bufBuffer instance (must not be NULL)
out_entriesOutput array to fill with log entries
max_countMaximum number of entries to return
Returns
Number of entries actually copied (may be less than max_count)

Definition at line 99 of file platform/wasm/stubs/log.c.

99 {
100 (void)buf;
101 (void)out_entries;
102 (void)max_count;
103 return 0; // No entries in WASM
104}

References atomic_load_u64(), session_log_buffer::entries, session_log_buffer::mutex, mutex_lock, mutex_unlock, session_log_entry_t::sequence, session_log_buffer::sequence, SESSION_LOG_BUFFER_SIZE, write_pos, and session_log_buffer::write_pos.

Referenced by log_search_gather_and_filter_logs(), and terminal_screen_render().