ruby-brs 1.3.2 → 1.3.3
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 +4 -4
- data/README.md +11 -11
- data/lib/brs/error.rb +9 -4
- data/lib/brs/file.rb +17 -27
- data/lib/brs/option.rb +36 -0
- data/lib/brs/stream/raw/compressor.rb +12 -76
- data/lib/brs/stream/raw/decompressor.rb +7 -51
- data/lib/brs/stream/reader.rb +6 -185
- data/lib/brs/stream/writer.rb +6 -164
- data/lib/brs/string.rb +18 -9
- data/lib/brs/validation.rb +4 -28
- data/lib/brs/version.rb +1 -1
- metadata +39 -17
- data/lib/brs/stream/abstract.rb +0 -156
- data/lib/brs/stream/delegates.rb +0 -36
- data/lib/brs/stream/raw/abstract.rb +0 -59
- data/lib/brs/stream/reader_helpers.rb +0 -194
- data/lib/brs/stream/stat.rb +0 -78
- data/lib/brs/stream/writer_helpers.rb +0 -91
data/lib/brs/stream/writer.rb
CHANGED
@@ -1,174 +1,16 @@
|
|
1
1
|
# Ruby bindings for brotli library.
|
2
2
|
# Copyright (c) 2019 AUTHORS, MIT License.
|
3
3
|
|
4
|
-
|
4
|
+
require "adsp/stream/writer"
|
5
|
+
|
5
6
|
require_relative "raw/compressor"
|
6
|
-
require_relative "writer_helpers"
|
7
7
|
|
8
8
|
module BRS
|
9
9
|
module Stream
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@options = options
|
15
|
-
|
16
|
-
super destination_io, *args
|
17
|
-
end
|
18
|
-
|
19
|
-
protected def create_raw_stream
|
20
|
-
Raw::Compressor.new @options
|
21
|
-
end
|
22
|
-
|
23
|
-
# -- synchronous --
|
24
|
-
|
25
|
-
def write(*objects)
|
26
|
-
validate_write
|
27
|
-
|
28
|
-
write_remaining_buffer
|
29
|
-
|
30
|
-
bytes_written = 0
|
31
|
-
|
32
|
-
objects.each do |object|
|
33
|
-
source = transcode object.to_s
|
34
|
-
bytes_written += raw_wrapper :write, source
|
35
|
-
end
|
36
|
-
|
37
|
-
@pos += bytes_written
|
38
|
-
|
39
|
-
bytes_written
|
40
|
-
end
|
41
|
-
|
42
|
-
def flush
|
43
|
-
validate_write
|
44
|
-
|
45
|
-
finish :flush
|
46
|
-
|
47
|
-
@io.flush if @io.respond_to? :flush
|
48
|
-
|
49
|
-
self
|
50
|
-
end
|
51
|
-
|
52
|
-
def rewind
|
53
|
-
validate_write
|
54
|
-
|
55
|
-
finish :close
|
56
|
-
|
57
|
-
super
|
58
|
-
end
|
59
|
-
|
60
|
-
def close
|
61
|
-
validate_write
|
62
|
-
|
63
|
-
finish :close
|
64
|
-
|
65
|
-
super
|
66
|
-
end
|
67
|
-
|
68
|
-
protected def finish(method_name)
|
69
|
-
write_remaining_buffer
|
70
|
-
|
71
|
-
raw_wrapper method_name
|
72
|
-
end
|
73
|
-
|
74
|
-
protected def write_remaining_buffer
|
75
|
-
return nil if @buffer.bytesize.zero?
|
76
|
-
|
77
|
-
@io.write @buffer
|
78
|
-
|
79
|
-
reset_buffer
|
80
|
-
end
|
81
|
-
|
82
|
-
protected def raw_wrapper(method_name, *args)
|
83
|
-
@raw_stream.send(method_name, *args) { |portion| @io.write portion }
|
84
|
-
end
|
85
|
-
|
86
|
-
def validate_write
|
87
|
-
raise ValidateError, "io should be responsible to write" unless @io.respond_to? :write
|
88
|
-
end
|
89
|
-
|
90
|
-
# -- asynchronous --
|
91
|
-
|
92
|
-
# IO write nonblock can raise wait writable error.
|
93
|
-
# After resolving this error user may provide same content again.
|
94
|
-
# It is not possible to revert accepted content after error.
|
95
|
-
# So we have to accept content after processing IO write nonblock.
|
96
|
-
# It means that first write nonblock won't call IO write nonblock.
|
97
|
-
def write_nonblock(object, *options)
|
98
|
-
validate_write_nonblock
|
99
|
-
|
100
|
-
return 0 unless write_remaining_buffer_nonblock(*options)
|
101
|
-
|
102
|
-
source = transcode object.to_s
|
103
|
-
bytes_written = raw_nonblock_wrapper :write, source
|
104
|
-
@pos += bytes_written
|
105
|
-
|
106
|
-
bytes_written
|
107
|
-
end
|
108
|
-
|
109
|
-
def flush_nonblock(*options)
|
110
|
-
validate_write_nonblock
|
111
|
-
|
112
|
-
return false unless finish_nonblock :flush, *options
|
113
|
-
|
114
|
-
@io.flush if @io.respond_to? :flush
|
115
|
-
|
116
|
-
true
|
117
|
-
end
|
118
|
-
|
119
|
-
def rewind_nonblock(*options)
|
120
|
-
validate_write_nonblock
|
121
|
-
|
122
|
-
return false unless finish_nonblock :close, *options
|
123
|
-
|
124
|
-
method(:rewind).super_method.call
|
125
|
-
|
126
|
-
true
|
127
|
-
end
|
128
|
-
|
129
|
-
def close_nonblock(*options)
|
130
|
-
validate_write_nonblock
|
131
|
-
|
132
|
-
return false unless finish_nonblock :close, *options
|
133
|
-
|
134
|
-
method(:close).super_method.call
|
135
|
-
|
136
|
-
true
|
137
|
-
end
|
138
|
-
|
139
|
-
protected def finish_nonblock(method_name, *options)
|
140
|
-
return false unless write_remaining_buffer_nonblock(*options)
|
141
|
-
|
142
|
-
raw_nonblock_wrapper method_name
|
143
|
-
|
144
|
-
write_remaining_buffer_nonblock(*options)
|
145
|
-
end
|
146
|
-
|
147
|
-
protected def write_remaining_buffer_nonblock(*options)
|
148
|
-
return true if @buffer.bytesize.zero?
|
149
|
-
|
150
|
-
bytes_written = @io.write_nonblock @buffer, *options
|
151
|
-
return false if bytes_written.zero?
|
152
|
-
|
153
|
-
@buffer = @buffer.byteslice bytes_written, @buffer.bytesize - bytes_written
|
154
|
-
|
155
|
-
@buffer.bytesize.zero?
|
156
|
-
end
|
157
|
-
|
158
|
-
protected def raw_nonblock_wrapper(method_name, *args)
|
159
|
-
@raw_stream.send(method_name, *args) { |portion| @buffer << portion }
|
160
|
-
end
|
161
|
-
|
162
|
-
def validate_write_nonblock
|
163
|
-
raise ValidateError, "io should be responsible to write nonblock" unless @io.respond_to? :write_nonblock
|
164
|
-
end
|
165
|
-
|
166
|
-
# -- common --
|
167
|
-
|
168
|
-
protected def transcode(data)
|
169
|
-
data = data.encode @external_encoding, **@transcode_options unless @external_encoding.nil?
|
170
|
-
data
|
171
|
-
end
|
10
|
+
# BRS::Stream::Writer class.
|
11
|
+
class Writer < ADSP::Stream::Writer
|
12
|
+
# Current raw stream class.
|
13
|
+
RawCompressor = Raw::Compressor
|
172
14
|
end
|
173
15
|
end
|
174
16
|
end
|
data/lib/brs/string.rb
CHANGED
@@ -1,15 +1,22 @@
|
|
1
1
|
# Ruby bindings for brotli library.
|
2
2
|
# Copyright (c) 2019 AUTHORS, MIT License.
|
3
3
|
|
4
|
+
require "adsp/string"
|
4
5
|
require "brs_ext"
|
5
6
|
|
6
7
|
require_relative "option"
|
7
8
|
require_relative "validation"
|
8
9
|
|
9
10
|
module BRS
|
10
|
-
|
11
|
-
|
12
|
-
|
11
|
+
# BRS::String class.
|
12
|
+
class String < ADSP::String
|
13
|
+
# Current option class.
|
14
|
+
Option = BRS::Option
|
15
|
+
|
16
|
+
# Compresses +source+ string using +options+.
|
17
|
+
# Option: +:destination_buffer_length+ destination buffer length.
|
18
|
+
# Option: +:size_hint+ source bytesize.
|
19
|
+
# Returns compressed string.
|
13
20
|
def self.compress(source, options = {})
|
14
21
|
Validation.validate_string source
|
15
22
|
|
@@ -17,15 +24,17 @@ module BRS
|
|
17
24
|
|
18
25
|
options[:size_hint] = source.bytesize
|
19
26
|
|
20
|
-
|
27
|
+
super source, options
|
21
28
|
end
|
22
29
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
30
|
+
# Bypasses native compress.
|
31
|
+
def self.native_compress_string(*args)
|
32
|
+
BRS._native_compress_string(*args)
|
33
|
+
end
|
27
34
|
|
28
|
-
|
35
|
+
# Bypasses native decompress.
|
36
|
+
def self.native_decompress_string(*args)
|
37
|
+
BRS._native_decompress_string(*args)
|
29
38
|
end
|
30
39
|
end
|
31
40
|
end
|
data/lib/brs/validation.rb
CHANGED
@@ -1,38 +1,14 @@
|
|
1
1
|
# Ruby bindings for brotli library.
|
2
2
|
# Copyright (c) 2019 AUTHORS, MIT License.
|
3
3
|
|
4
|
-
|
4
|
+
require "adsp/validation"
|
5
5
|
|
6
6
|
module BRS
|
7
|
-
|
7
|
+
# BRS::Validation class.
|
8
|
+
class Validation < ADSP::Validation
|
9
|
+
# Raises error when +value+ is not boolean.
|
8
10
|
def self.validate_bool(value)
|
9
11
|
raise ValidateError, "invalid bool" unless value.is_a?(::TrueClass) || value.is_a?(::FalseClass)
|
10
12
|
end
|
11
|
-
|
12
|
-
def self.validate_hash(value)
|
13
|
-
raise ValidateError, "invalid hash" unless value.is_a? ::Hash
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.validate_not_negative_integer(value)
|
17
|
-
raise ValidateError, "invalid not negative integer" unless value.is_a?(::Integer) && value >= 0
|
18
|
-
end
|
19
|
-
|
20
|
-
def self.validate_positive_integer(value)
|
21
|
-
raise ValidateError, "invalid positive integer" unless value.is_a?(::Integer) && value.positive?
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.validate_proc(value)
|
25
|
-
unless value.is_a?(::Proc) || value.is_a?(::Method) || value.is_a?(::UnboundMethod)
|
26
|
-
raise ValidateError, "invalid proc"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def self.validate_string(value)
|
31
|
-
raise ValidateError, "invalid string" unless value.is_a? ::String
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.validate_symbol(value)
|
35
|
-
raise ValidateError, "invalid symbol" unless value.is_a? ::Symbol
|
36
|
-
end
|
37
13
|
end
|
38
14
|
end
|
data/lib/brs/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-brs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Aladjev
|
@@ -9,8 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2022-
|
12
|
+
date: 2022-07-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: adsp
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.0'
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: codecov
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,14 +73,14 @@ dependencies:
|
|
59
73
|
requirements:
|
60
74
|
- - "~>"
|
61
75
|
- !ruby/object:Gem::Version
|
62
|
-
version: '5.
|
76
|
+
version: '5.16'
|
63
77
|
type: :development
|
64
78
|
prerelease: false
|
65
79
|
version_requirements: !ruby/object:Gem::Requirement
|
66
80
|
requirements:
|
67
81
|
- - "~>"
|
68
82
|
- !ruby/object:Gem::Version
|
69
|
-
version: '5.
|
83
|
+
version: '5.16'
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
85
|
name: ocg
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,48 +137,62 @@ dependencies:
|
|
123
137
|
- - ">="
|
124
138
|
- !ruby/object:Gem::Version
|
125
139
|
version: '0'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: rdoc
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
type: :development
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
126
154
|
- !ruby/object:Gem::Dependency
|
127
155
|
name: rubocop
|
128
156
|
requirement: !ruby/object:Gem::Requirement
|
129
157
|
requirements:
|
130
158
|
- - "~>"
|
131
159
|
- !ruby/object:Gem::Version
|
132
|
-
version: '1.
|
160
|
+
version: '1.31'
|
133
161
|
type: :development
|
134
162
|
prerelease: false
|
135
163
|
version_requirements: !ruby/object:Gem::Requirement
|
136
164
|
requirements:
|
137
165
|
- - "~>"
|
138
166
|
- !ruby/object:Gem::Version
|
139
|
-
version: '1.
|
167
|
+
version: '1.31'
|
140
168
|
- !ruby/object:Gem::Dependency
|
141
169
|
name: rubocop-minitest
|
142
170
|
requirement: !ruby/object:Gem::Requirement
|
143
171
|
requirements:
|
144
172
|
- - "~>"
|
145
173
|
- !ruby/object:Gem::Version
|
146
|
-
version: '0.
|
174
|
+
version: '0.20'
|
147
175
|
type: :development
|
148
176
|
prerelease: false
|
149
177
|
version_requirements: !ruby/object:Gem::Requirement
|
150
178
|
requirements:
|
151
179
|
- - "~>"
|
152
180
|
- !ruby/object:Gem::Version
|
153
|
-
version: '0.
|
181
|
+
version: '0.20'
|
154
182
|
- !ruby/object:Gem::Dependency
|
155
183
|
name: rubocop-performance
|
156
184
|
requirement: !ruby/object:Gem::Requirement
|
157
185
|
requirements:
|
158
186
|
- - "~>"
|
159
187
|
- !ruby/object:Gem::Version
|
160
|
-
version: '1.
|
188
|
+
version: '1.14'
|
161
189
|
type: :development
|
162
190
|
prerelease: false
|
163
191
|
version_requirements: !ruby/object:Gem::Requirement
|
164
192
|
requirements:
|
165
193
|
- - "~>"
|
166
194
|
- !ruby/object:Gem::Version
|
167
|
-
version: '1.
|
195
|
+
version: '1.14'
|
168
196
|
- !ruby/object:Gem::Dependency
|
169
197
|
name: rubocop-rake
|
170
198
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,16 +254,10 @@ files:
|
|
226
254
|
- lib/brs/error.rb
|
227
255
|
- lib/brs/file.rb
|
228
256
|
- lib/brs/option.rb
|
229
|
-
- lib/brs/stream/abstract.rb
|
230
|
-
- lib/brs/stream/delegates.rb
|
231
|
-
- lib/brs/stream/raw/abstract.rb
|
232
257
|
- lib/brs/stream/raw/compressor.rb
|
233
258
|
- lib/brs/stream/raw/decompressor.rb
|
234
259
|
- lib/brs/stream/reader.rb
|
235
|
-
- lib/brs/stream/reader_helpers.rb
|
236
|
-
- lib/brs/stream/stat.rb
|
237
260
|
- lib/brs/stream/writer.rb
|
238
|
-
- lib/brs/stream/writer_helpers.rb
|
239
261
|
- lib/brs/string.rb
|
240
262
|
- lib/brs/validation.rb
|
241
263
|
- lib/brs/version.rb
|
@@ -252,7 +274,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
252
274
|
requirements:
|
253
275
|
- - ">="
|
254
276
|
- !ruby/object:Gem::Version
|
255
|
-
version: '2.
|
277
|
+
version: '2.6'
|
256
278
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
279
|
requirements:
|
258
280
|
- - ">="
|
data/lib/brs/stream/abstract.rb
DELETED
@@ -1,156 +0,0 @@
|
|
1
|
-
# Ruby bindings for brotli library.
|
2
|
-
# Copyright (c) 2019 AUTHORS, MIT License.
|
3
|
-
|
4
|
-
require_relative "delegates"
|
5
|
-
require_relative "stat"
|
6
|
-
require_relative "../error"
|
7
|
-
require_relative "../validation"
|
8
|
-
|
9
|
-
module BRS
|
10
|
-
module Stream
|
11
|
-
class Abstract
|
12
|
-
# Native stream is not seekable by design.
|
13
|
-
# Related methods like "seek" and "pos=" can't be implemented.
|
14
|
-
|
15
|
-
# It is not possible to maintain correspondance between bytes
|
16
|
-
# consumed from source and bytes written to destination by design.
|
17
|
-
# We will consume all source bytes and maintain buffer with remaining destination data.
|
18
|
-
|
19
|
-
include Delegates
|
20
|
-
|
21
|
-
attr_reader :io, :stat, :external_encoding, :internal_encoding, :transcode_options, :pos
|
22
|
-
|
23
|
-
alias tell pos
|
24
|
-
|
25
|
-
def initialize(io, options = {})
|
26
|
-
@raw_stream = create_raw_stream
|
27
|
-
@io = io
|
28
|
-
|
29
|
-
@stat = Stat.new @io.stat if @io.respond_to? :stat
|
30
|
-
|
31
|
-
set_encoding options[:external_encoding], options[:internal_encoding], options[:transcode_options]
|
32
|
-
reset_buffer
|
33
|
-
reset_io_advise
|
34
|
-
|
35
|
-
@pos = 0
|
36
|
-
end
|
37
|
-
|
38
|
-
# -- buffer --
|
39
|
-
|
40
|
-
protected def reset_buffer
|
41
|
-
@buffer = ::String.new :encoding => ::Encoding::BINARY
|
42
|
-
end
|
43
|
-
|
44
|
-
# -- advise --
|
45
|
-
|
46
|
-
protected def reset_io_advise
|
47
|
-
# Both compressor and decompressor need sequential io access.
|
48
|
-
@io.advise :sequential if @io.respond_to? :advise
|
49
|
-
rescue ::Errno::ESPIPE
|
50
|
-
# ok
|
51
|
-
end
|
52
|
-
|
53
|
-
def advise
|
54
|
-
# Noop
|
55
|
-
nil
|
56
|
-
end
|
57
|
-
|
58
|
-
# -- encoding --
|
59
|
-
|
60
|
-
def set_encoding(*args)
|
61
|
-
external_encoding, internal_encoding, transcode_options = process_set_encoding_arguments(*args)
|
62
|
-
|
63
|
-
set_target_encoding :@external_encoding, external_encoding
|
64
|
-
set_target_encoding :@internal_encoding, internal_encoding
|
65
|
-
@transcode_options = transcode_options
|
66
|
-
|
67
|
-
self
|
68
|
-
end
|
69
|
-
|
70
|
-
protected def process_set_encoding_arguments(*args)
|
71
|
-
external_encoding = args[0]
|
72
|
-
|
73
|
-
unless external_encoding.nil? || external_encoding.is_a?(::Encoding)
|
74
|
-
Validation.validate_string external_encoding
|
75
|
-
|
76
|
-
# First argument can be "external_encoding:internal_encoding".
|
77
|
-
match = %r{(.+?):(.+)}.match external_encoding
|
78
|
-
|
79
|
-
unless match.nil?
|
80
|
-
external_encoding = match[0]
|
81
|
-
internal_encoding = match[1]
|
82
|
-
|
83
|
-
transcode_options = args[1]
|
84
|
-
Validation.validate_hash transcode_options unless transcode_options.nil?
|
85
|
-
|
86
|
-
return [external_encoding, internal_encoding, transcode_options]
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
internal_encoding = args[1]
|
91
|
-
unless internal_encoding.nil? || internal_encoding.is_a?(::Encoding)
|
92
|
-
Validation.validate_string internal_encoding
|
93
|
-
end
|
94
|
-
|
95
|
-
transcode_options = args[2]
|
96
|
-
Validation.validate_hash transcode_options unless transcode_options.nil?
|
97
|
-
|
98
|
-
[external_encoding, internal_encoding, transcode_options]
|
99
|
-
end
|
100
|
-
|
101
|
-
protected def set_target_encoding(name, value)
|
102
|
-
unless value.nil? || value.is_a?(::Encoding)
|
103
|
-
begin
|
104
|
-
value = ::Encoding.find value
|
105
|
-
rescue ::ArgumentError
|
106
|
-
raise ValidateError, "invalid #{name} encoding"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
instance_variable_set name, value
|
111
|
-
end
|
112
|
-
|
113
|
-
protected def target_encoding
|
114
|
-
return @internal_encoding unless @internal_encoding.nil?
|
115
|
-
return @external_encoding unless @external_encoding.nil?
|
116
|
-
|
117
|
-
::Encoding::BINARY
|
118
|
-
end
|
119
|
-
|
120
|
-
# -- etc --
|
121
|
-
|
122
|
-
def rewind
|
123
|
-
@raw_stream = create_raw_stream
|
124
|
-
|
125
|
-
@io.rewind if @io.respond_to? :rewind
|
126
|
-
|
127
|
-
reset_buffer
|
128
|
-
reset_io_advise
|
129
|
-
|
130
|
-
@pos = 0
|
131
|
-
|
132
|
-
0
|
133
|
-
end
|
134
|
-
|
135
|
-
def close
|
136
|
-
@io.close if @io.respond_to? :close
|
137
|
-
|
138
|
-
nil
|
139
|
-
end
|
140
|
-
|
141
|
-
def closed?
|
142
|
-
return false unless @raw_stream.closed?
|
143
|
-
|
144
|
-
if @io.respond_to? :closed
|
145
|
-
@io.closed?
|
146
|
-
else
|
147
|
-
true
|
148
|
-
end
|
149
|
-
end
|
150
|
-
|
151
|
-
def to_io
|
152
|
-
self
|
153
|
-
end
|
154
|
-
end
|
155
|
-
end
|
156
|
-
end
|
data/lib/brs/stream/delegates.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# Ruby bindings for brotli library.
|
2
|
-
# Copyright (c) 2019 AUTHORS, MIT License.
|
3
|
-
|
4
|
-
require "forwardable"
|
5
|
-
|
6
|
-
module BRS
|
7
|
-
module Stream
|
8
|
-
module Delegates
|
9
|
-
DELEGATES = %i[
|
10
|
-
autoclose=
|
11
|
-
autoclose?
|
12
|
-
binmode
|
13
|
-
binmode?
|
14
|
-
close_on_exec=
|
15
|
-
close_on_exec?
|
16
|
-
fcntl
|
17
|
-
fdatasync
|
18
|
-
fileno
|
19
|
-
fsync
|
20
|
-
ioctl
|
21
|
-
isatty
|
22
|
-
pid
|
23
|
-
sync
|
24
|
-
sync=
|
25
|
-
to_i
|
26
|
-
tty?
|
27
|
-
]
|
28
|
-
.freeze
|
29
|
-
|
30
|
-
def self.included(klass)
|
31
|
-
klass.extend ::Forwardable
|
32
|
-
klass.def_delegators :@io, *DELEGATES
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
# Ruby bindings for brotli library.
|
2
|
-
# Copyright (c) 2019 AUTHORS, MIT License.
|
3
|
-
|
4
|
-
require "brs_ext"
|
5
|
-
|
6
|
-
require_relative "../../error"
|
7
|
-
require_relative "../../validation"
|
8
|
-
|
9
|
-
module BRS
|
10
|
-
module Stream
|
11
|
-
module Raw
|
12
|
-
class Abstract
|
13
|
-
def initialize(native_stream)
|
14
|
-
@native_stream = native_stream
|
15
|
-
@is_closed = false
|
16
|
-
end
|
17
|
-
|
18
|
-
# -- write --
|
19
|
-
|
20
|
-
def flush(&writer)
|
21
|
-
write_result(&writer)
|
22
|
-
|
23
|
-
nil
|
24
|
-
end
|
25
|
-
|
26
|
-
protected def more_destination(&writer)
|
27
|
-
result_bytesize = write_result(&writer)
|
28
|
-
raise NotEnoughDestinationError, "not enough destination" if result_bytesize.zero?
|
29
|
-
end
|
30
|
-
|
31
|
-
protected def write_result(&_writer)
|
32
|
-
result = @native_stream.read_result
|
33
|
-
yield result
|
34
|
-
|
35
|
-
result.bytesize
|
36
|
-
end
|
37
|
-
|
38
|
-
# -- close --
|
39
|
-
|
40
|
-
protected def do_not_use_after_close
|
41
|
-
raise UsedAfterCloseError, "used after close" if closed?
|
42
|
-
end
|
43
|
-
|
44
|
-
def close(&writer)
|
45
|
-
write_result(&writer)
|
46
|
-
|
47
|
-
@native_stream.close
|
48
|
-
@is_closed = true
|
49
|
-
|
50
|
-
nil
|
51
|
-
end
|
52
|
-
|
53
|
-
def closed?
|
54
|
-
@is_closed
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|