Skip to main content

Message Exchange protocol.

Project description

MsgX: Message eXchange

This repository is MsgX, a message exchange interface to send binary data between languages, e.g., from C++ to Python. This is achived by serialising and deserialising native binary representation from some common interface.

This can be used as a publisher and subscriber model between C++ and Python, and a stateful model in the Jupyter notebook ecosystem that captures the incoming message. It supports asynchronous refresh within the notebook whenever a new message is published from your C++ files, and automatically display them within the notebook. This library also support non-notebook usage where it uses MsgX's native figure display from within your browser.

Requirements

  • zeromq (messaging protocol)

  • capnproto (serialisation of message)

Using the library in your C++ project

You can include the project it as you normally. The following shows a snippet to quickly visualise your code using MsgX without much setup

Quick and dirty out-of-tree build in cmake

In your CMakeLists.txt:

cmake_minimum_required(...)

...

# Add as out-of-tree build (with absolute path & binary directory)
add_subdirectory(
        /home/soraxas/git-repo/msgx
        msgx
)
find_package( msgx REQUIRED )

...

# link the library to your target
target_link_libraries( ${MY_TARGET} msgx )

Example Usage

Say you have something like this in your ${MY_TARGET}

#include "msgx/message.h"

using namespace msgx::kwargs;

int main(int argc, char const *argv[]) {
    msgx::MessageX msg;
    std::vector<double> x{5, 2, 0, 4, 4, 6, 7};
    std::vector<double> y{1, 2, 3, 2, 3, 4, 5};

    msg = msg.Mapping("xs"_kw = x, "ys"_kw = y);
    msg.send();
}

From python:

>>> from msgx import spin_default
>>> spin_default()

# msg.send(); in c++

{'ys': array([1., 2., 3., 2., 3., 4., 5.]), 'xs': array([5., 2., 0., 4., 4., 6., 7.])}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

msgx-1.0.3.tar.gz (10.0 kB view hashes)

Uploaded Source

Built Distribution

msgx-1.0.3-py3-none-any.whl (11.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page