Cross-platform C++ library for fast binary and REST messaging
Switch branches/tags
Clone or download
gonkc and rdumusc Reverted casting changes. Changed _size type from int to size_t and m…
…odified _getContentLength function to return a size_t type.
Latest commit 7289016 Mar 13, 2018

README.md

Introduction

ZeroEQ is a cross-platform C++ library for modern messaging. It provides pub-sub messaging using ZeroMQ and integrates REST APIs with JSON payload in C++ applications using an optional http::Server. ZeroEQ applications are linked using automatic discovery based on ZeroConf protocol or through explicit connection addressing using hostname and port. Applications can define a vocabulary for the published messages, provided by ZeroBuf or by implementing a simple Serializable interface.

Features

ZeroEQ provides the following major features:

  • Publish events using zeroeq::Publisher
  • Subscribe to events using zeroeq::Subscriber
  • Web service APIs using zeroeq::http::Server using REST and JSON
  • Client-Server request-reply using zeroeq::Server and zeroeq::Client
  • Asynchronous, reliable transport using ZeroMQ
  • Automatic publisher discovery using Zeroconf
  • Serialization of events using ZeroBuf
  • [List of RFCs](@ref rfcs)

Example Use Cases

Building from Source

ZeroEQ is a cross-platform library, designed to run on any modern operating system, including all Unix variants. It requires a C++11 compiler and uses CMake to create a platform-specific build environment. The following platforms and build environments are tested:

  • Linux: Ubuntu 16.04, RHEL 6.8 (Makefile, Ninja)
  • Mac OS X: 10.9 (Makefile, Ninja)

ZeroEQ requires the following external, pre-installed dependencies:

  • ZeroMQ 4.0 or later
  • Boost for unit tests; version 1.58 for optional cppnetlib

Building from source is as simple as:

git clone --recursive https://github.com/HBPVIS/ZeroEQ.git
mkdir ZeroEQ/build
cd ZeroEQ/build
cmake -GNinja -DCLONE_SUBPROJECTS=ON ..
ninja

This work has been partially funded by the European Union Seventh Framework Program (FP7/2007­2013) under grant agreement no. 604102 (HBP).