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)
| File | Size | Uploaded | |
|---|---|---|---|
| msgx-1.0.3.tar.gz | 10.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|