Skip to content

mikegulf/quickmsg

 
 

Repository files navigation

Quickmsg

Quickmsg is meant to be a thin application utility layer on top of Zyre/ZeroMQ and MessagePack, supporting simple group messaging. The primary message type (for now) is a JSON string, transformed to a compact binary format using MessagePack before transmission to a Zyre group. The API is being initially developed in C++, and is intended to be wrapped using a tool such as SWIG for use by multiple target languages.

The following components have initial implementations:

  • Publisher: publishes messages to a topic
  • Subscriber: receives messages from a topic (can be used synchronously and asynchronously / with a callback)
  • Service: provide an RPC-like service interface for…
  • Client: issues requests to a Service and blocks for a reply
  • GroupNode: low-level implementation allowing alternative patterns and supporting a promiscuous message handling mode.

Dependencies

  • ZeroMQ stack: libsodium, libzmq, czmq, and zyre*.
    • OSX/Linux: Installed from source using autotools (the CMakeLists are autogenerated and have been known to be stale/incorrect), with the procedure outlined in the czmq docs
    • *Recent versions of zyre have led to build errors in quickmsg. We are currently building against an older version
  • jsoncpp, from source or pkg-manager
  • Google logging, from source or pkg-manager
  • Swig 3.0
  • Python 2.7
  • Boost libraries

SWIG Wrapping

SWIG is a tool to generate wrappers for C/C++ code to a variety of high-level langauges, including Python, Java and Common Lisp.

Although there are pages indicating SWIG support for Common Lisp, there is contrary evidence that in fact Common Lisp support is not active or maintained.

Therefore, we do not use SWIG to generate the Common Lisp bindings, but instead implement a simple C wrapper that can be called directly with CFFI.

See the test directory for simple language tests and usage examples for C, C++, Java, Python, and Common Lisp.

The Common Lisp examples were tested with sbcl. The required common lisp packages, such as cl-json, were installed using quicklisp

Windows Visual Studio Build 2013

Dependencies: Python 64 bit installed in default directory. Use Nuget within VS 2013 to install Boost 1.59.0, tbb, glog, and pthreads. The zyre, czmq, libsodium, libzmq, glog, and swigwin-3.0.8 need to be in the github directory at the same level as quickmsg.

The Swigwin 3.0.8 library is in the zip file in the main directory of quickmsg. Unzip that in the main github directory.

About

A small layer to facilitate open messaging between a set of components.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 82.8%
  • Java 7.1%
  • C 3.4%
  • CMake 2.9%
  • Python 2.4%
  • Common Lisp 1.4%