snappy 0.0.14-java → 0.2.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.github/workflows/main.yml +34 -0
- data/.github/workflows/publish.yml +34 -0
- data/Gemfile +4 -0
- data/README.md +28 -4
- data/Rakefile +32 -29
- data/ext/api.c +6 -1
- data/ext/extconf.rb +21 -24
- data/lib/snappy.rb +6 -4
- data/lib/snappy/hadoop.rb +22 -0
- data/lib/snappy/hadoop/reader.rb +62 -0
- data/lib/snappy/hadoop/writer.rb +51 -0
- data/lib/snappy/reader.rb +19 -11
- data/lib/snappy/shim.rb +30 -0
- data/lib/snappy/version.rb +3 -1
- data/lib/snappy/writer.rb +8 -9
- data/snappy.gemspec +17 -37
- data/test/hadoop/snappy_hadoop_reader_test.rb +115 -0
- data/test/hadoop/snappy_hadoop_writer_test.rb +48 -0
- data/test/snappy_hadoop_test.rb +26 -0
- data/test/snappy_reader_test.rb +148 -0
- data/test/snappy_test.rb +95 -0
- data/test/snappy_writer_test.rb +55 -0
- data/test/test_helper.rb +7 -0
- data/vendor/snappy/CMakeLists.txt +297 -0
- data/vendor/snappy/CONTRIBUTING.md +26 -0
- data/vendor/snappy/COPYING +1 -1
- data/vendor/snappy/NEWS +60 -0
- data/vendor/snappy/{README → README.md} +29 -16
- data/vendor/snappy/cmake/SnappyConfig.cmake.in +33 -0
- data/vendor/snappy/cmake/config.h.in +62 -0
- data/vendor/snappy/docs/README.md +72 -0
- data/vendor/snappy/snappy-c.h +3 -3
- data/vendor/snappy/snappy-internal.h +113 -32
- data/vendor/snappy/snappy-sinksource.cc +33 -0
- data/vendor/snappy/snappy-sinksource.h +51 -6
- data/vendor/snappy/snappy-stubs-internal.cc +1 -1
- data/vendor/snappy/snappy-stubs-internal.h +160 -45
- data/vendor/snappy/snappy-stubs-public.h.in +23 -47
- data/vendor/snappy/snappy-test.cc +31 -24
- data/vendor/snappy/snappy-test.h +46 -103
- data/vendor/snappy/snappy.cc +786 -431
- data/vendor/snappy/snappy.h +37 -14
- data/vendor/snappy/snappy_compress_fuzzer.cc +59 -0
- data/vendor/snappy/snappy_uncompress_fuzzer.cc +57 -0
- data/vendor/snappy/snappy_unittest.cc +441 -290
- metadata +35 -75
- data/.travis.yml +0 -4
- data/test/test-snappy-reader.rb +0 -129
- data/test/test-snappy-writer.rb +0 -55
- data/test/test-snappy.rb +0 -58
- data/vendor/snappy/ChangeLog +0 -1916
- data/vendor/snappy/Makefile.am +0 -23
- data/vendor/snappy/autogen.sh +0 -7
- data/vendor/snappy/configure.ac +0 -133
- data/vendor/snappy/m4/gtest.m4 +0 -74
- data/vendor/snappy/testdata/alice29.txt +0 -3609
- data/vendor/snappy/testdata/asyoulik.txt +0 -4122
- data/vendor/snappy/testdata/baddata1.snappy +0 -0
- data/vendor/snappy/testdata/baddata2.snappy +0 -0
- data/vendor/snappy/testdata/baddata3.snappy +0 -0
- data/vendor/snappy/testdata/fireworks.jpeg +0 -0
- data/vendor/snappy/testdata/geo.protodata +0 -0
- data/vendor/snappy/testdata/html +0 -1
- data/vendor/snappy/testdata/html_x_4 +0 -1
- data/vendor/snappy/testdata/kppkn.gtb +0 -0
- data/vendor/snappy/testdata/lcet10.txt +0 -7519
- data/vendor/snappy/testdata/paper-100k.pdf +2 -600
- data/vendor/snappy/testdata/plrabn12.txt +0 -10699
- data/vendor/snappy/testdata/urls.10K +0 -10000
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dc1e9d110a0bf1b0a6e04906ed2ed31223b95ed7b009c684b8e499a78b1a17e8
|
4
|
+
data.tar.gz: 325f0fa94023b89a4ff06d6bb4cde178fef16f9d692e6f331227af3ee31b41b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01bcc433736c9f9bf08d0cad2eb5647bc771099490c3a60f67a629a16acd8885179718f16f59f126610658292ba86a1a9058eb1243d81077efebe6d523895a57
|
7
|
+
data.tar.gz: 9eaf7fff9956c56c6db98ba4b38370d5ef27c1ad1b97bb4437006092b7c78bd5d7c52f23b42bf1bcfc7f69a06a82fb288d1e42b277805d8d172850cf520537b4
|
@@ -0,0 +1,34 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on: [pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
build:
|
7
|
+
strategy:
|
8
|
+
fail-fast: false
|
9
|
+
matrix:
|
10
|
+
ruby: [2.5, 2.6, 2.7, jruby]
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
with:
|
15
|
+
submodules: true
|
16
|
+
- name: Set up Ruby
|
17
|
+
uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: ${{ matrix.ruby }}
|
20
|
+
bundler-cache: true
|
21
|
+
- name: Run the default task
|
22
|
+
run: |
|
23
|
+
bundle exec rake clobber clean test build
|
24
|
+
gem install --no-document "$(ls pkg/snappy-*.gem)"
|
25
|
+
cat <<EOF | ruby
|
26
|
+
require "snappy"
|
27
|
+
if Snappy.inflate(Snappy.deflate(File.read("README.md"))) == File.read("README.md")
|
28
|
+
puts "OK"
|
29
|
+
exit 0
|
30
|
+
else
|
31
|
+
puts "NG"
|
32
|
+
exit 0
|
33
|
+
end
|
34
|
+
EOF
|
@@ -0,0 +1,34 @@
|
|
1
|
+
name: Publish Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- 'v*'
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
build:
|
10
|
+
strategy:
|
11
|
+
fail-fast: false
|
12
|
+
matrix:
|
13
|
+
ruby: [2.7, jruby]
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v2
|
17
|
+
with:
|
18
|
+
submodules: true
|
19
|
+
- name: Set up Ruby
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: ${{ matrix.ruby }}
|
23
|
+
bundler-cache: true
|
24
|
+
- name: Run release task
|
25
|
+
run: |
|
26
|
+
mkdir -p ~/.gem
|
27
|
+
cat << EOF > ~/.gem/credentials
|
28
|
+
---
|
29
|
+
:github: Bearer ${{secrets.GITHUB_TOKEN}}
|
30
|
+
:rubygems_api_key: ${{secrets.RUBYGEMS_API_KEY}}
|
31
|
+
EOF
|
32
|
+
chmod 600 ~/.gem/credentials
|
33
|
+
bundle exec rake release[remote]
|
34
|
+
rm -f ~/.gem/credentials
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,13 +4,27 @@ see https://github.com/google/snappy
|
|
4
4
|
|
5
5
|
## Preparation
|
6
6
|
|
7
|
-
Use libsnappy
|
8
7
|
|
9
|
-
|
8
|
+
### macOS
|
10
9
|
|
11
|
-
|
10
|
+
```bash
|
11
|
+
$ brew install snappy
|
12
|
+
$ brew install autoconf automake libtool
|
13
|
+
```
|
14
|
+
|
15
|
+
### Ubuntu
|
16
|
+
|
17
|
+
```bash
|
18
|
+
$ apt-get install libsnappy-dev -y
|
19
|
+
$ apt-get install libtool automake autoconf -y
|
20
|
+
```
|
21
|
+
|
22
|
+
### Alpine
|
12
23
|
|
13
|
-
|
24
|
+
```bash
|
25
|
+
$ apk install snappy
|
26
|
+
$ apk install build-base libexecinfo automake autoconf libtool
|
27
|
+
```
|
14
28
|
|
15
29
|
## Installation
|
16
30
|
|
@@ -28,6 +42,7 @@ Or install it yourself as:
|
|
28
42
|
|
29
43
|
## Usage
|
30
44
|
|
45
|
+
Snappy-java format
|
31
46
|
```ruby
|
32
47
|
require 'snappy'
|
33
48
|
|
@@ -38,6 +53,15 @@ Snappy.inflate(source)
|
|
38
53
|
# => Decompressed data
|
39
54
|
```
|
40
55
|
|
56
|
+
Hadoop-snappy format
|
57
|
+
```ruby
|
58
|
+
Snappy::Hadoop.deflate(source)
|
59
|
+
# => Compressed data
|
60
|
+
|
61
|
+
Snappy::Hadoop.inflate(source)
|
62
|
+
# => Decompressed data
|
63
|
+
```
|
64
|
+
|
41
65
|
## Contributing
|
42
66
|
|
43
67
|
1. Fork it
|
data/Rakefile
CHANGED
@@ -2,48 +2,51 @@ require "bundler/setup"
|
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
require "rake/testtask"
|
4
4
|
require "rbconfig"
|
5
|
-
DLEXT = RbConfig::CONFIG[
|
5
|
+
DLEXT = RbConfig::CONFIG["DLEXT"]
|
6
6
|
|
7
|
-
Rake::TestTask.new do |t|
|
7
|
+
Rake::TestTask.new(:test) do |t|
|
8
|
+
t.libs << "test"
|
9
|
+
t.libs << "lib"
|
10
|
+
t.test_files = FileList["test/**/*_test.rb"]
|
8
11
|
t.warning = true
|
9
12
|
t.verbose = true
|
10
13
|
end
|
11
14
|
|
12
15
|
if defined?(JRUBY_VERSION)
|
13
|
-
require
|
16
|
+
require "ant"
|
14
17
|
|
15
|
-
directory
|
18
|
+
directory "ext/java/build"
|
16
19
|
|
17
|
-
task :
|
18
|
-
ant.property name:
|
19
|
-
ant.property name:
|
20
|
+
task setup: "ext/java/build" do
|
21
|
+
ant.property name: "src.dir", value: "ext/java/src"
|
22
|
+
ant.property name: "build.dir", value: "ext/java/build"
|
20
23
|
|
21
|
-
ant.path id:
|
22
|
-
pathelement location: File.join(RbConfig::CONFIG[
|
23
|
-
$LOAD_PATH.flat_map { |path| Dir[File.join(path,
|
24
|
+
ant.path id: "compile.class.path" do
|
25
|
+
pathelement location: File.join(RbConfig::CONFIG["prefix"], "lib", "jruby.jar")
|
26
|
+
$LOAD_PATH.flat_map { |path| Dir[File.join(path, "**", "*.jar")] }.each do |jar|
|
24
27
|
pathelement location: jar
|
25
28
|
end
|
26
29
|
end
|
27
30
|
end
|
28
31
|
|
29
|
-
desc
|
30
|
-
task :
|
31
|
-
ant.javac destdir:
|
32
|
-
classpath refid:
|
33
|
-
src { pathelement location:
|
32
|
+
desc "Compile the extension"
|
33
|
+
task compile: :setup do
|
34
|
+
ant.javac destdir: "${build.dir}", includeantruntime: "no", target: "1.6", source: "1.6", debug: "on" do
|
35
|
+
classpath refid: "compile.class.path"
|
36
|
+
src { pathelement location: "${src.dir}" }
|
34
37
|
end
|
35
38
|
end
|
36
39
|
|
37
|
-
desc
|
38
|
-
file
|
39
|
-
ant.jar destfile:
|
40
|
-
ant.fileset dir:
|
41
|
-
ant.fileset dir:
|
40
|
+
desc "Package the jar"
|
41
|
+
file "lib/snappy_ext.jar" => :compile do |t|
|
42
|
+
ant.jar destfile: "lib/snappy_ext.jar", basedir: "${build.dir}" do
|
43
|
+
ant.fileset dir: "${build.dir}", includes: "snappy/*.class"
|
44
|
+
ant.fileset dir: "${build.dir}", includes: "SnappyExtLibraryService.class"
|
42
45
|
end
|
43
46
|
end
|
44
47
|
|
45
|
-
task :
|
46
|
-
task :
|
48
|
+
task test: "lib/snappy_ext.jar"
|
49
|
+
task build: [:clean, "lib/snappy_ext.jar"]
|
47
50
|
else
|
48
51
|
file "ext/snappy_ext.#{DLEXT}" => Dir.glob("ext/*{.rb,.c}") do
|
49
52
|
Dir.chdir("ext") do
|
@@ -53,15 +56,15 @@ else
|
|
53
56
|
cp "ext/snappy_ext.#{DLEXT}", "lib/snappy_ext.#{DLEXT}"
|
54
57
|
end
|
55
58
|
|
56
|
-
|
57
|
-
task :test => "ext/snappy_ext.#{DLEXT}"
|
59
|
+
task test: "ext/snappy_ext.#{DLEXT}"
|
58
60
|
end
|
59
61
|
|
60
|
-
desc
|
62
|
+
desc "Clean up build artifacts"
|
61
63
|
task :clean do
|
62
|
-
rm_rf
|
63
|
-
rm_rf
|
64
|
-
rm_rf(["ext/snappy_ext.#{DLEXT}", "lib/snappy_ext.#{DLEXT}",
|
64
|
+
rm_rf "ext/java/build"
|
65
|
+
rm_rf "lib/snappy_ext.jar"
|
66
|
+
rm_rf(["ext/snappy_ext.#{DLEXT}", "lib/snappy_ext.#{DLEXT}", "ext/mkmf.log", "ext/config.h", "ext/api.o",
|
67
|
+
"ext/Makefile", "ext/snappy.cc", "ext/snappy.h", "ext/snappy.o"] + Dir["ext/snappy-*"])
|
65
68
|
end
|
66
69
|
|
67
|
-
task :
|
70
|
+
task default: :test
|
data/ext/api.c
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
#include "ruby.h"
|
2
2
|
#include "snappy-c.h"
|
3
3
|
|
4
|
-
static VALUE rb_mSnappy;
|
5
4
|
static VALUE rb_eSnappy;
|
6
5
|
|
7
6
|
static VALUE
|
@@ -92,10 +91,16 @@ snappy_valid_p(VALUE self, VALUE str)
|
|
92
91
|
|
93
92
|
void Init_snappy_ext()
|
94
93
|
{
|
94
|
+
#if HAVE_RB_EXT_RACTOR_SAFE
|
95
|
+
rb_ext_ractor_safe(true);
|
96
|
+
#endif
|
97
|
+
|
98
|
+
VALUE rb_mSnappy;
|
95
99
|
VALUE rb_mSnappy_singleton;
|
96
100
|
|
97
101
|
rb_mSnappy = rb_define_module("Snappy");
|
98
102
|
rb_eSnappy = rb_define_class_under(rb_mSnappy, "Error", rb_eStandardError);
|
103
|
+
rb_global_variable(&rb_eSnappy);
|
99
104
|
rb_define_singleton_method(rb_mSnappy, "deflate", snappy_deflate, -1);
|
100
105
|
rb_define_singleton_method(rb_mSnappy, "inflate", snappy_inflate, -1);
|
101
106
|
rb_define_singleton_method(rb_mSnappy, "valid?", snappy_valid_p, 1);
|
data/ext/extconf.rb
CHANGED
@@ -1,37 +1,34 @@
|
|
1
1
|
require 'mkmf'
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
|
-
|
5
|
-
# s/libtoolize/glibtoolize/
|
6
|
-
File.write('autogen.sh', File.read('autogen.sh').gsub(/libtoolize/, 'glibtoolize'))
|
7
|
-
end
|
8
|
-
|
9
|
-
unless have_library 'snappy'
|
4
|
+
unless pkg_config('libsnappy') || have_library('snappy')
|
10
5
|
# build vendor/snappy
|
11
6
|
pwd = File.dirname File.expand_path __FILE__
|
12
7
|
dir = File.join pwd, '..', 'vendor', 'snappy'
|
13
8
|
|
14
|
-
Dir.chdir
|
15
|
-
|
16
|
-
|
17
|
-
|
9
|
+
Dir.chdir(dir) do
|
10
|
+
FileUtils.mkdir_p 'build'
|
11
|
+
Dir.chdir(File.join(dir, 'build')) do
|
12
|
+
`cmake .. -DCMAKE_BUILD_TYPE=Release`
|
18
13
|
end
|
19
|
-
raise '`configure` failed' unless system './configure --disable-option-checking --disable-dependency-tracking --disable-gtest --without-gflags'
|
20
14
|
end
|
21
15
|
|
22
|
-
src = %w
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
16
|
+
src = %w[
|
17
|
+
config.h
|
18
|
+
snappy-stubs-public.h
|
19
|
+
].map { |e| File.join dir, 'build', e }
|
20
|
+
FileUtils.cp src, pwd, :verbose => true
|
21
|
+
src = %w[
|
22
|
+
snappy-c.cc
|
23
|
+
snappy-c.h
|
24
|
+
snappy-internal.h
|
25
|
+
snappy-sinksource.cc
|
26
|
+
snappy-sinksource.h
|
27
|
+
snappy.cc
|
28
|
+
snappy.h
|
29
|
+
snappy-stubs-internal.cc
|
30
|
+
snappy-stubs-internal.h
|
31
|
+
].map { |e| File.join dir, e }
|
35
32
|
FileUtils.cp src, pwd, :verbose => true
|
36
33
|
end
|
37
34
|
|
data/lib/snappy.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
4
|
+
require "snappy-jars" if defined?(JRUBY_VERSION)
|
5
|
+
require "snappy_ext"
|
6
|
+
require "snappy/reader"
|
7
|
+
require "snappy/writer"
|
8
|
+
require "snappy/hadoop"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'stringio'
|
5
|
+
require 'snappy/hadoop/reader'
|
6
|
+
require 'snappy/hadoop/writer'
|
7
|
+
|
8
|
+
module Snappy
|
9
|
+
module Hadoop
|
10
|
+
def self.deflate(source, block_size = Snappy::Hadoop::Writer::DEFAULT_BLOCK_SIZE)
|
11
|
+
compressed_io = StringIO.new
|
12
|
+
writer = Snappy::Hadoop::Writer.new(compressed_io)
|
13
|
+
writer << source
|
14
|
+
writer.flush
|
15
|
+
compressed_io.string
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.inflate(source)
|
19
|
+
Snappy::Hadoop::Reader.new(StringIO.new(source)).read
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'stringio'
|
4
|
+
require 'snappy/shim'
|
5
|
+
|
6
|
+
module Snappy
|
7
|
+
module Hadoop
|
8
|
+
class Reader
|
9
|
+
attr_reader :io
|
10
|
+
|
11
|
+
def initialize(io)
|
12
|
+
@io = Snappy.set_encoding io
|
13
|
+
yield self if block_given?
|
14
|
+
end
|
15
|
+
|
16
|
+
def each
|
17
|
+
return to_enum unless block_given?
|
18
|
+
|
19
|
+
until @io.eof?
|
20
|
+
# Uncompressed size (32 bit integer, BE).
|
21
|
+
uncompressed_size = @io.read(4).unpack('N').first
|
22
|
+
|
23
|
+
uncompressed_block_io = StringIO.new
|
24
|
+
while uncompressed_block_io.size < uncompressed_size
|
25
|
+
# Compressed subblock size (32 bit integer, BE).
|
26
|
+
compressed_size = @io.read(4).unpack('N').first
|
27
|
+
uncompressed_block_io << Snappy.inflate(@io.read(compressed_size))
|
28
|
+
end
|
29
|
+
|
30
|
+
if uncompressed_block_io.size > uncompressed_size
|
31
|
+
raise RuntimeError("Invalid data: expected #{uncompressed_size} bytes, got #{Uncompressed.size}")
|
32
|
+
end
|
33
|
+
|
34
|
+
yield uncompressed_block_io.string
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def read
|
39
|
+
buff = StringIO.new
|
40
|
+
each do |chunk|
|
41
|
+
buff << chunk
|
42
|
+
end
|
43
|
+
buff.string
|
44
|
+
end
|
45
|
+
|
46
|
+
def each_line(sep_string = $/)
|
47
|
+
return to_enum(:each_line, sep_string) unless block_given?
|
48
|
+
|
49
|
+
last = ""
|
50
|
+
each do |chunk|
|
51
|
+
chunk = last + chunk
|
52
|
+
lines = chunk.split(sep_string)
|
53
|
+
last = lines.pop
|
54
|
+
lines.each do |line|
|
55
|
+
yield line
|
56
|
+
end
|
57
|
+
end
|
58
|
+
yield last
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'snappy/shim'
|
4
|
+
|
5
|
+
module Snappy
|
6
|
+
module Hadoop
|
7
|
+
class Writer
|
8
|
+
DEFAULT_BLOCK_SIZE = 256 * 1024
|
9
|
+
|
10
|
+
attr_reader :io, :block_size
|
11
|
+
|
12
|
+
def initialize(io, block_size = DEFAULT_BLOCK_SIZE)
|
13
|
+
@block_size = block_size
|
14
|
+
@buffer = String.new
|
15
|
+
@io = Snappy.set_encoding io
|
16
|
+
if block_given?
|
17
|
+
yield self
|
18
|
+
dump!
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def <<(msg)
|
23
|
+
@buffer << msg.to_s
|
24
|
+
dump! if @buffer.size >= @block_size
|
25
|
+
end
|
26
|
+
|
27
|
+
alias_method :write, :<<
|
28
|
+
|
29
|
+
def dump!
|
30
|
+
offset = 0
|
31
|
+
while offset < @buffer.size
|
32
|
+
uncompressed = @buffer[offset, @block_size]
|
33
|
+
compressed = Snappy.deflate(uncompressed)
|
34
|
+
|
35
|
+
# Uncompressed size (32 bit integer, BE), compressed size (32 bit integer, BE), data.
|
36
|
+
@io << [uncompressed.size, compressed.size, compressed].pack("NNa#{compressed.size}")
|
37
|
+
offset += uncompressed.size
|
38
|
+
end
|
39
|
+
|
40
|
+
@io.flush
|
41
|
+
@buffer.clear
|
42
|
+
end
|
43
|
+
|
44
|
+
alias_method :flush, :dump!
|
45
|
+
|
46
|
+
def close
|
47
|
+
@io.close
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|