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
 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.