Core Module
The Core module provides the fundamental building blocks and runtime primitives for the Join framework. It includes networking, concurrency, I/O, and utility components.
๐ Networking
MAC Address
48-bit MAC address representation with parsing, formatting, and comparison.
IP Address
IP address abstraction supporting both IPv4 and IPv6: parsing, formatting, network and broadcast address calculation, and comparison.
Endpoints
Network endpoint representation combining an IP address and a port, with support for both address families.
Protocol
Protocol definitions and type system for the different socket kinds.
Sockets
Socket abstractions for various protocols:
- TCP โ stream-oriented reliable connections
- UDP โ connectionless datagram protocol
- TLS/SSL โ encrypted secure communications
- Unix Domain โ inter-process communication (stream and datagram)
- Raw โ direct IP packet access
- ICMP โ Internet Control Message Protocol
- Netlink โ Linux kernel communication
Acceptors
Server-side socket abstractions for accepting incoming connections: TCP, TLS, and Unix stream.
Socket Streams
Buffered stream interface for sockets with std::iostream integration, including stream operators (<<, >>).
โก Reactor
Event-driven I/O multiplexing built on Linux epoll:
Reactorโ embeddable event loop; callrun()to start,stop()to terminateReactorThreadโ singleton wrapper that owns aReactoron a dedicated background threadEventHandlerโ interface for I/O event callbacks (onReceive,onClose,onError)
See Reactor for full documentation.
๐งต Threading & Concurrency
Thread
POSIX thread wrapper with core affinity, real-time priority, move semantics, non-blocking join (tryJoin), and running state query.
See Thread for full documentation.
Thread Pool
Worker pool for parallel task execution. Default worker count is based on CpuTopology (physical core count). Provides distribute() and parallelForEach() parallel algorithms.
See Thread Pool for full documentation.
CPU Topology
Runtime detector for the physical CPU layout: sockets, cores, hardware threads (SMT/HT), and NUMA nodes. Read from Linux sysfs. Used internally by ThreadPool and distribute().
See CPU Topology for full documentation.
Mutex
Mutexโ standard mutual exclusion lockRecursiveMutexโ re-entrant locking for the same threadSharedMutexโ inter-process synchronization via shared memory
Condition Variables
Conditionโ standard condition variableSharedConditionโ condition variable for shared memory
Semaphore
Semaphoreโ counting semaphore (named and unnamed)SharedSemaphoreโ semaphore for shared memory
๐ Lock-Free Queues & Allocator
High-performance lock-free primitives built on top of the memory backends:
Spscโ single-producer / single-consumer queue (lowest overhead)Mpscโ multi-producer / single-consumer queueMpmcโ multi-producer / multi-consumer queueBasicArenaโ lock-free slab allocator with multiple fixed-size pools
Backed by either LocalMem (anonymous private memory) or ShmMem (POSIX shared memory). Supports blocking and non-blocking push/pop, NUMA binding, and memory locking.
See Memory, Queue, Allocator, and Backoff for full documentation.
โฑ๏ธ Timers
High-resolution timers built on Linux timerfd, integrated with the reactor:
Monotonic::Timerโ usesCLOCK_MONOTONIC, unaffected by system clock changesRealTime::Timerโ usesCLOCK_REALTIME, follows wall-clock adjustments
Supports one-shot, absolute time-point, and periodic modes. Nanosecond precision.
See Timer for full documentation.
๐๏ธ Utilities
File System
File I/O helpers, path manipulation, and file status queries.
Variant
Type-safe union implementation with exception-safe operations and comparison operators.
Traits
Compile-time type utilities: parameter pack manipulation (find_index, find_element, match_t), type checking (is_unique, is_alternative, count), and constructor control (EnableDefault).
Utils
General-purpose utilities: byte order conversion, string manipulation (trim, split, replace, case-insensitive compare), benchmarking, and random generation.
OpenSSL
OpenSSL library management and RAII smart pointer wrappers.
๐จ Error Handling
Custom error handling system: error category, thread-local error state (join::lastError), integration with std::error_code, and OpenSSL error integration.