![]() |
Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
|
General-purpose building blocks and platform abstraction layer. More...
Classes | |
class | AlignedStorage |
Fixed-size maximum-aligned storage. More... | |
union | AlignMax |
Maximum aligned data unit. More... | |
class | AlignOps |
Alignment operations. More... | |
class | ArenaAllocation |
Allocation policy for objects allocated using IArena. More... | |
class | Array |
Dynamic array. More... | |
class | Atomic |
Atomic integer. Provides sequential consistency. For a fine-grained memory order control, see AtomicOps. More... | |
class | Atomic< T * > |
Atomic pointer. Provides sequential consistency. For a fine-grained memory order control, see AtomicOps. More... | |
class | AtomicOps |
Atomic operations. This wrapper exists because on non-C11 compilers we use another implementation. More... | |
class | Buffer |
Fixed-size dynamically-allocated byte buffer. More... | |
class | Cond |
Condition variable. More... | |
class | CrashHandler |
Crash handler. More... | |
struct | CsvConfig |
CSV write configuration. More... | |
class | CsvDumper |
Asynchronous CSV dumper. Writes entries to CSV file from background thread. Recommended to be used from a single thread. More... | |
struct | CsvEntry |
CSV entry. Corresponds to one line in output file. More... | |
class | CustomAllocation |
Allocation policy for objects with custom deallocation function. More... | |
class | EndianOps |
Endian operations. More... | |
class | errno_to_str |
Convert errno to string. More... | |
class | GlobalDestructor |
Allows to determine if global library destruction was initiated. More... | |
class | Hashmap |
Intrusive hash table. More... | |
struct | HashmapData |
Hashmap node internal data. More... | |
class | HashmapImpl |
Intrusive hash table internal implementation. More... | |
class | HashmapNode |
Base class for Hashmap element. More... | |
class | HeapArena |
Heap arena implementation. More... | |
class | IArena |
Memory arena interface. More... | |
class | IPool |
Memory pool interface. More... | |
class | LimitedArena |
Decorator around IArena to make it memory limited. More... | |
class | LimitedPool |
Decorator around IPool to make it memory limited. More... | |
class | List |
Intrusive doubly-linked list. More... | |
struct | ListData |
List node internal data. More... | |
class | ListImpl |
Intrusive doubly-linked list implementation class. Handles List infrastructure independent of templated type for List. Ownership handling is left to the main List class. More... | |
class | ListNode |
Base class for List element. More... | |
class | LogBackend |
Log backend. More... | |
class | Logger |
Logger. More... | |
struct | LogMessage |
Log message. More... | |
class | ManualAllocation |
Allocation policy for objects that does not have automatic deallocation. More... | |
class | MemoryLimiter |
Memory limiter. This class can be used to keep track of memory being consumed. This is done through the acquire and release methods. The class is used within classes such as LimitedPool, LimitedArena. More... | |
class | MemoryOps |
Memory operations. More... | |
class | MovStats |
Rolling window moving average and variance. More... | |
class | MpscQueue |
Thread-safe lock-free node-based intrusive multi-producer single-consumer queue. More... | |
struct | MpscQueueData |
MpscQueue node internal data. More... | |
class | MpscQueueImpl |
Multi-producer single-consumer queue internal implementation class. More... | |
class | MpscQueueNode |
Base class for MpscQueue element. More... | |
class | Mutex |
Mutex. More... | |
class | NonCopyable |
Base class for non-copyable objects. More... | |
class | NoopArenaImpl |
Arena implementation that just fails all allocations. Can be used with containers that have embedded capacity and arena, but we want them to use only embedded capacity. More... | |
struct | NoOwnership |
No ownership. More... | |
class | Optional |
Optionally constructed object. More... | |
class | PoolAllocation |
Allocation policy for objects allocated using IPool. More... | |
class | Printer |
Printer. More... | |
class | RateLimiter |
Rate limiter. More... | |
class | RefCounted |
Base class for object with reference counter. More... | |
class | RefCountedImpl |
Implementation class for reference counter. More... | |
struct | RefCountedOwnership |
Reference counted object ownership. More... | |
class | RingQueue |
Queue on continuous memory buffer. More... | |
class | ScopedLock |
RAII mutex lock. More... | |
class | ScopedPtr |
Unique ownrship pointer. More... | |
class | Semaphore |
Semaphore. More... | |
class | Seqlock |
Seqlock. More... | |
class | SeqlockImpl |
Seqlock implementation class. More... | |
class | SharedPtr |
Shared ownership intrusive pointer. More... | |
class | Singleton |
Singleton. More... | |
class | SlabPool |
Memory pool. More... | |
class | SlabPoolImpl |
Memory pool implementation class. More... | |
class | Slice |
Slice. More... | |
class | SpscByteBuffer |
Thread-safe lock-free single-producer single-consumer circular buffer of byte chunks. More... | |
class | SpscRingBuffer |
Thread-safe lock-free single-producer single-consumer circular buffer of copyable objects. More... | |
class | StringBuffer |
String buffer. More... | |
class | StringBuilder |
String builder. More... | |
class | StringList |
Dynamic list of strings. More... | |
class | TempFile |
Temporary file. More... | |
class | Thread |
Base class for thread objects. More... | |
class | Ticker |
Ticker. More... | |
class | Timer |
Thread-safe timer. More... | |
Typedefs | |
typedef SharedPtr< Buffer > | BufferPtr |
Buffer smart pointer. | |
typedef size_t | hashsum_t |
Hash type. | |
typedef void(* | LogHandler) (const LogMessage &message, void **args) |
Log handler. | |
typedef uint32_t | seqlock_version_t |
Type for holding seqlock value version. Version is changed each value update. May wrap. | |
typedef int64_t | nanoseconds_t |
Nanoseconds. | |
Enumerations | |
enum | HeapArenaGuard { HeapArena_LeakGuard = (1 << 0) , HeapArena_OverflowGuard = (1 << 1) , HeapArena_OwnershipGuard = (1 << 2) } |
Heap arena guards. More... | |
enum | { HeapArena_DefaultGuards = (HeapArena_OverflowGuard | HeapArena_OwnershipGuard) } |
Default heap arena guards. Leak guard is disabled by default, because in C API leaks may be caused by user (e.g. if context wasn't closed before program exit). We don't want to turn bugs in user code into panics, only bugs in our own code should cause panics. More... | |
enum | ColorsMode { ColorsAuto , ColorsEnabled , ColorsDisabled } |
Colors mode. More... | |
enum | LocationMode { LocationEnabled , LocationDisabled } |
Location mode. More... | |
enum | SlabPoolGuard { SlabPool_LeakGuard = (1 << 0) , SlabPool_OverflowGuard = (1 << 1) , SlabPool_OwnershipGuard = (1 << 2) } |
Memory pool guards. More... | |
enum | { SlabPool_DefaultGuards } |
Default memory pool guards. More... | |
enum | Color { Color_None , Color_None , Color_White , Color_Gray , Color_Red , Color_Green , Color_Yellow , Color_Blue , Color_Magenta , Color_Cyan } |
Color ID. More... | |
enum | Color { Color_None , Color_None , Color_White , Color_Gray , Color_Red , Color_Green , Color_Yellow , Color_Blue , Color_Magenta , Color_Cyan } |
Color ID. More... | |
enum | clock_t { ClockMonotonic , ClockUnix } |
Clock identifier. More... | |
enum | { UuidLen = 36 } |
Functions | |
void | print_backtrace_full () |
Print backtrace to stderr. | |
void | print_backtrace_safe () |
Print backtrace to stderr (emergency mode). | |
const char * | demangle_symbol (const char *mangled, char *&demangled_buf, size_t &demangled_size) |
Demangle symbol name. | |
uint16_t | ntoh16u (uint16_t v) |
Network to host byte order (unsigned 16-bit). | |
int16_t | ntoh16s (int16_t v) |
Network to host byte order (signed 16-bit). | |
uint32_t | ntoh32u (uint32_t v) |
Network to host byte order (unsigned 32-bit). | |
int32_t | ntoh32s (int32_t v) |
Network to host byte order (signed 32-bit). | |
uint64_t | ntoh64u (uint64_t v) |
Network to host byte order (unsigned 64-bit). | |
int64_t | ntoh64s (int64_t v) |
Network to host byte order (signed 64-bit). | |
uint16_t | hton16u (uint16_t v) |
Host to network byte order (unsigned 16-bit). | |
int16_t | hton16s (int16_t v) |
Host to network byte order (signed 16-bit). | |
uint32_t | hton32u (uint32_t v) |
Host to network byte order (unsigned 32-bit). | |
int32_t | hton32s (int32_t v) |
Host to network byte order (signed 32-bit). | |
uint64_t | hton64u (uint64_t v) |
Host to network byte order (unsigned 64-bit). | |
int64_t | hton64s (int64_t v) |
Host to network byte order (signed 64-bit). | |
uint32_t | fast_random () |
Get a random integer from a non cryptographically secure, but fast PRNG. Thread-safe. | |
uint32_t | fast_random_range (uint32_t from, uint32_t to) |
Get a random integer from a non cryptographically secure, but fast PRNG. Thread-safe. | |
double | fast_random_gaussian () |
Get a random double from a non cryptographically secure, but fast PRNG. Thread-safe. | |
hashsum_t | hashsum_int (int16_t) |
Compute hash of 16-bit integer. | |
hashsum_t | hashsum_int (uint16_t) |
Compute hash of 16-bit integer. | |
hashsum_t | hashsum_int (int32_t) |
Compute hash of 32-bit integer. | |
hashsum_t | hashsum_int (uint32_t) |
Compute hash of 32-bit integer. | |
hashsum_t | hashsum_int (int64_t) |
Compute hash of 64-bit integer. | |
hashsum_t | hashsum_int (uint64_t) |
Compute hash of 64-bit integer. | |
template<class T > | |
hashsum_t | hashsum_int (T t) |
Compute hash of an integer. This fallback is needed for the cases when the overloads above do not cover all builtin types. E.g. if none of the overloads above covers unsigned long or unsigned long long. | |
hashsum_t | hashsum_str (const char *str) |
Compute hash of zero-terminated string. | |
hashsum_t | hashsum_mem (const void *data, size_t size) |
Compute hash of byte range. | |
void | hashsum_add (hashsum_t &hash, const void *data, size_t size) |
Incrementally compute hash of memory chunks. On first invocation, hash should be zero. | |
void | panic (const char *module, const char *file, int line, const char *format,...) |
Print error message and terminate program gracefully. | |
bool | parse_duration (const char *string, nanoseconds_t &result) |
Parse duration from string. | |
bool | parse_size (const char *string, size_t &result) |
Parse size from string. | |
void | print_memory (const uint8_t *data, size_t size) |
Print memory. | |
void | print_memory (const uint16_t *data, size_t size) |
Print memory. | |
void | print_memory (const uint32_t *data, size_t size) |
Print memory. | |
void | print_memory (const uint64_t *data, size_t size) |
Print memory. | |
void | print_memory (const int8_t *data, size_t size) |
Print memory. | |
void | print_memory (const int16_t *data, size_t size) |
Print memory. | |
void | print_memory (const int32_t *data, size_t size) |
Print memory. | |
void | print_memory (const int64_t *data, size_t size) |
Print memory. | |
void | print_memory (const float *data, size_t size) |
Print memory. | |
void | print_memory (const double *data, size_t size) |
Print memory. | |
void | print_memory_slice (const uint8_t *inner, size_t inner_size, const uint8_t *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const uint16_t *inner, size_t inner_size, const uint16_t *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const uint32_t *inner, size_t inner_size, const uint32_t *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const uint64_t *inner, size_t inner_size, const uint64_t *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const int8_t *inner, size_t inner_size, const int8_t *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const int16_t *inner, size_t inner_size, const int16_t *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const int32_t *inner, size_t inner_size, const int32_t *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const int64_t *inner, size_t inner_size, const int64_t *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const float *inner, size_t inner_size, const float *outer, size_t outer_size) |
Print memory slice. | |
void | print_memory_slice (const double *inner, size_t inner_size, const double *outer, size_t outer_size) |
Print memory slice. | |
bool | seqlock_version_is_valid (seqlock_version_t ver) |
Check if this is a valid seqlock version. Returns false if seqlock version corresponds to intermediate state that should never be seen by seqlock user. | |
template<class T1 , class T2 > | |
bool | operator== (const SharedPtr< T1 > &a, const SharedPtr< T2 > &b) |
Equality check. | |
template<class T1 , class T2 > | |
bool | operator!= (const SharedPtr< T1 > &a, const SharedPtr< T2 > &b) |
Equality check. | |
bool | console_supports_colors () |
Check if colors can be used. | |
void | console_println (const char *format,...) |
Print line. | |
void | console_println (Color color, const char *format,...) |
Print line (with color). | |
void | cpu_relax () |
CPU pause instruction. | |
void | die_fast (int code) |
Terminate program. | |
void | die_gracefully (const char *message, bool full_backtrace) |
Terminate program with error message and backtrace. | |
nanoseconds_t | timestamp (clock_t clock) |
Get current timestamp in nanoseconds. | |
void | sleep_until (clock_t clock, nanoseconds_t timestamp) |
Sleep until the specified absolute time point has been reached. | |
void | sleep_for (clock_t clock, nanoseconds_t duration) |
Sleep specified amount of time. | |
std::tm | nanoseconds_2_tm (nanoseconds_t timestamp) |
Convert timestamp in nanoseconds format to broken-down time. | |
nanoseconds_t | tm_2_nanoseconds (std::tm tm) |
Convert timestamp from broken-down time to nanoseconds format. | |
bool | ns_equal_delta (nanoseconds_t a, nanoseconds_t b, nanoseconds_t delta) |
Compares a and b if they close enough. | |
bool | uuid_generare (char *buf, size_t buf_sz) |
Generate UUID string into given buffer. | |
Variables | |
const nanoseconds_t | Nanosecond = 1 |
One nanosecond represented in nanoseconds. | |
const nanoseconds_t | Microsecond = 1000 * Nanosecond |
One microsecond represented in nanoseconds. | |
const nanoseconds_t | Millisecond = 1000 * Microsecond |
One millisecond represented in nanoseconds. | |
const nanoseconds_t | Second = 1000 * Millisecond |
One second represented in nanoseconds. | |
const nanoseconds_t | Minute = 60 * Second |
One minute represented in nanoseconds. | |
const nanoseconds_t | Hour = 60 * Minute |
One hour represented in nanoseconds. | |
const nanoseconds_t | Day = 24 * Hour |
One day represented in nanoseconds. | |
General-purpose building blocks and platform abstraction layer.
typedef int64_t roc::core::nanoseconds_t |
typedef uint32_t roc::core::seqlock_version_t |
Type for holding seqlock value version. Version is changed each value update. May wrap.
Definition at line 23 of file seqlock_impl.h.
Default memory pool guards.
Definition at line 37 of file slab_pool.h.
Default heap arena guards. Leak guard is disabled by default, because in C API leaks may be caused by user (e.g. if context wasn't closed before program exit). We don't want to turn bugs in user code into panics, only bugs in our own code should cause panics.
Definition at line 37 of file heap_arena.h.
Clock identifier.
Heap arena guards.
Definition at line 24 of file heap_arena.h.
Memory pool guards.
Definition at line 27 of file slab_pool.h.
bool roc::core::console_supports_colors | ( | ) |
Check if colors can be used.
|
inline |
CPU pause instruction.
Definition at line 46 of file cpu_instructions.h.
const char * roc::core::demangle_symbol | ( | const char * | mangled, |
char *& | demangled_buf, | ||
size_t & | demangled_size | ||
) |
Demangle symbol name.
demangled_buf
and demangled_size
specify the buffer for demangled name. When necessary, this function malloc()s or realloc()s demangled_buf
and updates demangled_size
accordingly. The buffer may be NULL. The buffer may be resused across several calls. The user should manually free() the buffer when it's not needed anymore. void roc::core::die_fast | ( | int | code | ) |
Terminate program.
Terminate program with error message and backtrace.
uint32_t roc::core::fast_random | ( | ) |
Get a random integer from a non cryptographically secure, but fast PRNG. Thread-safe.
double roc::core::fast_random_gaussian | ( | ) |
Get a random double from a non cryptographically secure, but fast PRNG. Thread-safe.
uint32_t roc::core::fast_random_range | ( | uint32_t | from, |
uint32_t | to | ||
) |
Get a random integer from a non cryptographically secure, but fast PRNG. Thread-safe.
Incrementally compute hash of memory chunks. On first invocation, hash
should be zero.
hashsum_t roc::core::hashsum_int | ( | int32_t | ) |
Compute hash of 32-bit integer.
hashsum_t roc::core::hashsum_int | ( | int64_t | ) |
Compute hash of 64-bit integer.
hashsum_t roc::core::hashsum_int | ( | uint16_t | ) |
Compute hash of 16-bit integer.
hashsum_t roc::core::hashsum_int | ( | uint32_t | ) |
Compute hash of 32-bit integer.
hashsum_t roc::core::hashsum_int | ( | uint64_t | ) |
Compute hash of 64-bit integer.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
std::tm roc::core::nanoseconds_2_tm | ( | nanoseconds_t | timestamp | ) |
Convert timestamp in nanoseconds format to broken-down time.
bool roc::core::ns_equal_delta | ( | nanoseconds_t | a, |
nanoseconds_t | b, | ||
nanoseconds_t | delta | ||
) |
Compares a and b if they close enough.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Equality check.
Definition at line 142 of file shared_ptr.h.
Equality check.
Definition at line 136 of file shared_ptr.h.
void roc::core::panic | ( | const char * | module, |
const char * | file, | ||
int | line, | ||
const char * | format, | ||
... | |||
) |
Print error message and terminate program gracefully.
bool roc::core::parse_duration | ( | const char * | string, |
nanoseconds_t & | result | ||
) |
Parse duration from string.
Parse size from string.
void roc::core::print_backtrace_full | ( | ) |
Print backtrace to stderr.
void roc::core::print_backtrace_safe | ( | ) |
Print backtrace to stderr (emergency mode).
void roc::core::print_memory_slice | ( | const double * | inner, |
size_t | inner_size, | ||
const double * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const float * | inner, |
size_t | inner_size, | ||
const float * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const int16_t * | inner, |
size_t | inner_size, | ||
const int16_t * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const int32_t * | inner, |
size_t | inner_size, | ||
const int32_t * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const int64_t * | inner, |
size_t | inner_size, | ||
const int64_t * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const int8_t * | inner, |
size_t | inner_size, | ||
const int8_t * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const uint16_t * | inner, |
size_t | inner_size, | ||
const uint16_t * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const uint32_t * | inner, |
size_t | inner_size, | ||
const uint32_t * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const uint64_t * | inner, |
size_t | inner_size, | ||
const uint64_t * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
void roc::core::print_memory_slice | ( | const uint8_t * | inner, |
size_t | inner_size, | ||
const uint8_t * | outer, | ||
size_t | outer_size | ||
) |
Print memory slice.
|
inline |
Check if this is a valid seqlock version. Returns false if seqlock version corresponds to intermediate state that should never be seen by seqlock user.
Definition at line 28 of file seqlock_impl.h.
void roc::core::sleep_for | ( | clock_t | clock, |
nanoseconds_t | duration | ||
) |
Sleep specified amount of time.
duration
specifies number of nanoseconds to sleep. void roc::core::sleep_until | ( | clock_t | clock, |
nanoseconds_t | timestamp | ||
) |
Sleep until the specified absolute time point has been reached.
timestamp
specifies absolute time point in nanoseconds. nanoseconds_t roc::core::timestamp | ( | clock_t | clock | ) |
Get current timestamp in nanoseconds.
nanoseconds_t roc::core::tm_2_nanoseconds | ( | std::tm | tm | ) |
Convert timestamp from broken-down time to nanoseconds format.
bool roc::core::uuid_generare | ( | char * | buf, |
size_t | buf_sz | ||
) |
Generate UUID string into given buffer.
buf
is null or buf_sz
is less than UuidLen + 1. const nanoseconds_t roc::core::Day = 24 * Hour |
const nanoseconds_t roc::core::Hour = 60 * Minute |
const nanoseconds_t roc::core::Microsecond = 1000 * Nanosecond |
const nanoseconds_t roc::core::Millisecond = 1000 * Microsecond |
const nanoseconds_t roc::core::Minute = 60 * Second |
const nanoseconds_t roc::core::Nanosecond = 1 |
const nanoseconds_t roc::core::Second = 1000 * Millisecond |