Git Product home page Git Product logo

msgpuck's Introduction

MsgPuck

Travis License RPM Packages Debian Packages Telegram Maillist

MsgPuck is a compact and efficient MessagePack serialization library:

  • Zero-cost abstractions and zero overhead
  • Clean and readable C code ready to use
  • Easy to incorporate into your project
  • Fully documented and covered by unit tests
  • Liberal license (BSD-2)

Status

MsgPuck is stable, which means it have been used in production without serious bugs for quite a while now. The library is fully documented and covered by unit tests.

Please feel free to file a ticket if your have a problem or a question.

Examples

Encoding:

char buf[1024];

char *w = buf;
w = mp_encode_array(w, 4);
w = mp_encode_uint(w, 10);
w = mp_encode_str(w, "hello world", strlen("hello world"));
w = mp_encode_bool(w, true);
w = mp_encode_double(w, 3.1415);

Validating:

const char *end = buf + xx;
const char *b = buf;
int rc = mp_check(&b, end);
assert(rc == 0);
assert(b == end);

Decoding:

uint32_t size;
uint64_t ival;
const char *sval;
uint32_t sval_len;
bool bval;
double dval;

const char *r = buf;
size = mp_decode_array(&r);
/* size is 4 */

ival = mp_decode_uint(&r);
/* ival is 10; */

sval = mp_decode_str(&r, &sval_len);
/* sval is "hello world", sval_len is strlen("hello world") */

bval = mp_decode_bool(&r);
/* bval is true */

dval = mp_decode_double(&r);
/* dval is 3.1415 */

assert(r == w);

Usage

You need a C89+ or C++03+ compatible compiler to use msgpuck. Add this project as a submodule or just use libmsgpuck-dev package.

MsgPuck is designed to be fully embedded to your application by a C/C++ compiler. However, some functions require auxiliary static tables which should be expanded somewhere in a compilation unit (*.c or *.cc file). Please link libmsgpuck.a to your binary to avoid problems with unresolved symbols.

See Also

API documentation can be also generated using make doc (Doxygen is required).

MsgPuck was written to use within Tarantool - the world's first full-featured MsgPack-based database.

msgpuck's People

Contributors

rtsisyk avatar alyapunov avatar amdrozdov avatar bigbes avatar locker avatar zloidemon avatar alexandermyasnikov avatar unera avatar georgykirichenko avatar gahr avatar xiongyihui avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.