prophy: fast serialization protocol
Project description
Prophy is a statically typed, binary, tag-free, unpacked serialization protocol.
You can define message schema:
struct MyMsg { u16 x<>; };
generate codecs for chosen languages:
prophyc --python_out . --cpp_full_out . --cpp_out . test.prophy
and serialize data in Python:
>>> import test >>> msg = test.MyMsg() >>> msg.x[:] = [1, 2, 3] >>> msg.encode('<') '\x03\x00\x00\x00\x01\x00\x02\x00\x03\x00\x00\x00' >>> print msg x: 1 x: 2 x: 3
in C++:
#include <iostream> #include <iterator> #include "test.ppf.hpp" int main() { prophy::generated::MyMsg msg{{1, 2, 3}}; std::vector<uint8_t> data = msg.encode(); std::copy(data.begin(), data.end(), std::ostream_iterator<unsigned>(std::cout, " ")); std::cout << '\n' << msg.print(); return 0; }
3 0 0 0 1 0 2 0 3 0 0 0 x: 1 x: 2 x: 3
again in C++ (half hand-rolled, compiler-dependent, but fastest option):
#include <iostream> #include <iterator> #include <cstdlib> #include "test.pp.hpp" int main() { MyMsg* msg = static_cast<MyMsg*>(std::malloc(12)); msg->num_of_x = 3; msg->x[0] = 1; msg->x[1] = 2; msg->x[2] = 3; std::copy((uint8_t*)msg, ((uint8_t*)msg) + 12, std::ostream_iterator<unsigned>(std::cout, " ")); std::cout << '\n'; return 0; }
3 0 0 0 1 0 2 0 3 0 0 0
Documentation: http://prophy.readthedocs.org
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
prophy-1.2.5.tar.gz
(178.5 kB
view details)
Built Distribution
File details
Details for the file prophy-1.2.5.tar.gz
.
File metadata
- Download URL: prophy-1.2.5.tar.gz
- Upload date:
- Size: 178.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89a72102998eade68903270b0077167644861823ace8f03dc3204abb52b53474 |
|
MD5 | 7e5a59efd6c5a43816bbef0bf4c58a45 |
|
BLAKE2b-256 | f10d28bdef9e28f4df58b2f45c15d45db88900bdd740f88c5bead7453764ca3b |
File details
Details for the file prophy-1.2.5-py2.py3-none-any.whl
.
File metadata
- Download URL: prophy-1.2.5-py2.py3-none-any.whl
- Upload date:
- Size: 78.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40d93f1a7e249a8ffec2a5cba948d8d858e0532e65b5e4b78bdc5764485f1176 |
|
MD5 | e2eee220a5a8eb12ff1ac3facc8b19c6 |
|
BLAKE2b-256 | 5485b816fd36b4e7ce07cc30055bbc28ca8447b4af3dc7927eaf33c781d74fd8 |