ffi-msgpack
- github.com/postmodern/ffi-msgpack
- github.com/postmodern/ffi-msgpack/issues
- Postmodern (postmodern.mod3 at gmail.com)
Description
Ruby FFI bindings for the msgpack library.
Features
- Can pack and unpack
nil
,true
,false
, Integers, Floats, Strings, Arrays and Hashes. - Provides a buffered / callback driven packer.
- Provides a buffered / streaming unpacker.
Examples
Pack an Object:
require 'ffi/msgpack'
FFI::MsgPack.pack([1,'x',true])
# => "\x93\x01\xA1x\xC3"
Pack one or more Objects into a Buffer:
packer = FFI::MsgPack::Packer.create
packer << 1
packer << 'x'
packer << true
packer.buffer
# => "\x01\xA1x\xC3"
packer.total
# => 3
Pack one or more Objects with a custom write callback:
require 'socket'
socket = TCPSocket.new('example.com',9786)
packer = FFI::MsgPack::Packer.create do |packed,length|
socket.write(packed)
end
packer << 1
packer << 'x'
packer << true
socket.close
packer.total
# => 3
Unpack a String:
FFI::MsgPack.unpack("\x93\x01\xA1x\xC3")
# => [1, "x", true]
Enumerate over each unpacked Object:
unpacker = FFI::MsgPack::Unpacker.create
unpacker << "\x01\xA1x\xC3"
unpacker.each do |obj|
puts obj.inspect
end
Enumerates over each unpacked Object from a stream:
unpacker = FFI::MsgPack::Unpacker.create
unpacker.stream = socket
unpacker.each do |obj|
puts obj.inspect
end
Requirements
- libmsgpack >= 0.5.0
- ffi >= 0.6.0
Install
$ sudo gem install ffi-msgpack
License
See LICENSE for license information.