mruby へ LZ4 圧縮ライブラリの機能を提供します。
-
LZ4 Frame データの圧縮・伸長が行なえます。
LZ4::Encoder / LZ4::Decoder
-
LZ4 Block データの圧縮・伸長が行なえます。
LZ4::BlockEncoder / LZ4::BlockDecoder
-
LZ4 Frame API は mruby のメモリアロケータを通してメモリが確保されません。
メモリ関連で不可解な挙動があった場合、このことが原因であるかもしれません。
src = "123456789"
dest = LZ4.block_encode(src)
圧縮レベルを指定したい場合:
src = "123456789"
complevel = 10 # 整数値を与える。既定値は -1 で、C の LZ4_compress_fast() と等価
# 負の値であれば LZ4_compress_fast_continue() の accelerator に絶対値を渡すことを意味する
# 0 以上の値であれば LZ4_resetStreamHC() の level に値を渡すことを意味する
dest = LZ4.block_encode(src, level: complevel)
lz4seq = ... # lz4'd string by LZ4.block_encode
dest = LZ4.block_decode(lz4seq)
src = "123456789"
dest = LZ4.encode(src)
圧縮レベルを指定したい場合:
src = "123456789"
complevel = 15 # 1..22 の範囲で与える。既定値は nil で、1 と等価
dest = LZ4.encode(src, level: complevel)
lz4seq = ... # lz4'd string by LZ4.encode
# OR .lz4 file data by lz4-cli
dest = LZ4.decode(lz4seq)
output = AnyObject.new # An object that has ``.<<'' method (e.g. IO, StringIO, or etc.)
LZ4.encode(output) do |lz4|
lz4 << "abcdefg"
lz4 << "123456789" * 99
end
input = AnyObject.new # An object that has ``.read'' method (e.g. IO, StringIO, or etc.)
LZ4.decode(input) do |lz4|
lz4.read(20)
buf = ""
lz4.read(5, buf)
lz4.read(10, buf)
lz4.read(nil, buf)
end
- Product name: mruby-lz4
- Version: 0.5.3
- Product quality: PROTOTYPE
- Author: dearblue
- Report issue to: https://github.com/dearblue/mruby-lz4/issues
- Licensing: 2 clause BSD License
- Dependency external mrbgems:
- Bundled C libraries (git-submodules):
- lz4-1.9.4 under 2 clause BSD License by Yann Collet