Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
|
General-purpose building blocks and platform abstraction layer. More...
Classes | |
union | AlignMax |
Maximum aligned data unit. More... | |
class | AlignOps |
Alignment operations. More... | |
class | AlignedStorage |
Fixed-size maximum-aligned storage. More... | |
class | ArenaAllocation |
Allocation policy for objects allocated using IArena. More... | |
class | PoolAllocation |
Allocation policy for objects allocated using IPool. More... | |
class | CustomAllocation |
Allocation policy for objects with custom deallocation function. More... | |
class | ManualAllocation |
Allocation policy for objects that does not have automatical deallocation. 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 | Buffer |
Fixed-size dynamically-allocated buffer. More... | |
class | BufferFactory |
Buffer factory. Allows to instantiate fixed-size buffers. More... | |
class | EndianOps |
Endian operations. More... | |
class | GlobalDestructor |
Allows to determine if global library destruction was initiated. More... | |
class | Hashmap |
Intrusive hash table. 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 | List |
Intrusive doubly-linked list. More... | |
class | ListNode |
Base class for list element. More... | |
struct | LogMessage |
Log message. More... | |
class | Logger |
Logger. More... | |
class | MemoryOps |
Memory operations. More... | |
class | MpscQueue |
Thread-safe lock-free node-based intrusive multi-producer single-consumer queue. More... | |
class | MpscQueueImpl |
Multi-producer single-consumer queue internal implementation class. More... | |
class | MpscQueueNode |
MpscQueue node. More... | |
class | NonCopyable |
Base class for non-copyable objects. More... | |
class | Optional |
Optionally constructed object. More... | |
class | SharedPtr |
Shared ownership intrusive pointer. More... | |
struct | RefCountedOwnership |
Reference counted object ownership. More... | |
struct | NoOwnership |
No ownership. 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... | |
class | ScopedLock |
RAII mutex lock. More... | |
class | ScopedPtr |
Unique ownrship pointer. More... | |
class | Seqlock |
Seqlock. More... | |
class | SlabPool |
Memory pool. More... | |
class | SlabPoolImpl |
Memory pool implementation class. More... | |
class | Slice |
Slice. More... | |
class | StringBuffer |
String buffer. More... | |
class | StringBuilder |
String builder. More... | |
class | StringList |
Dynamic list of strings. More... | |
class | Console |
Console. More... | |
class | LogBackend |
Log backend. More... | |
class | AtomicOps |
Atomic operations. This wrapper exists because on non-C11 compilers we use another implementation. More... | |
class | Semaphore |
Semaphore. More... | |
class | Cond |
Condition variable. More... | |
class | CrashHandler |
Crash handler. More... | |
class | errno_to_str |
Convert errno to string. More... | |
class | Mutex |
Mutex. More... | |
class | Singleton |
Singleton. 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 size_t | hashsum_t |
Hash type. More... | |
typedef void(* | LogHandler) (const LogMessage &message, void **args) |
Log handler. More... | |
typedef uint32_t | seqlock_version_t |
Type for holding seqlock value version. Version is changed each value update. May wrap. More... | |
typedef int64_t | nanoseconds_t |
Nanoseconds. More... | |
Enumerations | |
enum | HeapArenaFlags { HeapArenaFlag_EnableLeakDetection = (1 << 0) , HeapArenaFlag_EnableGuards = (1 << 1) } |
Heap arena flags. More... | |
enum | { DefaultHeapArenaFlags = (HeapArenaFlag_EnableGuards) } |
Default heap arena flags. More... | |
enum | ColorsMode { ColorsAuto , ColorsEnabled , ColorsDisabled } |
Colors mode. More... | |
enum | LocationMode { LocationEnabled , LocationDisabled } |
Location mode. More... | |
enum | SlabPoolFlags { SlabPoolFlag_EnableGuards = (1 << 0) } |
Memory pool flags. More... | |
enum | { DefaultSlabPoolFlags = (SlabPoolFlag_EnableGuards) } |
Default memory pool flags. 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... | |
Functions | |
void | print_backtrace_full () |
Print backtrace to stderr. More... | |
void | print_backtrace_safe () |
Print backtrace to stderr (emergency mode). More... | |
const char * | demangle_symbol (const char *mangled, char *&demangled_buf, size_t &demangled_size) |
Demangle symbol name. More... | |
uint16_t | ntoh16u (uint16_t v) |
Network to host byte order (unsigned 16-bit). More... | |
int16_t | ntoh16s (int16_t v) |
Network to host byte order (signed 16-bit). More... | |
uint32_t | ntoh32u (uint32_t v) |
Network to host byte order (unsigned 32-bit). More... | |
int32_t | ntoh32s (int32_t v) |
Network to host byte order (signed 32-bit). More... | |
uint64_t | ntoh64u (uint64_t v) |
Network to host byte order (unsigned 64-bit). More... | |
int64_t | ntoh64s (int64_t v) |
Network to host byte order (signed 64-bit). More... | |
uint16_t | hton16u (uint16_t v) |
Host to network byte order (unsigned 16-bit). More... | |
int16_t | hton16s (int16_t v) |
Host to network byte order (signed 16-bit). More... | |
uint32_t | hton32u (uint32_t v) |
Host to network byte order (unsigned 32-bit). More... | |
int32_t | hton32s (int32_t v) |
Host to network byte order (signed 32-bit). More... | |
uint64_t | hton64u (uint64_t v) |
Host to network byte order (unsigned 64-bit). More... | |
int64_t | hton64s (int64_t v) |
Host to network byte order (signed 64-bit). More... | |
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. More... | |
uint32_t | fast_random () |
Get a random integer from a non cryptographically secure, but fast PRNG. Thread-safe. More... | |
hashsum_t | hashsum_int (int16_t) |
Compute hash of 16-bit integer. More... | |
hashsum_t | hashsum_int (uint16_t) |
Compute hash of 16-bit integer. More... | |
hashsum_t | hashsum_int (int32_t) |
Compute hash of 32-bit integer. More... | |
hashsum_t | hashsum_int (uint32_t) |
Compute hash of 32-bit integer. More... | |
hashsum_t | hashsum_int (int64_t) |
Compute hash of 64-bit integer. More... | |
hashsum_t | hashsum_int (uint64_t) |
Compute hash of 64-bit integer. More... | |
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. More... | |
hashsum_t | hashsum_str (const char *str) |
Compute hash of zero-terminated string. More... | |
hashsum_t | hashsum_mem (const void *data, size_t size) |
Compute hash of byte range. More... | |
void | panic (const char *module, const char *file, int line, const char *format,...) |
Print error message and terminate program gracefully. More... | |
ROC_ATTR_NODISCARD bool | parse_duration (const char *string, nanoseconds_t &result) |
Parse duration from string. More... | |
void | print_buffer (const uint8_t *data, size_t size) |
Print buffer. More... | |
void | print_buffer (const uint16_t *data, size_t size) |
Print buffer. More... | |
void | print_buffer (const uint32_t *data, size_t size) |
Print buffer. More... | |
void | print_buffer (const uint64_t *data, size_t size) |
Print buffer. More... | |
void | print_buffer (const int8_t *data, size_t size) |
Print buffer. More... | |
void | print_buffer (const int16_t *data, size_t size) |
Print buffer. More... | |
void | print_buffer (const int32_t *data, size_t size) |
Print buffer. More... | |
void | print_buffer (const int64_t *data, size_t size) |
Print buffer. More... | |
void | print_buffer (const float *data, size_t size) |
Print floats buffer. More... | |
void | print_buffer (const double *data, size_t size) |
Print floats buffer. More... | |
void | print_buffer_slice (const uint8_t *inner, size_t inner_size, const uint8_t *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const uint16_t *inner, size_t inner_size, const uint16_t *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const uint32_t *inner, size_t inner_size, const uint32_t *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const uint64_t *inner, size_t inner_size, const uint64_t *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const int8_t *inner, size_t inner_size, const int8_t *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const int16_t *inner, size_t inner_size, const int16_t *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const int32_t *inner, size_t inner_size, const int32_t *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const int64_t *inner, size_t inner_size, const int64_t *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const float *inner, size_t inner_size, const float *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
void | print_buffer_slice (const double *inner, size_t inner_size, const double *outer, size_t outer_size) |
Print a slice of a buffer. More... | |
bool | seqlock_version_is_dirty (seqlock_version_t ver) |
Check if given seqlock version corresponds to dirty value. More... | |
template<class T1 , class T2 > | |
bool | operator== (const SharedPtr< T1 > &a, const SharedPtr< T2 > &b) |
Equality check. More... | |
template<class T1 , class T2 > | |
bool | operator!= (const SharedPtr< T1 > &a, const SharedPtr< T2 > &b) |
Equality check. More... | |
void | cpu_relax () |
CPU pause instruction. More... | |
void | die_fast (int code) |
Terminate program. More... | |
void | die_gracefully (const char *message, bool full_backtrace) |
Terminate program with error message and backtrace. More... | |
nanoseconds_t | timestamp (clock_t clock) |
Get current timestamp in nanoseconds. More... | |
void | sleep_until (clock_t clock, nanoseconds_t timestamp) |
Sleep until the specified absolute time point has been reached. More... | |
void | sleep_for (clock_t clock, nanoseconds_t duration) |
Sleep specified amount of time. More... | |
std::tm | nanoseconds_2_tm (nanoseconds_t timestamp) |
Convert timestamp in nanoseconds format to broken-down time. More... | |
nanoseconds_t | tm_2_nanoseconds (std::tm tm) |
Convert timestamp from broken-down time to nanoseconds format. More... | |
bool | ns_equal_delta (nanoseconds_t a, nanoseconds_t b, nanoseconds_t delta) |
Compares a and b if they close enough. More... | |
Variables | |
const nanoseconds_t | Nanosecond = 1 |
One nanosecond represented in nanoseconds. More... | |
const nanoseconds_t | Microsecond = 1000 * Nanosecond |
One microsecond represented in nanoseconds. More... | |
const nanoseconds_t | Millisecond = 1000 * Microsecond |
One millisecond represented in nanoseconds. More... | |
const nanoseconds_t | Second = 1000 * Millisecond |
One second represented in nanoseconds. More... | |
const nanoseconds_t | Minute = 60 * Second |
One minute represented in nanoseconds. More... | |
const nanoseconds_t | Hour = 60 * Minute |
One hour represented in nanoseconds. More... | |
const nanoseconds_t | Day = 24 * Hour |
One day represented in nanoseconds. More... | |
General-purpose building blocks and platform abstraction layer.
typedef size_t roc::core::hashsum_t |
typedef void(* roc::core::LogHandler) (const LogMessage &message, void **args) |
typedef int64_t roc::core::nanoseconds_t |
typedef uint32_t roc::core::seqlock_version_t |
anonymous enum |
Default memory pool flags.
Definition at line 33 of file slab_pool.h.
anonymous enum |
Default heap arena flags.
Definition at line 32 of file heap_arena.h.
enum roc::core::clock_t |
Clock identifier.
enum roc::core::Color |
enum roc::core::Color |
Heap arena flags.
Enumerator | |
---|---|
HeapArenaFlag_EnableLeakDetection | Enable panic if leaks detected in arena destructor. |
HeapArenaFlag_EnableGuards | Enable panic if memory violation detected when deallocating chunk. |
Definition at line 24 of file heap_arena.h.
Memory pool flags.
Enumerator | |
---|---|
SlabPoolFlag_EnableGuards | Enable guards for buffer overflow, invalid ownership, etc. |
Definition at line 27 of file slab_pool.h.
|
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.
void roc::core::die_gracefully | ( | const char * | message, |
bool | full_backtrace | ||
) |
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.
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.
hashsum_t roc::core::hashsum_int | ( | int16_t | ) |
Compute hash of 16-bit integer.
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 | ( | T | t | ) |
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.
hashsum_t roc::core::hashsum_mem | ( | const void * | data, |
size_t | size | ||
) |
Compute hash of byte range.
hashsum_t roc::core::hashsum_str | ( | const char * | str | ) |
Compute hash of zero-terminated string.
|
inline |
|
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 |
|
inline |
|
inline |
Equality check.
Definition at line 142 of file shared_ptr.h.
|
inline |
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.
ROC_ATTR_NODISCARD bool roc::core::parse_duration | ( | const char * | string, |
nanoseconds_t & | result | ||
) |
Parse duration 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_buffer | ( | const double * | data, |
size_t | size | ||
) |
Print floats buffer.
void roc::core::print_buffer | ( | const float * | data, |
size_t | size | ||
) |
Print floats buffer.
void roc::core::print_buffer | ( | const int16_t * | data, |
size_t | size | ||
) |
Print buffer.
void roc::core::print_buffer | ( | const int32_t * | data, |
size_t | size | ||
) |
Print buffer.
void roc::core::print_buffer | ( | const int64_t * | data, |
size_t | size | ||
) |
Print buffer.
void roc::core::print_buffer | ( | const int8_t * | data, |
size_t | size | ||
) |
Print buffer.
void roc::core::print_buffer | ( | const uint16_t * | data, |
size_t | size | ||
) |
Print buffer.
void roc::core::print_buffer | ( | const uint32_t * | data, |
size_t | size | ||
) |
Print buffer.
void roc::core::print_buffer | ( | const uint64_t * | data, |
size_t | size | ||
) |
Print buffer.
void roc::core::print_buffer | ( | const uint8_t * | data, |
size_t | size | ||
) |
Print buffer.
void roc::core::print_buffer_slice | ( | const double * | inner, |
size_t | inner_size, | ||
const double * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const float * | inner, |
size_t | inner_size, | ||
const float * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const int16_t * | inner, |
size_t | inner_size, | ||
const int16_t * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const int32_t * | inner, |
size_t | inner_size, | ||
const int32_t * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const int64_t * | inner, |
size_t | inner_size, | ||
const int64_t * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const int8_t * | inner, |
size_t | inner_size, | ||
const int8_t * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const uint16_t * | inner, |
size_t | inner_size, | ||
const uint16_t * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const uint32_t * | inner, |
size_t | inner_size, | ||
const uint32_t * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const uint64_t * | inner, |
size_t | inner_size, | ||
const uint64_t * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
void roc::core::print_buffer_slice | ( | const uint8_t * | inner, |
size_t | inner_size, | ||
const uint8_t * | outer, | ||
size_t | outer_size | ||
) |
Print a slice of a buffer.
|
inline |
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.
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 |