Simple
S.I.M.P.L.E. - Smart Intuitive Messaging Platform with Less Effort. A Cross-Platform C++ Library to Exchange Data Across Network.
Install / Use
/learn @IFL-CAMP/SimpleREADME
S.I.M.P.L.E.
<b>S</b>mart <b>I</b>ntuitive <b>M</b>essaging <b>P</b>latform with <b>L</b>ess <b>E</b>ffort.
S.I.M.P.L.E. (or just simple) is a cross-platform C++ library to easily exchange data across a network.
It is built on top of ZeroMQ and uses custom FlatBuffers messages.
It provides a clean interface to the classic Publisher-Subscriber and Request-Reply patterns.
simple can be used on Windows, Linux and OSX.
Dependencies
- A C++11 compiler (tested on gcc-5, clang-3.8, msvc14 and msvc15.)
- CMake 3.3+
- ZeroMQ 4.2.4+
- cppzmq 4.3.1+
- FlatBuffers 1.9.0+
What can I send/receive?
simple offers a light interface to FlatBuffers messages.
Common messages are provided and live under simple_msgs.
New messages can be defined - in the simple_msgs format - and sent/received using the same interface.
Usage
<b>Install the binaries</b>
<b>Build from source:</b> on Windows or Linux/Mac OSX.
<b>Use in your C++ project:</b> via CMake. We suggest Windows users to link to the static version of simple.
Publisher / Subscriber
- A Publisher sends (publishes) data to any Subscriber that is listening to its IP address/port.
- A Subscriber waits for new data from a Publisher and asynchrounsly receives it.
An example of the Publisher/Subscriber pattern in C++ is available here.
Request / Reply
- A Client sends a request to an IP address/port of a Server and expects a reply from it.
- A Server waits for requests and asynchrounsly replies to a Client.
An example of the Client/Server pattern in C++ is available here.
Inspiration from ROS
We are heavy (and happy) ROS users and we aim to provide a very similar interface.
Contacts

Chair for Computer Aided Medical Procedures
Technical University of Munich, Germany.
<b>Salvatore Virga</b>> : salvo.virga@tum.de
<b>Fernanda Levy Langsch</b> : fernanda.langsch@tum.de
License
simple is distributed under the MPL v2.0 License. See LICENSE for details.
