0.01
No commit activity in last 3 years
No release in over 3 years
Ruby FFI bindings for the msgpack library.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

~> 2.0

Runtime

~> 1.0
 Project Readme

ffi-msgpack

CI Code Climate

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

Install

$ gem install ffi-msgpack

License

Copyright (c) 2010-2020 Hal Brodigan

See {file:LICENSE.txt} for license information.