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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file msgx-1.0.3.tar.gz.

File metadata

  • Download URL: msgx-1.0.3.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for msgx-1.0.3.tar.gz
Algorithm Hash digest
SHA256 94e4822a15b973dcbe6f93522fe09f4d7dd97283d13c79ac84b4793b4b12fd88
MD5 dfccf11c90288a3bb096918afda2ca3e
BLAKE2b-256 eb087667baa86210f0304bd8f9eebfd9629c57a24e2e3dbe05c326591b3f436c

See more details on using hashes here.

File details

Details for the file msgx-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: msgx-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for msgx-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fa789b5484c4ab0617bb68e6e65f0adc03e2d247f391dc22ed639cc5812aa9e8
MD5 6f24b859d66b6f2b34ae117211efde6d
BLAKE2b-256 b26a9cc3a71cc64995f0e62b84493bfdcdec91056080ded15e57fd6294228559

See more details on using hashes here.

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