ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
lifecycle.h
Go to the documentation of this file.
1#pragma once
2
3#include <ascii-chat/atomic.h>
4#include <stdbool.h>
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
47
53
66
68#define LIFECYCLE_INIT \
69 { \
70 .state = {.impl = LIFECYCLE_UNINITIALIZED}, .sync_type = LIFECYCLE_SYNC_NONE, .sync = {0} \
71 }
72
74#define LIFECYCLE_INIT_MUTEX(m) \
75 { \
76 .state = {.impl = LIFECYCLE_UNINITIALIZED}, .sync_type = LIFECYCLE_SYNC_MUTEX, .sync = {.mutex = (m) } \
77 }
78
80#define LIFECYCLE_INIT_RWLOCK(r) \
81 { \
82 .state = {.impl = LIFECYCLE_UNINITIALIZED}, .sync_type = LIFECYCLE_SYNC_RWLOCK, .sync = {.rwlock = (r) } \
83 }
84
96bool lifecycle_init(lifecycle_t *lc, const char *name);
97
116
127
137
149
162
172
181bool lifecycle_is_dead(const lifecycle_t *lc);
182
195
215
225
248#ifdef __cplusplus
249}
250#endif
⚛️ Atomic operations abstraction layer with debug tracking
bool lifecycle_destroy_once(lifecycle_t *lc)
Definition lifecycle.c:193
void lifecycle_init_abort(lifecycle_t *lc)
Definition lifecycle.c:99
lifecycle_sync_type_t
Definition lifecycle.h:48
@ LIFECYCLE_SYNC_NONE
No sync primitive.
Definition lifecycle.h:49
@ LIFECYCLE_SYNC_MUTEX
Contains mutex_t pointer.
Definition lifecycle.h:50
@ LIFECYCLE_SYNC_RWLOCK
Contains rwlock_t pointer.
Definition lifecycle.h:51
bool lifecycle_shutdown_forever(lifecycle_t *lc)
Definition lifecycle.c:133
void lifecycle_destroy_commit(lifecycle_t *lc)
Definition lifecycle.c:236
lifecycle_state_t
Definition lifecycle.h:40
@ LIFECYCLE_DESTROYING
destroy_once winner in progress; losers skip
Definition lifecycle.h:45
@ LIFECYCLE_INITIALIZING
init_once winner in progress; losers spin
Definition lifecycle.h:42
@ LIFECYCLE_INITIALIZED
Ready to use.
Definition lifecycle.h:43
@ LIFECYCLE_DEAD
Permanently shut down; no re-init.
Definition lifecycle.h:44
@ LIFECYCLE_UNINITIALIZED
Not yet initialized (zero = default)
Definition lifecycle.h:41
bool lifecycle_is_initialized(const lifecycle_t *lc)
Definition lifecycle.c:155
void lifecycle_init_commit(lifecycle_t *lc)
Definition lifecycle.c:90
bool lifecycle_init(lifecycle_t *lc, const char *name)
Definition lifecycle.c:26
bool lifecycle_reset(lifecycle_t *lc)
Definition lifecycle.c:167
bool lifecycle_is_dead(const lifecycle_t *lc)
Definition lifecycle.c:161
bool lifecycle_shutdown(lifecycle_t *lc)
Definition lifecycle.c:108
bool lifecycle_init_once(lifecycle_t *lc)
Definition lifecycle.c:52
Cross-platform mutex interface for ascii-chat.
Cross-platform read-write lock interface for ascii-chat.
ClangTool/LibTooling compatibility shim for stdbool.h.
Atomic value wrapper for integral/boolean types.
Definition atomic.h:76
rwlock_t * rwlock
Pointer to rwlock (if sync_type == LIFECYCLE_SYNC_RWLOCK)
Definition lifecycle.h:63
atomic_t state
lifecycle_state_t enum value
Definition lifecycle.h:59
mutex_t * mutex
Pointer to mutex (if sync_type == LIFECYCLE_SYNC_MUTEX)
Definition lifecycle.h:62
lifecycle_sync_type_t sync_type
Type of sync primitive (if any)
Definition lifecycle.h:60
Mutex type (POSIX: pthread_mutex_t with debug tracking)
Read-write lock type (POSIX: pthread_rwlock_t with debug tracking)
Definition rwlock.h:61