DelegateMQ is a C++17 header-only messaging library for invoking any callable — function, method, or lambda — synchronously, asynchronously, or remotely across threads, processes, and processors.
| Feature | Description |
|---|---|
| Synchronous Delegates | Type-safe callable wrappers — free functions, members, lambdas |
| Asynchronous Delegates | Fire-and-forget or blocking dispatch to any worker thread |
| Signal & Slot | Thread-safe multicast with RAII ScopedConnection handles |
| DataBus | Topic-based publish/subscribe across threads or network nodes |
| Remote Delegates | Inter-process and inter-processor messaging over any transport |
| Repository | Description |
|---|---|
| DelegateMQ | Core library — delegates, signals, DataBus, diagnostic tools |
| IntegrationTestFramework | Multi-threaded C++ integration test framework using DelegateMQ |
| active-fsm | Active-object C++ finite state machine with async dispatch and pub/sub signals |
| Async-SQLite | Asynchronous thread-safe SQLite wrapper using DelegateMQ |
| Async-DuckDB | Asynchronous thread-safe DuckDB wrapper using DelegateMQ |
| Async-HTTP | Asynchronous thread-safe HTTP client wrapper using DelegateMQ |
#include "DelegateMQ.h"
// Synchronous
auto d = MakeDelegate(&MyClass::Func, &obj);
d(arg);
// Async — dispatched to workerThread
auto d = MakeDelegate(&MyClass::Func, &obj, workerThread);
d(arg);
// Signal & Slot
Signal<void(int)> signal;
auto conn = signal.Connect(MakeDelegate(&MyClass::OnEvent, &obj));
signal(42); // invokes all connected slotsWorks on Windows, Linux, and a wide range of embedded targets including FreeRTOS, ThreadX, Zephyr, CMSIS-RTOS2, and bare-metal ARM. Transport backends include ZeroMQ, NNG, MQTT, TCP, UDP, serial, and more.
git clone https://github.com/DelegateMQ/DelegateMQ.gitSee the documentation for full details.