Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== msgpack [[toc:]] An implementation of [[http://msgpack.org/|MessagePack]] for [[https://www.call-cc.org/|CHICKEN scheme v5]]. Forked from [[http://github.com/hugoArregui/msgpack-scheme|msgpack-scheme]] and partially rewritten (ported to CHICKEN 5 and built-in byte blob API). I kept the original license and most of the original API. However, the byte-blob have been replaced with Chicken 5 native blob. I removed the dependency on bind egg and the need for C++ code using built-ins features of C5. === Authors Hugo Arregui: Original author of the egg. Théo Cavignac: ported the egg to Chicken 5 === Repository Find the code at [[https://github.com/Lattay/chicken-msgpack|github.com]]. === Requirements This package requires the following eggs: * matchable * srfi-1 * srfi-69 === Installation Through {{Chicken egg repository}}: Run {{chicken-install -s msgpack}} anywhere. From source: # Install the required eggs listed above. # Clone this [[https://github.com/Lattay/chicken-msgpack|repository]]. # Run {{chicken-install -s}} in the root of this repository. === API Specification Primitive pack-family procedures: <procedure>(pack-uint port value)</procedure> <procedure>(pack-sint port value)</procedure> pack integer, will produce an error if the input does not respect the expected signedness <procedure>(pack-float port FLONUM)</procedure> pack 32b floats, support both exact and inexact but convert to flonum (inexact) anyway <procedure>(pack-double port FLONUM)</procedure> pack 64b floats, support both exact and inexact but convert to flonum (inexact) anyway <procedure>(pack-bin port BLOB)</procedure> pack chicken.blob byte blob <procedure>(pack-str port STRING)</procedure> pack string <procedure>(pack-array port VECTOR)</procedure> pack scheme vectors or lists <procedure>(pack-map port HASH-TABLE)</procedure> pack srfi-69 hash-table <procedure>(pack-ext port EXT)</procedure> pack extension record (see below) Automatic procedures: <procedure>(pack port value)</procedure> Will infer the right packer to use and write the msgpack result to port <procedure>(pack/blob value)</procedure> Will inter the right packer and return the message as a byte blob These procedures will call primitive type packers, with the following rules: * if the value has a packer, apply it. * if the value is a string, it will be packed as str. * if the value is a blob, it will be packed as bin. * if the value is a char, it will be packed as a uint. * if the value is a list, it will be packed as an array. * if the value is a extension (see below), it will be packed as an ext The {{/blob}} version return a blob of packed data, the others directly write it to the port. Unpack procedures: <procedure>(unpack port [mapper])</procedure> Read msgpack data from port and return the unpacked data. <procedure>(unpack/blob blob [mapper])</procedure> Treat the blob as a msgpack data and return the unpacked data. The optional mapper argument is applied to the output before returning. The {{/blob}} version unpack the content of blob instead of reading from a port. === Extension Extension is a record defined as: <enscript highlight="scheme">(define-record extension type data)</enscript> * type: integer from 0 to 127 * data: a blob Use-case example: <enscript highlight="scheme">(make-extension 10 (string->byte-blob "hi"))</enscript> === License Distributed under the New BSD License. === History * v1.0.3 Ironing details for publication. * v1.0.0 Port to Chicken 5. Breaking changes: All blob related APIs have been changed to support Chicken native blob type. * v0.4 Last Chicken 4 version (2016)
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you subtract 11 from 17?