Skip to main content

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.])}

Metadata

Release files for msgx 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for msgx 1.0.3
File Size Uploaded
msgx-1.0.3.tar.gz 10.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for msgx 1.0.3
File Interpreter ABI Platform
msgx-1.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 21.8 kB

Release files / msgx-1.0.3.tar.gz

Download URL msgx-1.0.3.tar.gz
Size 10.0 kB
Tags Source
SHA-256 checksum
How to use checksums
94e4822a15b973dcbe6f93522fe09f4d7dd97283d13c79ac84b4793b4b12fd88
BLAKE2b-256 checksum
How to use checksums
eb087667baa86210f0304bd8f9eebfd9629c57a24e2e3dbe05c326591b3f436c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release files / msgx-1.0.3-py3-none-any.whl

Download URL msgx-1.0.3-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fa789b5484c4ab0617bb68e6e65f0adc03e2d247f391dc22ed639cc5812aa9e8
BLAKE2b-256 checksum
How to use checksums
b26a9cc3a71cc64995f0e62b84493bfdcdec91056080ded15e57fd6294228559
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page