
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 slots
Works 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.git
See DelegateMQ for full details.