ffi-msgpack¶ ↑
-
[Email](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 ~> 1.0
Install¶ ↑
$ gem install ffi-msgpack
License¶ ↑
Copyright © 2010-2020 Hal Brodigan
See {file:LICENSE.txt} for license information.