# Base module

<a id="basemodule"></a>

# Base module

The `base` module contains reusable cross platform tools and utilities.

## Namespaces

| Name | Description |
|------|-------------|
| [`hex`](https://auscaster.com/icey/docs/api-reference/icy-hex.md#hex) | Hexadecimal encoding and decoding helpers. |
| [`ipc`](https://auscaster.com/icey/docs/api-reference/icy-ipc.md#ipc) | Classes for inter-process communication. |
| [`test`](https://auscaster.com/icey/docs/api-reference/icy-test.md#test) | Modern unit testing framework. |
| [`time`](https://auscaster.com/icey/docs/api-reference/icy-time.md#time-3) | Classes and functions for handling time. |
| [`base64`](https://auscaster.com/icey/docs/api-reference/icy-base64.md#base64) | Base64 encoding and decoding helpers. |
| [`deleter`](https://auscaster.com/icey/docs/api-reference/icy-deleter.md#deleter-2) | Deleter helpers for objects managed through custom destruction routines. |
| [`numeric`](https://auscaster.com/icey/docs/api-reference/icy-numeric.md#numeric) | Integer parsing and formatting helpers. |
| [`basic`](https://auscaster.com/icey/docs/api-reference/icy-basic.md#basic) | Interface classes. |
| [`fs`](https://auscaster.com/icey/docs/api-reference/icy-fs.md#fs) | Cross-platform filesystem path and file helpers. |
| [`util`](https://auscaster.com/icey/docs/api-reference/icy-util.md#util) | Miscellaneous string, parsing, and version utilities. |

## Classes

| Name | Description |
|------|-------------|
| [`Pipe`](https://auscaster.com/icey/docs/api-reference/icy-Pipe.md#pipe) | Named pipe / stdio stream built on `uv_pipe_t`. |
| [`Idler`](https://auscaster.com/icey/docs/api-reference/icy-Idler.md#idler) | Asynchronous type that triggers callbacks when the event loop is idle. |
| [`Queue`](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) | Thread-safe queue container. |
| [`RunnableQueue`](https://auscaster.com/icey/docs/api-reference/icy-RunnableQueue.md#runnablequeue) | [Queue](https://auscaster.com/icey/docs/api-reference/icy-Queue.md#queue-2) of runnable tasks for sequential execution. |
| [`SyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) | [SyncQueue](https://auscaster.com/icey/docs/api-reference/icy-SyncQueue.md#syncqueue) extends [Synchronizer](https://auscaster.com/icey/docs/api-reference/icy-Synchronizer.md#synchronizer) to implement a synchronized FIFO queue which receives T objects from any thread and synchronizes them for safe consumption by the associated event loop. |
| [`AsyncQueue`](https://auscaster.com/icey/docs/api-reference/icy-AsyncQueue.md#asyncqueue) | [AsyncQueue](https://auscaster.com/icey/docs/api-reference/icy-AsyncQueue.md#asyncqueue) is a thread-based queue which receives packets from any thread source and dispatches them asynchronously. |
| [`Timer`](https://auscaster.com/icey/docs/api-reference/icy-Timer.md#timer) | Asynchronous event based timer. |
| [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) | The [MutableBuffer](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) class provides a safe representation of a buffer that can be modified. It does not own the underlying data, and so is cheap to copy or assign. |
| [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) | The [ConstBuffer](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) class provides a safe representation of a buffer that cannot be modified. It does not own the underlying data, and so is cheap to copy or assign. |
| [`BitReader`](https://auscaster.com/icey/docs/api-reference/icy-BitReader.md#bitreader) | Class for reading binary streams. |
| [`BitWriter`](https://auscaster.com/icey/docs/api-reference/icy-BitWriter.md#bitwriter) | Class for reading/writing binary streams. |
| [`DynamicBitWriter`](https://auscaster.com/icey/docs/api-reference/icy-DynamicBitWriter.md#dynamicbitwriter) | Class for reading/writing dynamically resizable binary streams. |
| [`LogWriter`](https://auscaster.com/icey/docs/api-reference/icy-LogWriter.md#logwriter) | Log output stream writer. |
| [`AsyncLogWriter`](https://auscaster.com/icey/docs/api-reference/icy-AsyncLogWriter.md#asynclogwriter) | [Thread](https://auscaster.com/icey/docs/api-reference/icy-Thread.md#thread-1) based log output stream writer. |
| [`Logger`](https://auscaster.com/icey/docs/api-reference/icy-Logger.md#logger) | [Logger](https://auscaster.com/icey/docs/api-reference/icy-Logger.md#logger) class. |
| [`LogChannel`](https://auscaster.com/icey/docs/api-reference/icy-LogChannel.md#logchannel) | Named log output channel with configurable severity level and formatting. |
| [`ConsoleChannel`](https://auscaster.com/icey/docs/api-reference/icy-ConsoleChannel.md#consolechannel) | Log channel that writes formatted messages to standard output. |
| [`FileChannel`](https://auscaster.com/icey/docs/api-reference/icy-FileChannel.md#filechannel) | Log channel that writes formatted messages to a file. |
| [`RotatingFileChannel`](https://auscaster.com/icey/docs/api-reference/icy-RotatingFileChannel.md#rotatingfilechannel) | Log channel that writes to time-rotated log files. |
| [`RefCounted`](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) | Base class for intrusive reference counting. |
| [`IntrusivePtr`](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr) | Intrusive smart pointer for [RefCounted](https://auscaster.com/icey/docs/api-reference/icy-RefCounted.md#refcounted) objects. |
| [`Random`](https://auscaster.com/icey/docs/api-reference/icy-Random.md#random) | [Random](https://auscaster.com/icey/docs/api-reference/icy-Random.md#random) implements a pseudo random number generator (PRNG) using the Mersenne Twister algorithm (std::mt19937). |
| [`Runner`](https://auscaster.com/icey/docs/api-reference/icy-Runner.md#runner) | [Runner](https://auscaster.com/icey/docs/api-reference/icy-Runner.md#runner) is a virtual interface for implementing asynchronous objects such as threads and futures. |
| [`Signal< RT(Args...), MutexT >`](https://auscaster.com/icey/docs/api-reference/icy-Signal-RT-Args-MutexT.md#signalrtargsmutext) | Thread-safe signal and slot implementation for callback-based event dispatch. |
| [`Stream`](https://auscaster.com/icey/docs/api-reference/icy-Stream.md#stream) | Basic stream type for sockets and pipes. |
| [`Thread`](https://auscaster.com/icey/docs/api-reference/icy-Thread.md#thread-1) | Platform-independent wrapper around an operating system thread. |
| [`Process`](https://auscaster.com/icey/docs/api-reference/icy-Process.md#process-3) | Spawns and manages a child process with stdin/stdout/stderr pipes. |
| [`Timeout`](https://auscaster.com/icey/docs/api-reference/icy-Timeout.md#timeout-1) | [Timeout](https://auscaster.com/icey/docs/api-reference/icy-Timeout.md#timeout-1) counter which expires after a given delay. Delay is specified in milliseconds. |
| [`TimedToken`](https://auscaster.com/icey/docs/api-reference/icy-TimedToken.md#timedtoken) | Token that expires after the specified duration. |
| [`Timestamp`](https://auscaster.com/icey/docs/api-reference/icy-Timestamp.md#timestamp-2) | A [Timestamp](https://auscaster.com/icey/docs/api-reference/icy-Timestamp.md#timestamp-2) stores a monotonic* time value with (theoretical) microseconds resolution. Timestamps can be compared with each other and simple arithmetics are supported. |
| [`Timespan`](https://auscaster.com/icey/docs/api-reference/icy-Timespan.md#timespan) | A class that represents time spans up to microsecond resolution. |
| [`DateTime`](https://auscaster.com/icey/docs/api-reference/icy-DateTime.md#datetime) | This class represents an instant in time, expressed in years, months, days, hours, minutes, seconds and milliseconds based on the Gregorian calendar. The class is mainly useful for conversions between UTC, Julian day and Gregorian calendar dates. |
| [`Timezone`](https://auscaster.com/icey/docs/api-reference/icy-Timezone.md#timezone) | This class provides information about the current timezone. |
| [`LocalDateTime`](https://auscaster.com/icey/docs/api-reference/icy-LocalDateTime.md#localdatetime) | This class represents an instant in local time (as opposed to UTC), expressed in years, months, days, hours, minutes, seconds and milliseconds based on the Gregorian calendar. |
| [`DateTimeFormat`](https://auscaster.com/icey/docs/api-reference/icy-DateTimeFormat.md#datetimeformat) | Definition of date/time formats and various constants used by [DateTimeFormatter](https://auscaster.com/icey/docs/api-reference/icy-DateTimeFormatter.md#datetimeformatter) and [DateTimeParser](https://auscaster.com/icey/docs/api-reference/icy-DateTimeParser.md#datetimeparser). |
| [`DateTimeFormatter`](https://auscaster.com/icey/docs/api-reference/icy-DateTimeFormatter.md#datetimeformatter) | This class converts dates and times into strings, supporting a variety of standard and custom formats. |
| [`DateTimeParser`](https://auscaster.com/icey/docs/api-reference/icy-DateTimeParser.md#datetimeparser) | This class provides a method for parsing dates and times from strings. All parsing methods do their best to parse a meaningful result, even from malformed input strings. |
| [`Stopwatch`](https://auscaster.com/icey/docs/api-reference/icy-Stopwatch.md#stopwatch) | A simple facility to measure time intervals with microsecond resolution. |
| [`ThreadedStreamReader`](https://auscaster.com/icey/docs/api-reference/icy-ThreadedStreamReader.md#threadedstreamreader) | Threaded stream reader class. |
| [`StreamWriter`](https://auscaster.com/icey/docs/api-reference/icy-StreamWriter.md#streamwriter) | Packet stream writer class. |
| [`State`](https://auscaster.com/icey/docs/api-reference/icy-State.md#state) | [State](https://auscaster.com/icey/docs/api-reference/icy-State.md#state) class for state machines. |
| [`Stateful`](https://auscaster.com/icey/docs/api-reference/icy-Stateful.md#stateful) | [State](https://auscaster.com/icey/docs/api-reference/icy-State.md#state) machine implementation. |
| [`IRegistry`](https://auscaster.com/icey/docs/api-reference/icy-IRegistry.md#iregistry) | Abstract interface for object registries. |
| [`Singleton`](https://auscaster.com/icey/docs/api-reference/icy-Singleton.md#singleton) | Helper template class for managing singleton objects allocated on the heap. |
| [`KeyedStore`](https://auscaster.com/icey/docs/api-reference/icy-KeyedStore.md#keyedstore) | A keyed store of unique_ptr values with optional lifecycle hooks. Not thread-safe; designed for single-threaded event loop contexts. |
| [`KVCollection`](https://auscaster.com/icey/docs/api-reference/icy-KVCollection.md#kvcollection) | A keyed value store (values stored by copy, not pointer). |
| [`NVCollection`](https://auscaster.com/icey/docs/api-reference/icy-NVCollection.md#nvcollection) | A storage container for a name value collections. This collection can store multiple entries for each name, and it's getters are case-insensitive. |
| [`Application`](https://auscaster.com/icey/docs/api-reference/icy-Application.md#application) | Main icey application class. |
| [`SyncPacketQueue`](https://auscaster.com/icey/docs/api-reference/icy-SyncPacketQueue.md#syncpacketqueue) | Synchronized packet queue for event loop integration. |
| [`AsyncPacketQueue`](https://auscaster.com/icey/docs/api-reference/icy-AsyncPacketQueue.md#asyncpacketqueue) | Thread-based asynchronous packet dispatch queue. |
| [`RateLimiter`](https://auscaster.com/icey/docs/api-reference/icy-RateLimiter.md#ratelimiter) | Token bucket rate limiter for throttling message send frequency. |
| [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) | This class is a wrapper for integrating external classes with the a [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream)'s data flow and state machine. |
| [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) | This class is a virtual interface for creating PacketStreamAdapters which process that and emit the [IPacket](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) type. |
| [`PacketStream`](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) | Processes and broadcasts IPackets through a configurable adapter graph. |
| [`Synchronizer`](https://auscaster.com/icey/docs/api-reference/icy-Synchronizer.md#synchronizer) | [Synchronizer](https://auscaster.com/icey/docs/api-reference/icy-Synchronizer.md#synchronizer) enables any thread to communicate with the associated event loop via synchronized callbacks. |
| [`TimedManager`](https://auscaster.com/icey/docs/api-reference/icy-TimedManager.md#timedmanager) | Timed pointer manager |
| [`IPacketCreationStrategy`](https://auscaster.com/icey/docs/api-reference/icy-IPacketCreationStrategy.md#ipacketcreationstrategy) | Abstract strategy for creating typed packets from raw buffer data. |
| [`PacketFactory`](https://auscaster.com/icey/docs/api-reference/icy-PacketFactory.md#packetfactory) | Priority-ordered factory that creates typed packets from raw buffers using registered strategies. |
| [`StreamManager`](https://auscaster.com/icey/docs/api-reference/icy-StreamManager.md#streammanager) | Manages a named collection of [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) instances with lifecycle callbacks. |
| [`IDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-IDiagnostic.md#idiagnostic) | Abstract interface for diagnostic information providers. |
| [`AsyncDiagnostic`](https://auscaster.com/icey/docs/api-reference/icy-AsyncDiagnostic.md#asyncdiagnostic) | Asynchronous diagnostic information collector. |
| [`DiagnosticManager`](https://auscaster.com/icey/docs/api-reference/icy-DiagnosticManager.md#diagnosticmanager) | Registry and manager for diagnostic providers. |
| [`PacketTransaction`](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction) | Request/response transaction with timeout and retry logic. |
| [`Task`](https://auscaster.com/icey/docs/api-reference/icy-Task.md#task) | Abstract base class for implementing asynchronous tasks. |
| [`TaskRunner`](https://auscaster.com/icey/docs/api-reference/icy-TaskRunner.md#taskrunner-1) | [Runner](https://auscaster.com/icey/docs/api-reference/icy-Runner.md#runner) for tasks that inherit the [`Task`](https://auscaster.com/icey/docs/api-reference/icy-Task.md#task) interface. |
| [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) | The basic packet type which is passed around the icey system. [IPacket](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) can be extended for each protocol to enable polymorphic processing and callbacks using [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) and friends. |
| [`FlagPacket`](https://auscaster.com/icey/docs/api-reference/icy-FlagPacket.md#flagpacket) | Packet for sending bitwise flags along the packet stream. |
| [`RawPacket`](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) | [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) is the default data packet type which consists of an optionally managed char pointer and a size value. |
| [`Configuration`](https://auscaster.com/icey/docs/api-reference/icy-Configuration.md#configuration) | [Configuration](https://auscaster.com/icey/docs/api-reference/icy-Configuration.md#configuration) is an abstract base class for managing different kinds of configuration storage back ends such as JSON, XML, or database. |
| [`ScopedConfiguration`](https://auscaster.com/icey/docs/api-reference/icy-ScopedConfiguration.md#scopedconfiguration) | [ScopedConfiguration](https://auscaster.com/icey/docs/api-reference/icy-ScopedConfiguration.md#scopedconfiguration) provides multiple levels of configuration for a module. Multiple levels means that there is a module level scope, and a default scope. When a property is accessed, the module scope value will be used if available, otherwise the default scope value will be used. |
| [`Error`](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) | Basic error type. |
| [`LogStream`](https://auscaster.com/icey/docs/api-reference/icy-LogStream.md#logstream) | No-op log record used when logging is compiled out. |
| [`LogVoidify`](https://auscaster.com/icey/docs/api-reference/icy-LogVoidify.md#logvoidify) | Adapts a [LogStream](https://auscaster.com/icey/docs/api-reference/icy-LogStream.md#logstream) expression to void so the streaming log macros can short-circuit on the level filter inside a ternary (glog-style): the message arguments are never evaluated for filtered-out levels. |
| [`NullSharedMutex`](https://auscaster.com/icey/docs/api-reference/icy-NullSharedMutex.md#nullsharedmutex) | No-op mutex for single-threaded signal usage. When all signal operations occur on a single libuv event loop thread, the shared_mutex is unnecessary overhead. |
| [`Bitwise`](https://auscaster.com/icey/docs/api-reference/icy-Bitwise.md#bitwise) | Container for smart management of bitwise integer flags. |
| [`AbstractDelegate`](https://auscaster.com/icey/docs/api-reference/icy-AbstractDelegate.md#abstractdelegate) | Abstract delegate interface. |
| [`FunctionDelegate`](https://auscaster.com/icey/docs/api-reference/icy-FunctionDelegate.md#functiondelegate) | The [`FunctionDelegate`](https://auscaster.com/icey/docs/api-reference/icy-FunctionDelegate.md#functiondelegate) contains a `std::function`. |
| [`ClassDelegate`](https://auscaster.com/icey/docs/api-reference/icy-ClassDelegate.md#classdelegate) | The [`ClassDelegate`](https://auscaster.com/icey/docs/api-reference/icy-ClassDelegate.md#classdelegate) contains a pointer to a class member. |
| [`ConstClassDelegate`](https://auscaster.com/icey/docs/api-reference/icy-ConstClassDelegate.md#constclassdelegate) | The [`ConstClassDelegate`](https://auscaster.com/icey/docs/api-reference/icy-ConstClassDelegate.md#constclassdelegate) contains a pointer to a `const` class member. |
| [`PolymorphicDelegate`](https://auscaster.com/icey/docs/api-reference/icy-PolymorphicDelegate.md#polymorphicdelegate) | Polymorphic function delegate. |
| [`OptionParser`](https://auscaster.com/icey/docs/api-reference/icy-OptionParser.md#optionparser) | Command-line option parser. |
| [`ShutdownCmd`](https://auscaster.com/icey/docs/api-reference/icy-ShutdownCmd.md#shutdowncmd) | Shutdown command packet for signalling process termination. |
| [`PacketAdapterReference`](https://auscaster.com/icey/docs/api-reference/icy-PacketAdapterReference.md#packetadapterreference) | Provides a reference to a [PacketStreamAdapter](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) with optional ownership. |
| [`PacketStreamState`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamState.md#packetstreamstate) | [State](https://auscaster.com/icey/docs/api-reference/icy-State.md#state) machine states for [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream). |
| [`PacketCreationStrategy`](https://auscaster.com/icey/docs/api-reference/icy-PacketCreationStrategy.md#packetcreationstrategy) | This template class implements an adapter that sits between an SignalBase and an object receiving notifications from it. |
| [`SharedLibrary`](https://auscaster.com/icey/docs/api-reference/icy-SharedLibrary.md#sharedlibrary) | Loads a shared library at runtime and resolves exported symbols. |
| [`DiagnosticState`](https://auscaster.com/icey/docs/api-reference/icy-DiagnosticState.md#diagnosticstate) | [State](https://auscaster.com/icey/docs/api-reference/icy-State.md#state) definitions for diagnostic providers. |
| [`TransactionState`](https://auscaster.com/icey/docs/api-reference/icy-TransactionState.md#transactionstate) | [State](https://auscaster.com/icey/docs/api-reference/icy-State.md#state) machine states for [PacketTransaction](https://auscaster.com/icey/docs/api-reference/icy-PacketTransaction.md#packettransaction). |
| [`IPacketInfo`](https://auscaster.com/icey/docs/api-reference/icy-IPacketInfo.md#ipacketinfo) | An abstract interface for packet sources to provide extra information about packets. |

## Macros

| Name | Description |
|------|-------------|
| [`expect`](#expect)  |  |
| [`__CLASS_FUNCTION__`](#__class_function__)  |  |
| [`ICY_LOG_STREAM`](#icy_log_stream)  |  |
| [`STrace`](#strace)  |  |
| [`SDebug`](#sdebug)  |  |
| [`SInfo`](#sinfo)  |  |
| [`SWarn`](#swarn)  |  |
| [`SError`](#serror)  |  |
| [`ICY_LOG_WRITE`](#icy_log_write)  |  |
| [`LTrace`](#ltrace)  |  |
| [`LDebug`](#ldebug)  |  |
| [`LInfo`](#linfo)  |  |
| [`LWarn`](#lwarn)  |  |
| [`LError`](#lerror)  |  |

---

<a id="expect"></a>

### expect

```cpp
#define expect(x) icy::test::expectImpl(x, #x, __FILE__, __LINE__)
```

[Defined in src/base/include/icy/test.h:67](https://github.com/auscaster/icey/blob/main/src/base/include/icy/test.h#L67)

---

<a id="__class_function__"></a>

### __CLASS_FUNCTION__

```cpp
#define __CLASS_FUNCTION__ _methodName(__PRETTY_FUNCTION__)
```

[Defined in src/base/include/icy/logger.h:624](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L624)

---

<a id="icy_log_stream"></a>

### ICY_LOG_STREAM

```cpp
#define ICY_LOG_STREAM(lvl) !icy::Logger::levelEnabled(lvl)                                            \
        ? (void)0                                                              \
        : icy::LogVoidify() &                                                  \
            icy::LogStream(lvl, icy::_fileName(__FILE__), __LINE__)
```

[Defined in src/base/include/icy/logger.h:634](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L634)

---

<a id="strace"></a>

### STrace

```cpp
#define STrace ICY_LOG_STREAM(icy::Level::Trace)
```

[Defined in src/base/include/icy/logger.h:640](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L640)

---

<a id="sdebug"></a>

### SDebug

```cpp
#define SDebug ICY_LOG_STREAM(icy::Level::Debug)
```

[Defined in src/base/include/icy/logger.h:641](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L641)

---

<a id="sinfo"></a>

### SInfo

```cpp
#define SInfo ICY_LOG_STREAM(icy::Level::Info)
```

[Defined in src/base/include/icy/logger.h:642](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L642)

---

<a id="swarn"></a>

### SWarn

```cpp
#define SWarn ICY_LOG_STREAM(icy::Level::Warn)
```

[Defined in src/base/include/icy/logger.h:643](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L643)

---

<a id="serror"></a>

### SError

```cpp
#define SError ICY_LOG_STREAM(icy::Level::Error)
```

[Defined in src/base/include/icy/logger.h:644](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L644)

---

<a id="icy_log_write"></a>

### ICY_LOG_WRITE

```cpp
#define ICY_LOG_WRITE(lvl, ...) do {                                                                       \
        if (icy::Logger::levelEnabled(lvl))                                    \
            icy::LogStream(lvl, icy::_fileName(__FILE__), __LINE__)            \
                .write(__VA_ARGS__);                                           \
    } while (0)
```

[Defined in src/base/include/icy/logger.h:646](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L646)

---

<a id="ltrace"></a>

### LTrace

```cpp
#define LTrace(...) ICY_LOG_WRITE(icy::Level::Trace, __VA_ARGS__)
```

[Defined in src/base/include/icy/logger.h:653](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L653)

---

<a id="ldebug"></a>

### LDebug

```cpp
#define LDebug(...) ICY_LOG_WRITE(icy::Level::Debug, __VA_ARGS__)
```

[Defined in src/base/include/icy/logger.h:654](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L654)

---

<a id="linfo"></a>

### LInfo

```cpp
#define LInfo(...) ICY_LOG_WRITE(icy::Level::Info, __VA_ARGS__)
```

[Defined in src/base/include/icy/logger.h:655](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L655)

---

<a id="lwarn"></a>

### LWarn

```cpp
#define LWarn(...) ICY_LOG_WRITE(icy::Level::Warn, __VA_ARGS__)
```

[Defined in src/base/include/icy/logger.h:656](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L656)

---

<a id="lerror"></a>

### LError

```cpp
#define LError(...) ICY_LOG_WRITE(icy::Level::Error, __VA_ARGS__)
```

[Defined in src/base/include/icy/logger.h:657](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L657)

## Enumerations

| Name | Description |
|------|-------------|
| [`Level`](#level)  | Logging severity levels used by [Logger](https://auscaster.com/icey/docs/api-reference/icy-Logger.md#logger) and [LogChannel](https://auscaster.com/icey/docs/api-reference/icy-LogChannel.md#logchannel). |
| [`ByteOrder`](#byteorder)  | Byte-order policy used when reading or writing multi-byte integers. |
| [`PacketRetention`](#packetretention)  | Describes how an adapter treats incoming packet lifetime beyond the current synchronous call chain. |
| [`PacketFlags`](#packetflags)  | Flags which determine how the packet is handled by the [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream). |

---

<a id="level"></a>

### Level

```cpp
enum Level
```

[Defined in src/base/include/icy/logger.h:38](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L38)

Logging severity levels used by [Logger](https://auscaster.com/icey/docs/api-reference/icy-Logger.md#logger) and [LogChannel](https://auscaster.com/icey/docs/api-reference/icy-LogChannel.md#logchannel).

| Value | Description |
|-------|-------------|
| `Trace` | Most verbose diagnostic output. |
| `Debug` | Debug-only diagnostic output. |
| `Info` | Normal informational output. |
| `Warn` | Warning output for recoverable problems. |
| `Error` | [Error](https://auscaster.com/icey/docs/api-reference/icy-Error.md#error) output for failed operations. |
| `Fatal` | Fatal output immediately before termination. |

---

<a id="byteorder"></a>

### ByteOrder

```cpp
enum ByteOrder
```

[Defined in src/base/include/icy/byteorder.h:31](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L31)

Byte-order policy used when reading or writing multi-byte integers.

| Value | Description |
|-------|-------------|
| `Network` | Default, use network byte order (big endian). |
| `Host` | Use the native order of the host. |

---

<a id="packetretention"></a>

### PacketRetention

```cpp
enum PacketRetention
```

[Defined in src/base/include/icy/packetstream.h:202](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L202)

Describes how an adapter treats incoming packet lifetime beyond the current synchronous call chain.

Borrowed adapters must finish using the packet before emit()/process() returns. Cloned and Retained adapters are explicit ownership boundaries: callers may mutate or free borrowed input only after such a boundary, or after the whole synchronous write/emit call has returned.

| Value | Description |
|-------|-------------|
| `Borrowed` | Packet is only used synchronously during the current emit/process call. |
| `Cloned` | Adapter makes its own copy before deferred or asynchronous use. |
| `Retained` | Adapter retains the original packet object beyond the current call chain. |

---

<a id="packetflags"></a>

### PacketFlags

```cpp
enum PacketFlags
```

[Defined in src/base/include/icy/packetstream.h:211](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L211)

Flags which determine how the packet is handled by the [PacketStream](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream).

| Value | Description |
|-------|-------------|
| `NoModify` | The packet should not be modified by processors. |
| `Final` | The final packet in the stream. |
## Typedefs

| Return | Name | Description |
|--------|------|-------------|
| `std::vector< char >` | [`Buffer`](#buffer)  | Core buffer type. |
| [`LogChannel`](https://auscaster.com/icey/docs/api-reference/icy-LogChannel.md#logchannel) | [`NullChannel`](#nullchannel)  | Null log channel. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void()> | [`NullSignal`](#nullsignal)  | Zero-argument signal alias used for simple local event notifications. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< RT, std::shared_mutex > | [`ThreadSignal`](#threadsignal)  | Cross-thread signal variant. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< RT, [`NullSharedMutex`](https://auscaster.com/icey/docs/api-reference/icy-NullSharedMutex.md#nullsharedmutex) > | [`LocalSignal`](#localsignal)  | Compatibility alias for the single-threaded fast path. |
| `uv_process_options_t` | [`ProcessOptions`](#processoptions)  | Raw `libuv` process spawn options passed through to `uv_spawn`. |
| `std::map< std::string, std::string >` | [`StringMap`](#stringmap)  | Generic string-to-string map used for headers, options, and environment-style metadata. |
| `std::vector< std::string >` | [`StringVec`](#stringvec)  | Generic string vector used for argument lists and ordered string collections. |
| `std::map< std::string, std::string >` | [`OptionMap`](#optionmap)  | Command Line Option Parser. |
| [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) &)> | [`PacketSignal`](#packetsignal)  | [Signal](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal) that broadcasts [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) types. |
| [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter) | [`PacketSource`](#packetsource)  | For 0.8.x compatibility. |
| [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) | [`IPacketizer`](#ipacketizer)  | Compatibility alias for a packet processor that packetizes stream output. |
| [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor) | [`IDepacketizer`](#idepacketizer)  | For 0.8.x compatibility. |
| std::vector< [`PacketAdapterReference::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-PacketAdapterReference.md#ptr-1) > | [`PacketAdapterVec`](#packetadaptervec)  | Ordered list of packet adapter references used for sources and processors. |
| std::vector< [`PacketStream`](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) * > | [`PacketStreamVec`](#packetstreamvec)  | Non-owning list of packet stream pointers used for graph traversal helpers. |
| std::vector< [`PacketStream::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#ptr-2) > | [`PacketStreamPtrVec`](#packetstreamptrvec)  | Owning list of packet stream handles retained across stream graphs. |
| std::unique_ptr< [`IPacketCreationStrategy`](https://auscaster.com/icey/docs/api-reference/icy-IPacketCreationStrategy.md#ipacketcreationstrategy) > | [`PacketCreationStrategyPtr`](#packetcreationstrategyptr)  | Owning handle for one packet creation strategy. |
| std::vector< [`PacketCreationStrategyPtr`](#packetcreationstrategyptr) > | [`PacketCreationStrategyList`](#packetcreationstrategylist)  | Ordered list of packet creation strategies consulted by a packet factory. |

---

<a id="buffer"></a>

### Buffer

```cpp
using Buffer = std::vector< char >
```

[Defined in src/base/include/icy/buffer.h:29](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L29)

Core buffer type.

---

<a id="nullchannel"></a>

### NullChannel

```cpp
using NullChannel = LogChannel
```

Type: [`LogChannel`](https://auscaster.com/icey/docs/api-reference/icy-LogChannel.md#logchannel)

[Defined in src/base/include/icy/logger.h:447](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L447)

Null log channel.

Redifine the base [`LogChannel`](https://auscaster.com/icey/docs/api-reference/icy-LogChannel.md#logchannel) as `NullChannel` so it can be logically used as a disabled log channel.

---

<a id="nullsignal"></a>

### NullSignal

```cpp
using NullSignal = Signal< void()>
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void()>

[Defined in src/base/include/icy/signal.h:636](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L636)

Zero-argument signal alias used for simple local event notifications.

---

<a id="threadsignal"></a>

### ThreadSignal

```cpp
using ThreadSignal = Signal< RT, std::shared_mutex >
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< RT, std::shared_mutex >

[Defined in src/base/include/icy/signal.h:640](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L640)

Cross-thread signal variant.

---

<a id="localsignal"></a>

### LocalSignal

```cpp
using LocalSignal = Signal< RT, NullSharedMutex >
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< RT, [`NullSharedMutex`](https://auscaster.com/icey/docs/api-reference/icy-NullSharedMutex.md#nullsharedmutex) >

[Defined in src/base/include/icy/signal.h:644](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L644)

Compatibility alias for the single-threaded fast path.

---

<a id="processoptions"></a>

### ProcessOptions

```cpp
using ProcessOptions = uv_process_options_t
```

[Defined in src/base/include/icy/process.h:28](https://github.com/auscaster/icey/blob/main/src/base/include/icy/process.h#L28)

Raw `libuv` process spawn options passed through to `uv_spawn`.

---

<a id="stringmap"></a>

### StringMap

```cpp
using StringMap = std::map< std::string, std::string >
```

[Defined in src/base/include/icy/collection.h:275](https://github.com/auscaster/icey/blob/main/src/base/include/icy/collection.h#L275)

Generic string-to-string map used for headers, options, and environment-style metadata.

---

<a id="stringvec"></a>

### StringVec

```cpp
using StringVec = std::vector< std::string >
```

[Defined in src/base/include/icy/collection.h:278](https://github.com/auscaster/icey/blob/main/src/base/include/icy/collection.h#L278)

Generic string vector used for argument lists and ordered string collections.

---

<a id="optionmap"></a>

### OptionMap

```cpp
using OptionMap = std::map< std::string, std::string >
```

[Defined in src/base/include/icy/application.h:100](https://github.com/auscaster/icey/blob/main/src/base/include/icy/application.h#L100)

Command Line Option Parser.

---

<a id="packetsignal"></a>

### PacketSignal

```cpp
using PacketSignal = Signal< void(IPacket &)>
```

Type: [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal)< void([`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) &)>

[Defined in src/base/include/icy/packetsignal.h:24](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetsignal.h#L24)

[Signal](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal) that broadcasts [`IPacket`](https://auscaster.com/icey/docs/api-reference/icy-IPacket.md#ipacket) types.

---

<a id="packetsource"></a>

### PacketSource

```cpp
using PacketSource = PacketStreamAdapter
```

Type: [`PacketStreamAdapter`](https://auscaster.com/icey/docs/api-reference/icy-PacketStreamAdapter.md#packetstreamadapter)

[Defined in src/base/include/icy/packetstream.h:106](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L106)

For 0.8.x compatibility.

---

<a id="ipacketizer"></a>

### IPacketizer

```cpp
using IPacketizer = PacketProcessor
```

Type: [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor)

[Defined in src/base/include/icy/packetstream.h:141](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L141)

Compatibility alias for a packet processor that packetizes stream output.

---

<a id="idepacketizer"></a>

### IDepacketizer

```cpp
using IDepacketizer = PacketProcessor
```

Type: [`PacketProcessor`](https://auscaster.com/icey/docs/api-reference/icy-PacketProcessor.md#packetprocessor)

[Defined in src/base/include/icy/packetstream.h:142](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L142)

For 0.8.x compatibility.

---

<a id="packetadaptervec"></a>

### PacketAdapterVec

```cpp
using PacketAdapterVec = std::vector< PacketAdapterReference::Ptr >
```

Type: std::vector< [`PacketAdapterReference::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-PacketAdapterReference.md#ptr-1) >

[Defined in src/base/include/icy/packetstream.h:192](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L192)

Ordered list of packet adapter references used for sources and processors.

---

<a id="packetstreamvec"></a>

### PacketStreamVec

```cpp
using PacketStreamVec = std::vector< PacketStream * >
```

Type: std::vector< [`PacketStream`](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#packetstream) * >

[Defined in src/base/include/icy/packetstream.h:653](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L653)

Non-owning list of packet stream pointers used for graph traversal helpers.

---

<a id="packetstreamptrvec"></a>

### PacketStreamPtrVec

```cpp
using PacketStreamPtrVec = std::vector< PacketStream::Ptr >
```

Type: std::vector< [`PacketStream::Ptr`](https://auscaster.com/icey/docs/api-reference/icy-PacketStream.md#ptr-2) >

[Defined in src/base/include/icy/packetstream.h:656](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L656)

Owning list of packet stream handles retained across stream graphs.

---

<a id="packetcreationstrategyptr"></a>

### PacketCreationStrategyPtr

```cpp
using PacketCreationStrategyPtr = std::unique_ptr< IPacketCreationStrategy >
```

Type: std::unique_ptr< [`IPacketCreationStrategy`](https://auscaster.com/icey/docs/api-reference/icy-IPacketCreationStrategy.md#ipacketcreationstrategy) >

[Defined in src/base/include/icy/packetfactory.h:46](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetfactory.h#L46)

Owning handle for one packet creation strategy.

---

<a id="packetcreationstrategylist"></a>

### PacketCreationStrategyList

```cpp
using PacketCreationStrategyList = std::vector< PacketCreationStrategyPtr >
```

Type: std::vector< [`PacketCreationStrategyPtr`](#packetcreationstrategyptr) >

[Defined in src/base/include/icy/packetfactory.h:49](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetfactory.h#L49)

Ordered list of packet creation strategies consulted by a packet factory.

## Functions

| Return | Name | Description |
|--------|------|-------------|
| `void` | [`runOnce`](#runonce)  | Schedules func to run once at the beginning of the next event loop iteration. Uses a uv_prepare_t handle that self-destructs after the first invocation. |
| `std::string` | [`formatError`](#formaterror) `inline` | Formats a human-readable error string from a message and a libuv error code. If `err` is not `UV_UNKNOWN`, the libuv error description is appended after a colon. |
| `void` | [`throwError`](#throwerror) `inline` | Throws a `std::runtime_error` with a formatted error message. |
| [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) | [`mutableBuffer`](#mutablebuffer) `inline` | Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from an arbitrary pointer and size. |
| [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) | [`mutableBuffer`](#mutablebuffer-1) `inline` | Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a `std::string`. |
| [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) | [`mutableBuffer`](#mutablebuffer-2) `inline` | Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a const `std::string`. Casts away constness; use with care. |
| [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) | [`mutableBuffer`](#mutablebuffer-3) `inline` | Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a const `std::vector`. Casts away constness; use with care. |
| [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) | [`mutableBuffer`](#mutablebuffer-4) `inline` | Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a `Buffer`. |
| [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) | [`mutableBuffer`](#mutablebuffer-5) `inline` | Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a const `Buffer`. Casts away constness; use with care. |
| [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) | [`constBuffer`](#constbuffer) `inline` | Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from an arbitrary pointer and size. |
| [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) | [`constBuffer`](#constbuffer-1) `inline` | Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a `std::string`. |
| [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) | [`constBuffer`](#constbuffer-2) `inline` | Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a `std::vector`. |
| constexpr [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) | [`constBuffer`](#constbuffer-3) `inline` `constexpr` | Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6). |
| [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) | [`constBuffer`](#constbuffer-4) `inline` | Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a `Buffer`. |
| [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) | [`constBuffer`](#constbuffer-5) `inline` | Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a const `Buffer`. Casts away constness internally; use with care. |
| `constexpr PointerToPodType` | [`bufferCast`](#buffercast) `inline` `constexpr` | Casts a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) to a specified pointer-to-POD type. |
| `constexpr PointerToPodType` | [`bufferCast`](#buffercast-1) `inline` `constexpr` | Casts a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) to a specified pointer-to-POD type. |
| [`Level`](#level) | [`getLevelFromString`](#getlevelfromstring) `inline` | Converts a log level string to its corresponding `Level` enum value. Unrecognized strings default to [`Level::Trace`](#level). |
| `const char *` | [`getStringFromLevel`](#getstringfromlevel) `inline` | Converts a `Level` enum value to its lowercase string representation. |
| `void` | [`logArgs`](#logargs)  | Write a single logging argument into the destination stream. |
| `void` | [`logArgs`](#logargs-1)  | Write multiple logging arguments into the destination stream in order. |
| `constexpr const char *` | [`str_end`](#str_end) `constexpr` | Return a pointer to the null terminator of a C string. |
| `constexpr bool` | [`str_slant`](#str_slant) `constexpr` | Return true if the C string contains a forward or back slash. |
| `constexpr const char *` | [`r_slant`](#r_slant) `constexpr` | Walk backward to the character after the last path separator. |
| `constexpr const char *` | [`_fileName`](#_filename) `constexpr` | Return the filename portion of a compile-time path string. |
| `std::string` | [`_methodName`](#_methodname) `inline` | Extract the class-qualified method name from a compiler pretty-function string. |
| `void` | [`deleteLater`](#deletelater) `inline` | Schedules deferred deletion of ptr on the next event loop iteration. This is essential for deleting objects that may still be referenced by pending libuv callbacks (e.g. socket adapters with in-flight I/O). Uses a self-cleaning uv_idle_t handle that fires once and then closes itself. |
| [`IntrusivePtr`](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr)< T > | [`makeIntrusive`](#makeintrusive)  | Creates an [IntrusivePtr](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr) managing a newly heap-allocated T. Equivalent to std::make_shared. |
| `std::shared_ptr< internal::Slot< RT, Args... > >` | [`slot`](#slot)  | Creates a slot that binds a non-const class member function to an instance. |
| `std::shared_ptr< internal::Slot< RT, Args... > >` | [`slot`](#slot-1)  | Creates a slot that wraps a free (static) function pointer. |
| `void` | [`swap`](#swap) `inline` | Exchange two [DateTime](https://auscaster.com/icey/docs/api-reference/icy-DateTime.md#datetime) values. |
| `void` | [`swap`](#swap-1) `inline` | Exchange two [LocalDateTime](https://auscaster.com/icey/docs/api-reference/icy-LocalDateTime.md#localdatetime) values. |
| `void` | [`swap`](#swap-2) `inline` | Exchange two [Timestamp](https://auscaster.com/icey/docs/api-reference/icy-Timestamp.md#timestamp-2) values. |
| `void` | [`swap`](#swap-3) `inline` | Exchange two [Timespan](https://auscaster.com/icey/docs/api-reference/icy-Timespan.md#timespan) values. |
| `std::string` | [`getExePath`](#getexepath)  | Cross-platform utilities. |
| `std::string` | [`getCwd`](#getcwd)  | Return the current working directory. |
| `uint64_t` | [`getFreeMemory`](#getfreememory)  | Returns the current amount of free memory. |
| `uint64_t` | [`getTotalMemory`](#gettotalmemory)  | Returns the current amount of used memory. |
| `int` | [`numCpuCores`](#numcpucores)  | Returns the number of CPU cores. |
| `void` | [`sleep`](#sleep)  | Pause the current thread for the given ms duration. |
| `void` | [`pause`](#pause)  | Pause the current thread until enter is pressed. |
| `std::string` | [`getHostname`](#gethostname)  | Return the system hostname. |
| `std::string` | [`getEnv`](#getenv)  | Return an environment variable or the default value. |
| `bool` | [`getEnvBool`](#getenvbool)  | Return an environment variable boolean or the default value. The variable must be `1` or `true` for this function to return true. |
| `void` | [`set8`](#set8) `inline` | Writes a single byte at the given offset in memory. |
| `uint8_t` | [`get8`](#get8) `inline` | Reads a single byte at the given offset from memory. |
| `void` | [`setBE16`](#setbe16) `inline` | Writes a 16-bit value to memory in big-endian byte order. |
| `void` | [`setBE32`](#setbe32) `inline` | Writes a 32-bit value to memory in big-endian byte order. |
| `void` | [`setBE64`](#setbe64) `inline` | Writes a 64-bit value to memory in big-endian byte order. |
| `uint16_t` | [`getBE16`](#getbe16) `inline` | Reads a 16-bit big-endian value from memory. |
| `uint32_t` | [`getBE32`](#getbe32) `inline` | Reads a 32-bit big-endian value from memory. |
| `uint64_t` | [`getBE64`](#getbe64) `inline` | Reads a 64-bit big-endian value from memory. |
| `void` | [`setLE16`](#setle16) `inline` | Writes a 16-bit value to memory in little-endian byte order. |
| `void` | [`setLE32`](#setle32) `inline` | Writes a 32-bit value to memory in little-endian byte order. |
| `void` | [`setLE64`](#setle64) `inline` | Writes a 64-bit value to memory in little-endian byte order. |
| `uint16_t` | [`getLE16`](#getle16) `inline` | Reads a 16-bit little-endian value from memory. |
| `uint32_t` | [`getLE32`](#getle32) `inline` | Reads a 32-bit little-endian value from memory. |
| `uint64_t` | [`getLE64`](#getle64) `inline` | Reads a 64-bit little-endian value from memory. |
| `bool` | [`isBigEndian`](#isbigendian) `inline` | Returns true if the host CPU is big-endian. |
| `uint16_t` | [`hostToNetwork16`](#hosttonetwork16) `inline` | Converts a 16-bit value from host byte order to network (big-endian) byte order. |
| `uint32_t` | [`hostToNetwork32`](#hosttonetwork32) `inline` | Converts a 32-bit value from host byte order to network (big-endian) byte order. |
| `uint64_t` | [`hostToNetwork64`](#hosttonetwork64) `inline` | Converts a 64-bit value from host byte order to network (big-endian) byte order. |
| `uint16_t` | [`networkToHost16`](#networktohost16) `inline` | Converts a 16-bit value from network (big-endian) byte order to host byte order. |
| `uint32_t` | [`networkToHost32`](#networktohost32) `inline` | Converts a 32-bit value from network (big-endian) byte order to host byte order. |
| `uint64_t` | [`networkToHost64`](#networktohost64) `inline` | Converts a 64-bit value from network (big-endian) byte order to host byte order. |
| `void` | [`onShutdownSignal`](#onshutdownsignal) `inline` | Installs a SIGINT handler on the given event loop. When the signal fires, `callback` is invoked with `opaque` and the signal handle is closed. |
| `void` | [`waitForShutdown`](#waitforshutdown) `inline` | Installs a SIGINT handler and runs the event loop until shutdown. Equivalent to calling [`onShutdownSignal()`](#onshutdownsignal) then `uv_run()`. |
| `std::shared_ptr< internal::Slot< RT, IT & > >` | [`packetSlot`](#packetslot)  | Creates a signal slot that filters by packet subtype `PT` before invoking `method`. |
| `constexpr unsigned` | [`operator|`](#operator) `constexpr` | Combine PacketFlags values into a bitmask. |
| [`RawPacket`](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) | [`rawPacket`](#rawpacket) `inline` | Constructs a non-owning [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) from a mutable buffer (borrowed pointer). |
| [`RawPacket`](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) | [`rawPacket`](#rawpacket-1) `inline` | Constructs an owning [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) from a const buffer (data is copied). |
| [`RawPacket`](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) | [`rawPacket`](#rawpacket-2) `inline` | Constructs a non-owning [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) from a raw mutable pointer (borrowed). |
| [`RawPacket`](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) | [`rawPacket`](#rawpacket-3) `inline` | Constructs an owning [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) from a const char pointer (data is copied). |

---

<a id="runonce"></a>

### runOnce

```cpp
template<typename Function, typename... Args> void runOnce(uv::Loop * loop, Function && func, Args &&... args)
```

[Defined in src/base/include/icy/once.h:29](https://github.com/auscaster/icey/blob/main/src/base/include/icy/once.h#L29)

Schedules func to run once at the beginning of the next event loop iteration. Uses a uv_prepare_t handle that self-destructs after the first invocation.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop on which to schedule the callback. |
| `func` | `Function &&` | Callable to invoke on the next loop tick. |
| `args` | `Args &&...` | Arguments forwarded to func. |

---

<a id="formaterror"></a>

### formatError

`inline`

```cpp
inline std::string formatError(std::string_view message, int err = UV_UNKNOWN)
```

[Defined in src/base/include/icy/error.h:101](https://github.com/auscaster/icey/blob/main/src/base/include/icy/error.h#L101)

Formats a human-readable error string from a message and a libuv error code. If `err` is not `UV_UNKNOWN`, the libuv error description is appended after a colon. 
#### Returns
Formatted error string.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `message` | `std::string_view` | Descriptive context for the error. |
| `err` | `int` | libuv error code (e.g. from a failed `uv_*` call). Defaults to `UV_UNKNOWN`. |

---

<a id="throwerror"></a>

### throwError

`inline`

```cpp
inline void throwError(std::string_view message, int err = UV_UNKNOWN)
```

[Defined in src/base/include/icy/error.h:116](https://github.com/auscaster/icey/blob/main/src/base/include/icy/error.h#L116)

Throws a `std::runtime_error` with a formatted error message.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `message` | `std::string_view` | Descriptive context for the error. |
| `err` | `int` | libuv error code to append. Defaults to `UV_UNKNOWN`. |

---

<a id="mutablebuffer"></a>

### mutableBuffer

`inline`

```cpp
template<typename T> inline MutableBuffer mutableBuffer(T data, size_t size)
```

[Defined in src/base/include/icy/buffer.h:82](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L82)

Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from an arbitrary pointer and size. 
#### Returns
[`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) referencing the given memory.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `T` | Pointer to the start of the memory region. |
| `size` | `size_t` | Number of bytes in the region. |

---

<a id="mutablebuffer-1"></a>

### mutableBuffer

`inline`

```cpp
inline MutableBuffer mutableBuffer(std::string & str)
```

[Defined in src/base/include/icy/buffer.h:90](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L90)

Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a `std::string`. 
#### Returns
[`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) wrapping the string's internal storage.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `str` | `std::string &` | Source string. Must remain valid while the buffer is in use. |

---

<a id="mutablebuffer-2"></a>

### mutableBuffer

`inline`

```cpp
inline MutableBuffer mutableBuffer(const std::string & str)
```

[Defined in src/base/include/icy/buffer.h:100](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L100)

Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a const `std::string`. Casts away constness; use with care. 
#### Returns
[`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) wrapping the string's internal storage.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `str` | `const std::string &` | Source string. Must remain valid while the buffer is in use. |

---

<a id="mutablebuffer-3"></a>

### mutableBuffer

`inline`

```cpp
template<typename T> inline MutableBuffer mutableBuffer(const std::vector< T > & vec)
```

[Defined in src/base/include/icy/buffer.h:111](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L111)

Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a const `std::vector`. Casts away constness; use with care. 
#### Returns
[`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) wrapping the vector's internal storage.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `vec` | `const std::vector< T > &` | Source vector. Must remain valid while the buffer is in use. |

---

<a id="mutablebuffer-4"></a>

### mutableBuffer

`inline`

```cpp
inline MutableBuffer mutableBuffer(Buffer & buf)
```

[Defined in src/base/include/icy/buffer.h:119](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L119)

Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a `Buffer`. 
#### Returns
[`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) wrapping the buffer's data.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buf` | [`Buffer`](#buffer) & | Source buffer. Must remain valid while the buffer is in use. |

---

<a id="mutablebuffer-5"></a>

### mutableBuffer

`inline`

```cpp
inline MutableBuffer mutableBuffer(const Buffer & buf)
```

[Defined in src/base/include/icy/buffer.h:128](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L128)

Creates a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) from a const `Buffer`. Casts away constness; use with care. 
#### Returns
[`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) wrapping the buffer's data.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buf` | const [`Buffer`](#buffer) & | Source buffer. Must remain valid while the buffer is in use. |

---

<a id="constbuffer"></a>

### constBuffer

`inline`

```cpp
template<typename T> inline ConstBuffer constBuffer(T data, size_t size)
```

[Defined in src/base/include/icy/buffer.h:187](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L187)

Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from an arbitrary pointer and size. 
#### Returns
[`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) referencing the given memory.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `data` | `T` | Pointer to the start of the memory region. |
| `size` | `size_t` | Number of bytes in the region. |

---

<a id="constbuffer-1"></a>

### constBuffer

`inline`

```cpp
inline ConstBuffer constBuffer(const std::string & str)
```

[Defined in src/base/include/icy/buffer.h:195](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L195)

Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a `std::string`. 
#### Returns
[`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) wrapping the string's internal storage.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `str` | `const std::string &` | Source string. Must remain valid while the buffer is in use. |

---

<a id="constbuffer-2"></a>

### constBuffer

`inline`

```cpp
template<typename T> inline ConstBuffer constBuffer(const std::vector< T > & vec)
```

[Defined in src/base/include/icy/buffer.h:205](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L205)

Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a `std::vector`. 
#### Returns
[`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) wrapping the vector's internal storage.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `vec` | `const std::vector< T > &` | Source vector. Must remain valid while the buffer is in use. |

---

<a id="constbuffer-3"></a>

### constBuffer

`inline` `constexpr`

```cpp
constexpr inline constexpr ConstBuffer constBuffer(const MutableBuffer & buf)
```

[Defined in src/base/include/icy/buffer.h:213](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L213)

Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6). 
#### Returns
[`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) referencing the same memory region.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buf` | const [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) & | Source mutable buffer. |

---

<a id="constbuffer-4"></a>

### constBuffer

`inline`

```cpp
template<typename T> inline ConstBuffer constBuffer(Buffer & buf)
```

[Defined in src/base/include/icy/buffer.h:223](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L223)

Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a `Buffer`. 
#### Returns
[`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) wrapping the buffer's data.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buf` | [`Buffer`](#buffer) & | Source buffer. Must remain valid while the buffer is in use. |

---

<a id="constbuffer-5"></a>

### constBuffer

`inline`

```cpp
template<typename T> inline ConstBuffer constBuffer(const Buffer & buf)
```

[Defined in src/base/include/icy/buffer.h:234](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L234)

Creates a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) from a const `Buffer`. Casts away constness internally; use with care. 
#### Returns
[`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) wrapping the buffer's data.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `buf` | const [`Buffer`](#buffer) & | Source buffer. Must remain valid while the buffer is in use. |

---

<a id="buffercast"></a>

### bufferCast

`inline` `constexpr`

```cpp
template<typename PointerToPodType> constexpr inline constexpr PointerToPodType bufferCast(const MutableBuffer & b)
```

[Defined in src/base/include/icy/buffer.h:250](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L250)

Casts a [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) to a specified pointer-to-POD type. 
#### Returns
Pointer to the buffer's data, cast to `PointerToPodType`.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `b` | const [`MutableBuffer`](https://auscaster.com/icey/docs/api-reference/icy-MutableBuffer.md#mutablebuffer-6) & | Source mutable buffer. |

---

<a id="buffercast-1"></a>

### bufferCast

`inline` `constexpr`

```cpp
template<typename PointerToPodType> constexpr inline constexpr PointerToPodType bufferCast(const ConstBuffer & b)
```

[Defined in src/base/include/icy/buffer.h:261](https://github.com/auscaster/icey/blob/main/src/base/include/icy/buffer.h#L261)

Casts a [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) to a specified pointer-to-POD type. 
#### Returns
Pointer to the buffer's data, cast to `PointerToPodType`.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `b` | const [`ConstBuffer`](https://auscaster.com/icey/docs/api-reference/icy-ConstBuffer.md#constbuffer-6) & | Source const buffer. |

---

<a id="getlevelfromstring"></a>

### getLevelFromString

`inline`

```cpp
inline Level getLevelFromString(const char * level)
```

[Defined in src/base/include/icy/logger.h:53](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L53)

Converts a log level string to its corresponding `Level` enum value. Unrecognized strings default to [`Level::Trace`](#level). 
#### Returns
The matching `Level` enum value.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `level` | `const char *` | Lowercase level string: "trace", "debug", "info", "warn", "error", or "fatal". |

---

<a id="getstringfromlevel"></a>

### getStringFromLevel

`inline`

```cpp
inline const char * getStringFromLevel(Level level)
```

[Defined in src/base/include/icy/logger.h:74](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L74)

Converts a `Level` enum value to its lowercase string representation. 
#### Returns
Lowercase C string: "trace", "debug", "info", "warn", "error", or "fatal".

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `level` | [`Level`](#level) | The log level to convert. |

---

<a id="logargs"></a>

### logArgs

```cpp
template<typename T> void logArgs(std::ostream & o, T && t)
```

[Defined in src/base/include/icy/logger.h:255](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L255)

Write a single logging argument into the destination stream.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `o` | `std::ostream &` | Destination stream. |
| `t` | `T &&` | Argument to append with operator<<. |

---

<a id="logargs-1"></a>

### logArgs

```cpp
template<typename T, typename... Args> void logArgs(std::ostream & o, T && t, Args &&... args)
```

[Defined in src/base/include/icy/logger.h:265](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L265)

Write multiple logging arguments into the destination stream in order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `o` | `std::ostream &` | Destination stream. |
| `t` | `T &&` | First argument to append. |
| `args` | `Args &&...` | Remaining arguments to append recursively. |

---

<a id="str_end"></a>

### str_end

`constexpr`

```cpp
constexpr constexpr const char * str_end(const char * str)
```

[Defined in src/base/include/icy/logger.h:582](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L582)

Return a pointer to the null terminator of a C string.

---

<a id="str_slant"></a>

### str_slant

`constexpr`

```cpp
constexpr constexpr bool str_slant(const char * str)
```

[Defined in src/base/include/icy/logger.h:588](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L588)

Return true if the C string contains a forward or back slash.

---

<a id="r_slant"></a>

### r_slant

`constexpr`

```cpp
constexpr constexpr const char * r_slant(const char * str)
```

[Defined in src/base/include/icy/logger.h:594](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L594)

Walk backward to the character after the last path separator.

---

<a id="_filename"></a>

### _fileName

`constexpr`

```cpp
constexpr constexpr const char * _fileName(const char * str)
```

[Defined in src/base/include/icy/logger.h:600](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L600)

Return the filename portion of a compile-time path string.

---

<a id="_methodname"></a>

### _methodName

`inline`

```cpp
inline std::string _methodName(std::string_view fsig)
```

[Defined in src/base/include/icy/logger.h:617](https://github.com/auscaster/icey/blob/main/src/base/include/icy/logger.h#L617)

Extract the class-qualified method name from a compiler pretty-function string.

---

<a id="deletelater"></a>

### deleteLater

`inline`

```cpp
template<typename T> inline void deleteLater(T * ptr, uv::Loop * loop)
```

[Defined in src/base/include/icy/memory.h:32](https://github.com/auscaster/icey/blob/main/src/base/include/icy/memory.h#L32)

Schedules deferred deletion of ptr on the next event loop iteration. This is essential for deleting objects that may still be referenced by pending libuv callbacks (e.g. socket adapters with in-flight I/O). Uses a self-cleaning uv_idle_t handle that fires once and then closes itself.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `ptr` | `T *` | Object to delete. Does nothing if nullptr. |
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop on which to schedule the deletion. |

---

<a id="makeintrusive"></a>

### makeIntrusive

```cpp
template<typename T, typename... Args> IntrusivePtr< T > makeIntrusive(Args &&... args)
```

[Defined in src/base/include/icy/memory.h:206](https://github.com/auscaster/icey/blob/main/src/base/include/icy/memory.h#L206)

Creates an [IntrusivePtr](https://auscaster.com/icey/docs/api-reference/icy-IntrusivePtr.md#intrusiveptr) managing a newly heap-allocated T. Equivalent to std::make_shared. 
#### Returns
IntrusivePtr<T> owning the new object.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `args` | `Args &&...` | Arguments forwarded to T's constructor. |

---

<a id="slot"></a>

### slot

```cpp
template<class Class, class RT, typename... Args> std::shared_ptr< internal::Slot< RT, Args... > > slot(Class * instance, RT(Class::*)(Args...) method, int id = -1, int priority = -1)
```

[Defined in src/base/include/icy/signal.h:667](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L667)

Creates a slot that binds a non-const class member function to an instance.

The returned `SlotPtr` can be passed to `Signal::attach()` or `operator+=`, and to `Signal::detach()` or `operator-=` to disconnect it later.

#### Returns
A `SlotPtr` ready to attach to a compatible [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal).

Creates a slot that binds a `const` class member function to an instance. Uses the same slot ID and priority rules as the non-const overload above.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `instance` | `Class *` | Pointer to the object on which `method` will be called. |
| `method` | `RT(Class::*)(Args...)` | Pointer to the non-const member function to bind. |
| `id` | `int` | Explicit slot ID to assign; pass `-1` to auto-assign. |
| `priority` | `int` | Higher values are called first; pass `-1` for default ordering. |

---

<a id="slot-1"></a>

### slot

```cpp
template<class RT, typename... Args> std::shared_ptr< internal::Slot< RT, Args... > > slot(RT(*)(Args...) method, int id = -1, int priority = -1)
```

[Defined in src/base/include/icy/signal.h:693](https://github.com/auscaster/icey/blob/main/src/base/include/icy/signal.h#L693)

Creates a slot that wraps a free (static) function pointer.

#### Returns
A `SlotPtr` ready to attach to a compatible [`Signal`](https://auscaster.com/icey/docs/api-reference/icy-Signal.md#signal).

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `method` | `RT(*)(Args...)` | Pointer to the free function to bind. |
| `id` | `int` | Explicit slot ID to assign; pass `-1` to auto-assign. |
| `priority` | `int` | Higher values are called first; pass `-1` for default ordering. |

---

<a id="swap"></a>

### swap

`inline`

```cpp
inline void swap(DateTime & d1, DateTime & d2)
```

[Defined in src/base/include/icy/datetime.h:631](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L631)

Exchange two [DateTime](https://auscaster.com/icey/docs/api-reference/icy-DateTime.md#datetime) values.

---

<a id="swap-1"></a>

### swap

`inline`

```cpp
inline void swap(LocalDateTime & d1, LocalDateTime & d2)
```

[Defined in src/base/include/icy/datetime.h:1044](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L1044)

Exchange two [LocalDateTime](https://auscaster.com/icey/docs/api-reference/icy-LocalDateTime.md#localdatetime) values.

---

<a id="swap-2"></a>

### swap

`inline`

```cpp
inline void swap(Timestamp & s1, Timestamp & s2)
```

[Defined in src/base/include/icy/datetime.h:1491](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L1491)

Exchange two [Timestamp](https://auscaster.com/icey/docs/api-reference/icy-Timestamp.md#timestamp-2) values.

---

<a id="swap-3"></a>

### swap

`inline`

```cpp
inline void swap(Timespan & s1, Timespan & s2)
```

[Defined in src/base/include/icy/datetime.h:1647](https://github.com/auscaster/icey/blob/main/src/base/include/icy/datetime.h#L1647)

Exchange two [Timespan](https://auscaster.com/icey/docs/api-reference/icy-Timespan.md#timespan) values.

---

<a id="getexepath"></a>

### getExePath

```cpp
std::string getExePath()
```

[Defined in src/base/include/icy/platform.h:30](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L30)

Cross-platform utilities.

Returns the current executable path.

---

<a id="getcwd"></a>

### getCwd

```cpp
std::string getCwd()
```

[Defined in src/base/include/icy/platform.h:33](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L33)

Return the current working directory.

---

<a id="getfreememory"></a>

### getFreeMemory

```cpp
uint64_t getFreeMemory()
```

[Defined in src/base/include/icy/platform.h:36](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L36)

Returns the current amount of free memory.

---

<a id="gettotalmemory"></a>

### getTotalMemory

```cpp
uint64_t getTotalMemory()
```

[Defined in src/base/include/icy/platform.h:39](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L39)

Returns the current amount of used memory.

---

<a id="numcpucores"></a>

### numCpuCores

```cpp
int numCpuCores()
```

[Defined in src/base/include/icy/platform.h:42](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L42)

Returns the number of CPU cores.

---

<a id="sleep"></a>

### sleep

```cpp
void sleep(int ms)
```

[Defined in src/base/include/icy/platform.h:45](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L45)

Pause the current thread for the given ms duration.

---

<a id="pause"></a>

### pause

```cpp
void pause()
```

[Defined in src/base/include/icy/platform.h:48](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L48)

Pause the current thread until enter is pressed.

---

<a id="gethostname"></a>

### getHostname

```cpp
std::string getHostname()
```

[Defined in src/base/include/icy/platform.h:51](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L51)

Return the system hostname.

---

<a id="getenv"></a>

### getEnv

```cpp
std::string getEnv(std::string_view name, std::string_view defaultValue = "")
```

[Defined in src/base/include/icy/platform.h:54](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L54)

Return an environment variable or the default value.

---

<a id="getenvbool"></a>

### getEnvBool

```cpp
bool getEnvBool(std::string_view name)
```

[Defined in src/base/include/icy/platform.h:58](https://github.com/auscaster/icey/blob/main/src/base/include/icy/platform.h#L58)

Return an environment variable boolean or the default value. The variable must be `1` or `true` for this function to return true.

---

<a id="set8"></a>

### set8

`inline`

```cpp
inline void set8(void * memory, size_t offset, uint8_t v)
```

[Defined in src/base/include/icy/byteorder.h:42](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L42)

Writes a single byte at the given offset in memory.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `void *` | Pointer to the destination buffer. |
| `offset` | `size_t` | Byte offset within the buffer. |
| `v` | `uint8_t` | Value to write. |

---

<a id="get8"></a>

### get8

`inline`

```cpp
inline uint8_t get8(const void * memory, size_t offset)
```

[Defined in src/base/include/icy/byteorder.h:51](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L51)

Reads a single byte at the given offset from memory. 
#### Returns
The byte value at the specified offset.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `const void *` | Pointer to the source buffer. |
| `offset` | `size_t` | Byte offset within the buffer. |

---

<a id="setbe16"></a>

### setBE16

`inline`

```cpp
inline void setBE16(void * memory, uint16_t v)
```

[Defined in src/base/include/icy/byteorder.h:59](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L59)

Writes a 16-bit value to memory in big-endian byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `void *` | Pointer to the destination buffer (must be at least 2 bytes). |
| `v` | `uint16_t` | Value to write. |

---

<a id="setbe32"></a>

### setBE32

`inline`

```cpp
inline void setBE32(void * memory, uint32_t v)
```

[Defined in src/base/include/icy/byteorder.h:68](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L68)

Writes a 32-bit value to memory in big-endian byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `void *` | Pointer to the destination buffer (must be at least 4 bytes). |
| `v` | `uint32_t` | Value to write. |

---

<a id="setbe64"></a>

### setBE64

`inline`

```cpp
inline void setBE64(void * memory, uint64_t v)
```

[Defined in src/base/include/icy/byteorder.h:79](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L79)

Writes a 64-bit value to memory in big-endian byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `void *` | Pointer to the destination buffer (must be at least 8 bytes). |
| `v` | `uint64_t` | Value to write. |

---

<a id="getbe16"></a>

### getBE16

`inline`

```cpp
inline uint16_t getBE16(const void * memory)
```

[Defined in src/base/include/icy/byteorder.h:94](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L94)

Reads a 16-bit big-endian value from memory. 
#### Returns
The 16-bit value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `const void *` | Pointer to the source buffer (must be at least 2 bytes). |

---

<a id="getbe32"></a>

### getBE32

`inline`

```cpp
inline uint32_t getBE32(const void * memory)
```

[Defined in src/base/include/icy/byteorder.h:103](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L103)

Reads a 32-bit big-endian value from memory. 
#### Returns
The 32-bit value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `const void *` | Pointer to the source buffer (must be at least 4 bytes). |

---

<a id="getbe64"></a>

### getBE64

`inline`

```cpp
inline uint64_t getBE64(const void * memory)
```

[Defined in src/base/include/icy/byteorder.h:114](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L114)

Reads a 64-bit big-endian value from memory. 
#### Returns
The 64-bit value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `const void *` | Pointer to the source buffer (must be at least 8 bytes). |

---

<a id="setle16"></a>

### setLE16

`inline`

```cpp
inline void setLE16(void * memory, uint16_t v)
```

[Defined in src/base/include/icy/byteorder.h:129](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L129)

Writes a 16-bit value to memory in little-endian byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `void *` | Pointer to the destination buffer (must be at least 2 bytes). |
| `v` | `uint16_t` | Value to write. |

---

<a id="setle32"></a>

### setLE32

`inline`

```cpp
inline void setLE32(void * memory, uint32_t v)
```

[Defined in src/base/include/icy/byteorder.h:138](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L138)

Writes a 32-bit value to memory in little-endian byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `void *` | Pointer to the destination buffer (must be at least 4 bytes). |
| `v` | `uint32_t` | Value to write. |

---

<a id="setle64"></a>

### setLE64

`inline`

```cpp
inline void setLE64(void * memory, uint64_t v)
```

[Defined in src/base/include/icy/byteorder.h:149](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L149)

Writes a 64-bit value to memory in little-endian byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `void *` | Pointer to the destination buffer (must be at least 8 bytes). |
| `v` | `uint64_t` | Value to write. |

---

<a id="getle16"></a>

### getLE16

`inline`

```cpp
inline uint16_t getLE16(const void * memory)
```

[Defined in src/base/include/icy/byteorder.h:164](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L164)

Reads a 16-bit little-endian value from memory. 
#### Returns
The 16-bit value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `const void *` | Pointer to the source buffer (must be at least 2 bytes). |

---

<a id="getle32"></a>

### getLE32

`inline`

```cpp
inline uint32_t getLE32(const void * memory)
```

[Defined in src/base/include/icy/byteorder.h:173](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L173)

Reads a 32-bit little-endian value from memory. 
#### Returns
The 32-bit value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `const void *` | Pointer to the source buffer (must be at least 4 bytes). |

---

<a id="getle64"></a>

### getLE64

`inline`

```cpp
inline uint64_t getLE64(const void * memory)
```

[Defined in src/base/include/icy/byteorder.h:184](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L184)

Reads a 64-bit little-endian value from memory. 
#### Returns
The 64-bit value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `memory` | `const void *` | Pointer to the source buffer (must be at least 8 bytes). |

---

<a id="isbigendian"></a>

### isBigEndian

`inline`

```cpp
inline bool isBigEndian()
```

[Defined in src/base/include/icy/byteorder.h:198](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L198)

Returns true if the host CPU is big-endian. 
#### Returns
true if the host byte order is big-endian, false if little-endian.

---

<a id="hosttonetwork16"></a>

### hostToNetwork16

`inline`

```cpp
inline uint16_t hostToNetwork16(uint16_t n)
```

[Defined in src/base/include/icy/byteorder.h:207](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L207)

Converts a 16-bit value from host byte order to network (big-endian) byte order. 
#### Returns
Value in network byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `n` | `uint16_t` | Value in host byte order. |

---

<a id="hosttonetwork32"></a>

### hostToNetwork32

`inline`

```cpp
inline uint32_t hostToNetwork32(uint32_t n)
```

[Defined in src/base/include/icy/byteorder.h:217](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L217)

Converts a 32-bit value from host byte order to network (big-endian) byte order. 
#### Returns
Value in network byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `n` | `uint32_t` | Value in host byte order. |

---

<a id="hosttonetwork64"></a>

### hostToNetwork64

`inline`

```cpp
inline uint64_t hostToNetwork64(uint64_t n)
```

[Defined in src/base/include/icy/byteorder.h:227](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L227)

Converts a 64-bit value from host byte order to network (big-endian) byte order. 
#### Returns
Value in network byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `n` | `uint64_t` | Value in host byte order. |

---

<a id="networktohost16"></a>

### networkToHost16

`inline`

```cpp
inline uint16_t networkToHost16(uint16_t n)
```

[Defined in src/base/include/icy/byteorder.h:237](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L237)

Converts a 16-bit value from network (big-endian) byte order to host byte order. 
#### Returns
Value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `n` | `uint16_t` | Value in network byte order. |

---

<a id="networktohost32"></a>

### networkToHost32

`inline`

```cpp
inline uint32_t networkToHost32(uint32_t n)
```

[Defined in src/base/include/icy/byteorder.h:245](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L245)

Converts a 32-bit value from network (big-endian) byte order to host byte order. 
#### Returns
Value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `n` | `uint32_t` | Value in network byte order. |

---

<a id="networktohost64"></a>

### networkToHost64

`inline`

```cpp
inline uint64_t networkToHost64(uint64_t n)
```

[Defined in src/base/include/icy/byteorder.h:253](https://github.com/auscaster/icey/blob/main/src/base/include/icy/byteorder.h#L253)

Converts a 64-bit value from network (big-endian) byte order to host byte order. 
#### Returns
Value in host byte order.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `n` | `uint64_t` | Value in network byte order. |

---

<a id="onshutdownsignal"></a>

### onShutdownSignal

`inline`

```cpp
inline void onShutdownSignal(std::function< void(void *)> callback = nullptr, void * opaque = nullptr, uv::Loop * loop = uv::defaultLoop())
```

[Defined in src/base/include/icy/application.h:163](https://github.com/auscaster/icey/blob/main/src/base/include/icy/application.h#L163)

Installs a SIGINT handler on the given event loop. When the signal fires, `callback` is invoked with `opaque` and the signal handle is closed.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `callback` | `std::function< void(void *)>` | Optional function called on SIGINT. |
| `opaque` | `void *` | Optional user data pointer passed to the callback. |
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop to attach the signal watcher to. |

---

<a id="waitforshutdown"></a>

### waitForShutdown

`inline`

```cpp
inline void waitForShutdown(std::function< void(void *)> callback = nullptr, void * opaque = nullptr, uv::Loop * loop = uv::defaultLoop())
```

[Defined in src/base/include/icy/application.h:187](https://github.com/auscaster/icey/blob/main/src/base/include/icy/application.h#L187)

Installs a SIGINT handler and runs the event loop until shutdown. Equivalent to calling [`onShutdownSignal()`](#onshutdownsignal) then `uv_run()`.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `callback` | `std::function< void(void *)>` | Optional function called on SIGINT before the loop exits. |
| `opaque` | `void *` | Optional user data pointer passed to the callback. |
| `loop` | [`uv::Loop`](https://auscaster.com/icey/docs/api-reference/uv.md#loop-1) * | Event loop to run. |

---

<a id="packetslot"></a>

### packetSlot

```cpp
template<class Class, class RT, class PT, class IT = IPacket> std::shared_ptr< internal::Slot< RT, IT & > > packetSlot(Class * instance, RT(Class::*)(PT &) method, int id = -1, int priority = -1)
```

[Defined in src/base/include/icy/packetsignal.h:45](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetsignal.h#L45)

Creates a signal slot that filters by packet subtype `PT` before invoking `method`.

The returned slot is connected to a `PacketSignal` (which broadcasts `IPacket&`). The slot performs a `dynamic_cast` on each received packet; if the cast succeeds, the listener method is called with the derived type `PT`. Non-matching packets are silently ignored.

#### Returns
A shared slot suitable for connecting to a `PacketSignal`.

#### Parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `instance` | `Class *` | Pointer to the listener object. |
| `method` | `RT(Class::*)(PT &)` | Member function pointer on `Class` accepting a `PT&`. |
| `id` | `int` | Optional slot identifier; -1 for automatic assignment. |
| `priority` | `int` | Optional slot priority; higher values run first. |

---

<a id="operator"></a>

### operator|

`constexpr`

```cpp
constexpr constexpr unsigned operator|(PacketFlags lhs, PacketFlags rhs)
```

[Defined in src/base/include/icy/packetstream.h:218](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packetstream.h#L218)

Combine PacketFlags values into a bitmask.

---

<a id="rawpacket"></a>

### rawPacket

`inline`

```cpp
inline RawPacket rawPacket(const MutableBuffer & buf, unsigned flags = 0, std::unique_ptr< IPacketInfo > info = nullptr)
```

[Defined in src/base/include/icy/packet.h:269](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L269)

Constructs a non-owning [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) from a mutable buffer (borrowed pointer).

---

<a id="rawpacket-1"></a>

### rawPacket

`inline`

```cpp
inline RawPacket rawPacket(const ConstBuffer & buf, unsigned flags = 0, std::unique_ptr< IPacketInfo > info = nullptr)
```

[Defined in src/base/include/icy/packet.h:276](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L276)

Constructs an owning [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) from a const buffer (data is copied).

---

<a id="rawpacket-2"></a>

### rawPacket

`inline`

```cpp
inline RawPacket rawPacket(char * data = nullptr, size_t size = 0, unsigned flags = 0, std::unique_ptr< IPacketInfo > info = nullptr)
```

[Defined in src/base/include/icy/packet.h:283](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L283)

Constructs a non-owning [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) from a raw mutable pointer (borrowed).

---

<a id="rawpacket-3"></a>

### rawPacket

`inline`

```cpp
inline RawPacket rawPacket(const char * data = nullptr, size_t size = 0, unsigned flags = 0, std::unique_ptr< IPacketInfo > info = nullptr)
```

[Defined in src/base/include/icy/packet.h:291](https://github.com/auscaster/icey/blob/main/src/base/include/icy/packet.h#L291)

Constructs an owning [RawPacket](https://auscaster.com/icey/docs/api-reference/icy-RawPacket.md#rawpacket-4) from a const char pointer (data is copied).
