ruby-brs 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 614baececc4a64311bdd172a962cb5f9bc721b2ade99ed84216ab79908f5a0ca
4
- data.tar.gz: 88899da83cd343c1217652b7558a6770e43bd7722f3db7e1e3023ad54888bb54
3
+ metadata.gz: b6acc107214aae47c21bea586f3281f3b16ad01e03a5f13990667603b625ebd3
4
+ data.tar.gz: 7cf0a0aacb4bb52457f009a1ceffc6a6c9b6fb80bdf289b86efaabeed261de3f
5
5
  SHA512:
6
- metadata.gz: efb6e0ec7ee97e4d4c6977b6843ee81ae6ec334af2985674634ea31a24ff00373753cc828bbc250ec137700fa721f84e1071fd6486cbbc2db869e4e6850e7255
7
- data.tar.gz: 0ad07a2ebbbbbd27ff47a4e2780e90f297f4d02b36107f2877d45863f538b3f9b32b6aab18451a6376f620c6eee50118b6023b405cdb1f7c8079f1b8a295fd82
6
+ metadata.gz: 703c614f49408c3aeb4203aa6f1a5f6abd341d3e0f88275d6c88d52e66e0f1a2f49e00908675e9a4bebcefd0851b33b3f7a115b7e3577d2718acb90d6d2ae551
7
+ data.tar.gz: d4984cf3b656386c7ab0dfecaebed8be95e5b2b0a24c48a21413e4908fd50d9862883baf887dddb980378f9604346b3da2bc5a9b09c0b430882247ec72a22a87
data/README.md CHANGED
@@ -1,14 +1,14 @@
1
1
  # Ruby bindings for brotli library
2
2
 
3
- | AppVeyor | Circle | Github actions | Codecov | Gem |
4
- | :------: | :----: | :------------: | :-----: | :--: |
5
- | [![AppVeyor test status](https://ci.appveyor.com/api/projects/status/github/andrew-aladev/ruby-brs?branch=master&svg=true)](https://ci.appveyor.com/project/andrew-aladev/ruby-brs/branch/master) | [![Circle test status](https://circleci.com/gh/andrew-aladev/ruby-brs/tree/master.svg?style=shield)](https://circleci.com/gh/andrew-aladev/ruby-brs/tree/master) | [![Github Actions test status](https://github.com/andrew-aladev/ruby-brs/workflows/test/badge.svg?branch=master)](https://github.com/andrew-aladev/ruby-brs/actions) | [![Codecov](https://codecov.io/gh/andrew-aladev/ruby-brs/branch/master/graph/badge.svg)](https://codecov.io/gh/andrew-aladev/ruby-brs) | [![Gem](https://img.shields.io/gem/v/ruby-brs.svg)](https://rubygems.org/gems/ruby-brs) |
3
+ | AppVeyor | Jenkins | Github actions | Codecov | Gem |
4
+ | :------: | :-----: | :------------: | :-----: | :--: |
5
+ | [![AppVeyor test status](https://ci.appveyor.com/api/projects/status/github/andrew-aladev/ruby-brs?branch=master&svg=true)](https://ci.appveyor.com/project/andrew-aladev/ruby-brs/branch/master) | [![Jenkins test status](http://37.187.122.190:58182/buildStatus/icon?job=ruby-brs)](http://37.187.122.190:58182/job/ruby-brs) | [![Github Actions test status](https://github.com/andrew-aladev/ruby-brs/workflows/test/badge.svg?branch=master)](https://github.com/andrew-aladev/ruby-brs/actions) | [![Codecov](https://codecov.io/gh/andrew-aladev/ruby-brs/branch/master/graph/badge.svg)](https://codecov.io/gh/andrew-aladev/ruby-brs) | [![Gem](https://img.shields.io/gem/v/ruby-brs.svg)](https://rubygems.org/gems/ruby-brs) |
6
6
 
7
7
  See [brotli library](https://github.com/google/brotli).
8
8
 
9
9
  ## Installation
10
10
 
11
- Operating systems: GNU/Linux, FreeBSD, OSX, Windows (MinGW).
11
+ Operating systems: GNU/Linux, FreeBSD, OSX.
12
12
 
13
13
  Dependencies: [brotli](https://github.com/google/brotli) 1.0.0+ version.
14
14
 
@@ -18,7 +18,6 @@ Dependencies: [brotli](https://github.com/google/brotli) 1.0.0+ version.
18
18
  | CentOS | `brotli-devel` |
19
19
  | ArchLinux | `brotli` |
20
20
  | OSX | `brotli` |
21
- | Windows | `mingw-w64-x86_64-brotli` |
22
21
 
23
22
  ```sh
24
23
  gem install ruby-brs
@@ -133,6 +132,10 @@ Parallel.each large_datas do |large_data|
133
132
  end
134
133
  ```
135
134
 
135
+ # Docs
136
+
137
+ Please review [rdoc generated docs](https://andrew-aladev.github.io/ruby-brs).
138
+
136
139
  ## Options
137
140
 
138
141
  | Option | Values | Default | Description |
@@ -144,8 +147,8 @@ end
144
147
  | `quality` | 0 - 11 | 11 | compression level |
145
148
  | `lgwin` | 10 - 24 | 22 | compressor window size |
146
149
  | `lgblock` | 16 - 24 | nil (auto) | compressor input block size |
147
- | `npostfix` | 0 - 3 | nil (auto) | Recommended number of postfix bits |
148
- | `ndirect` | 0 - 120 | nil (auto) | Recommended number of direct distance codes (step 1 << npostfix, max 15 << npostfix) |
150
+ | `npostfix` | 0 - 3 | nil (auto) | recommended number of postfix bits |
151
+ | `ndirect` | 0 - 120 | nil (auto) | recommended number of direct distance codes (step 1 << npostfix, max 15 << npostfix) |
149
152
  | `disable_literal_context_modeling` | true/false | false | disables literal context modeling format |
150
153
  | `disable_ring_buffer_reallocation` | true/false | false | disables ring buffer reallocation |
151
154
  | `size_hint` | 0 - inf | 0 (auto) | size of input (if known) |
@@ -292,14 +295,11 @@ Special asynchronous methods missing in `Zlib::GzipWriter`.
292
295
  So it is possible to have asynchronous variants for these synchronous methods.
293
296
  Behaviour is the same as `IO#write_nonblock` method.
294
297
 
295
- All nonblock operations for file will raise `EBADF` error on Windows.
296
- Setting file into nonblocking mode is [not available on Windows](https://github.com/ruby/ruby/blob/master/win32/win32.c#L4388).
297
-
298
298
  ```
299
299
  #<<(object)
300
300
  #print(*objects)
301
301
  #printf(*args)
302
- #putc(object, encoding: ::Encoding::BINARY)
302
+ #putc(object, :encoding => 'ASCII-8BIT')
303
303
  #puts(*objects)
304
304
  ```
305
305
 
data/lib/brs/error.rb CHANGED
@@ -1,21 +1,26 @@
1
1
  # Ruby bindings for brotli library.
2
2
  # Copyright (c) 2019 AUTHORS, MIT License.
3
3
 
4
+ require "adsp"
5
+
4
6
  module BRS
5
7
  class BaseError < ::StandardError; end
6
8
 
7
9
  class AllocateError < BaseError; end
8
- class ValidateError < BaseError; end
9
10
 
10
- class UsedAfterCloseError < BaseError; end
11
11
  class NotEnoughSourceBufferError < BaseError; end
12
12
  class NotEnoughDestinationBufferError < BaseError; end
13
- class NotEnoughDestinationError < BaseError; end
14
13
  class DecompressorCorruptedSourceError < BaseError; end
15
14
 
16
15
  class AccessIOError < BaseError; end
17
16
  class ReadIOError < BaseError; end
18
17
  class WriteIOError < BaseError; end
19
18
 
20
- class UnexpectedError < BaseError; end
19
+ ValidateError = ADSP::ValidateError
20
+
21
+ NotEnoughDestinationError = ADSP::NotEnoughDestinationError
22
+ UsedAfterCloseError = ADSP::UsedAfterCloseError
23
+
24
+ NotImplementedError = ADSP::NotImplementedError
25
+ UnexpectedError = ADSP::UnexpectedError
21
26
  end
data/lib/brs/file.rb CHANGED
@@ -1,50 +1,40 @@
1
1
  # Ruby bindings for brotli library.
2
2
  # Copyright (c) 2019 AUTHORS, MIT License.
3
3
 
4
+ require "adsp/file"
4
5
  require "brs_ext"
5
6
 
6
- require_relative "error"
7
7
  require_relative "option"
8
8
  require_relative "validation"
9
9
 
10
10
  module BRS
11
- module File
12
- BUFFER_LENGTH_NAMES = %i[source_buffer_length destination_buffer_length].freeze
13
-
11
+ # BRS::File class.
12
+ class File < ADSP::File
13
+ # Current option class.
14
+ Option = BRS::Option
15
+
16
+ # Compresses data from +source+ file path to +destination+ file path.
17
+ # Option: +:source_buffer_length+ source buffer length.
18
+ # Option: +:destination_buffer_length+ destination buffer length.
19
+ # Option: +:size_hint+ source bytesize.
14
20
  def self.compress(source, destination, options = {})
15
21
  Validation.validate_string source
16
- Validation.validate_string destination
17
22
 
18
23
  options = Option.get_compressor_options options, BUFFER_LENGTH_NAMES
19
24
 
20
25
  options[:size_hint] = ::File.size source
21
26
 
22
- open_files source, destination do |source_io, destination_io|
23
- BRS._native_compress_io source_io, destination_io, options
24
- end
25
-
26
- nil
27
+ super source, destination, options
27
28
  end
28
29
 
29
- def self.decompress(source, destination, options = {})
30
- Validation.validate_string source
31
- Validation.validate_string destination
32
-
33
- options = Option.get_decompressor_options options, BUFFER_LENGTH_NAMES
34
-
35
- open_files source, destination do |source_io, destination_io|
36
- BRS._native_decompress_io source_io, destination_io, options
37
- end
38
-
39
- nil
30
+ # Bypass native compress.
31
+ def self.native_compress_io(*args)
32
+ BRS._native_compress_io(*args)
40
33
  end
41
34
 
42
- private_class_method def self.open_files(source, destination, &_block)
43
- ::File.open source, "rb" do |source_io|
44
- ::File.open destination, "wb" do |destination_io|
45
- yield source_io, destination_io
46
- end
47
- end
35
+ # Bypass native decompress.
36
+ def self.native_decompress_io(*args)
37
+ BRS._native_decompress_io(*args)
48
38
  end
49
39
  end
50
40
  end
data/lib/brs/option.rb CHANGED
@@ -7,29 +7,58 @@ require_relative "error"
7
7
  require_relative "validation"
8
8
 
9
9
  module BRS
10
+ # BRS::Option module.
10
11
  module Option
12
+ # Current default buffer length.
11
13
  DEFAULT_BUFFER_LENGTH = 0
12
14
 
15
+ # Current compressor defaults.
13
16
  COMPRESSOR_DEFAULTS = {
17
+ # Enables global VM lock where possible.
14
18
  :gvl => false,
19
+ # Compressor mode.
15
20
  :mode => nil,
21
+ # Compression level.
16
22
  :quality => nil,
23
+ # Compressor window size.
17
24
  :lgwin => nil,
25
+ # Compressor input block size.
18
26
  :lgblock => nil,
27
+ # Recommended number of postfix bits.
19
28
  :npostfix => nil,
29
+ # Recommended number of direct distance codes (step 1 << npostfix, max 15 << npostfix).
20
30
  :ndirect => nil,
31
+ # Disables literal context modeling format.
21
32
  :disable_literal_context_modeling => nil,
33
+ # Enables large window.
22
34
  :large_window => nil
23
35
  }
24
36
  .freeze
25
37
 
38
+ # Current decompressor defaults.
26
39
  DECOMPRESSOR_DEFAULTS = {
40
+ # Enables global VM lock where possible.
27
41
  :gvl => false,
42
+ # Disables ring buffer reallocation.
28
43
  :disable_ring_buffer_reallocation => nil,
44
+ # Enables large window.
29
45
  :large_window => nil
30
46
  }
31
47
  .freeze
32
48
 
49
+ # Processes compressor +options+ and +buffer_length_names+.
50
+ # Option: +:source_buffer_length+ source buffer length.
51
+ # Option: +:destination_buffer_length+ destination buffer length.
52
+ # Option: +:gvl+ enables global VM lock where possible.
53
+ # Option: +:mode+ compressor mode.
54
+ # Option: +:quality+ compression level.
55
+ # Option: +:lgwin+ compressor window size.
56
+ # Option: +:lgblock+ compressor input block size.
57
+ # Option: +:npostfix+ recommended number of postfix bits.
58
+ # Option: +:ndirect+ recommended number of direct distance codes (step 1 << npostfix, max 15 << npostfix).
59
+ # Option: +:disable_literal_context_modeling+ Disables literal context modeling format.
60
+ # Option: +:large_window+ enables large window.
61
+ # Returns processed compressor options.
33
62
  def self.get_compressor_options(options, buffer_length_names)
34
63
  Validation.validate_hash options
35
64
 
@@ -94,6 +123,13 @@ module BRS
94
123
  options
95
124
  end
96
125
 
126
+ # Processes decompressor +options+ and +buffer_length_names+.
127
+ # Option: +:source_buffer_length+ source buffer length.
128
+ # Option: +:destination_buffer_length+ destination buffer length.
129
+ # Option: +:gvl+ enables global VM lock where possible.
130
+ # Option: +:disable_ring_buffer_reallocation+ disables ring buffer reallocation.
131
+ # Option: +:large_window+ enables large window.
132
+ # Returns processed decompressor options.
97
133
  def self.get_decompressor_options(options, buffer_length_names)
98
134
  Validation.validate_hash options
99
135
 
@@ -1,97 +1,33 @@
1
1
  # Ruby bindings for brotli library.
2
2
  # Copyright (c) 2019 AUTHORS, MIT License.
3
3
 
4
+ require "adsp/stream/raw/compressor"
4
5
  require "brs_ext"
5
6
 
6
- require_relative "abstract"
7
- require_relative "../../error"
8
7
  require_relative "../../option"
9
8
  require_relative "../../validation"
10
9
 
11
10
  module BRS
12
11
  module Stream
13
12
  module Raw
14
- class Compressor < Abstract
15
- BUFFER_LENGTH_NAMES = %i[destination_buffer_length].freeze
13
+ # BRS::Stream::Raw::Compressor class.
14
+ class Compressor < ADSP::Stream::Raw::Compressor
15
+ # Current native compressor class.
16
+ NativeCompressor = Stream::NativeCompressor
16
17
 
18
+ # Current option class.
19
+ Option = BRS::Option
20
+
21
+ # Initializes compressor.
22
+ # Option: +:destination_buffer_length+ destination buffer length.
23
+ # Option: +:size_hint+ source bytesize.
17
24
  def initialize(options = {})
18
25
  options = Option.get_compressor_options options, BUFFER_LENGTH_NAMES
19
26
 
20
27
  size_hint = options[:size_hint]
21
28
  Validation.validate_not_negative_integer size_hint unless size_hint.nil?
22
29
 
23
- native_stream = NativeCompressor.new options
24
-
25
- super native_stream
26
- end
27
-
28
- def write(source, &writer)
29
- do_not_use_after_close
30
-
31
- Validation.validate_string source
32
- Validation.validate_proc writer
33
-
34
- total_bytes_written = 0
35
-
36
- loop do
37
- bytes_written, need_more_destination = @native_stream.write source
38
- total_bytes_written += bytes_written
39
-
40
- if need_more_destination
41
- source = source.byteslice bytes_written, source.bytesize - bytes_written
42
- more_destination(&writer)
43
- next
44
- end
45
-
46
- unless bytes_written == source.bytesize
47
- # :nocov:
48
- # Compressor write should eat all provided "source" without remainder.
49
- raise UnexpectedError, "unexpected error"
50
- # :nocov:
51
- end
52
-
53
- break
54
- end
55
-
56
- total_bytes_written
57
- end
58
-
59
- def flush(&writer)
60
- do_not_use_after_close
61
-
62
- Validation.validate_proc writer
63
-
64
- loop do
65
- need_more_destination = @native_stream.flush
66
-
67
- if need_more_destination
68
- more_destination(&writer)
69
- next
70
- end
71
-
72
- break
73
- end
74
-
75
- super
76
- end
77
-
78
- def close(&writer)
79
- return nil if closed?
80
-
81
- Validation.validate_proc writer
82
-
83
- loop do
84
- need_more_destination = @native_stream.finish
85
-
86
- if need_more_destination
87
- more_destination(&writer)
88
- next
89
- end
90
-
91
- break
92
- end
93
-
94
- super
30
+ super options
95
31
  end
96
32
  end
97
33
  end
@@ -1,65 +1,21 @@
1
1
  # Ruby bindings for brotli library.
2
2
  # Copyright (c) 2019 AUTHORS, MIT License.
3
3
 
4
+ require "adsp/stream/raw/decompressor"
4
5
  require "brs_ext"
5
6
 
6
- require_relative "abstract"
7
7
  require_relative "../../option"
8
- require_relative "../../validation"
9
8
 
10
9
  module BRS
11
10
  module Stream
12
11
  module Raw
13
- class Decompressor < Abstract
14
- BUFFER_LENGTH_NAMES = %i[destination_buffer_length].freeze
12
+ # BRS::Stream::Raw::Decompressor class.
13
+ class Decompressor < ADSP::Stream::Raw::Decompressor
14
+ # Current native decompressor class.
15
+ NativeDecompressor = Stream::NativeDecompressor
15
16
 
16
- def initialize(options = {})
17
- options = Option.get_decompressor_options options, BUFFER_LENGTH_NAMES
18
- native_stream = NativeDecompressor.new options
19
-
20
- super native_stream
21
- end
22
-
23
- def read(source, &writer)
24
- do_not_use_after_close
25
-
26
- Validation.validate_string source
27
- Validation.validate_proc writer
28
-
29
- total_bytes_read = 0
30
-
31
- loop do
32
- bytes_read, need_more_destination = @native_stream.read source
33
- total_bytes_read += bytes_read
34
-
35
- if need_more_destination
36
- source = source.byteslice bytes_read, source.bytesize - bytes_read
37
- more_destination(&writer)
38
- next
39
- end
40
-
41
- break
42
- end
43
-
44
- # Please remember that "total_bytes_read" can not be equal to "source.bytesize".
45
- total_bytes_read
46
- end
47
-
48
- def flush(&writer)
49
- do_not_use_after_close
50
-
51
- Validation.validate_proc writer
52
-
53
- super
54
- end
55
-
56
- def close(&writer)
57
- return nil if closed?
58
-
59
- Validation.validate_proc writer
60
-
61
- super
62
- end
17
+ # Current option class.
18
+ Option = BRS::Option
63
19
  end
64
20
  end
65
21
  end
@@ -1,195 +1,16 @@
1
1
  # Ruby bindings for brotli library.
2
2
  # Copyright (c) 2019 AUTHORS, MIT License.
3
3
 
4
- require_relative "abstract"
4
+ require "adsp/stream/reader"
5
+
5
6
  require_relative "raw/decompressor"
6
- require_relative "reader_helpers"
7
- require_relative "../validation"
8
7
 
9
8
  module BRS
10
9
  module Stream
11
- class Reader < Abstract
12
- include ReaderHelpers
13
-
14
- attr_accessor :lineno
15
-
16
- def initialize(source_io, options = {}, *args)
17
- @options = options
18
-
19
- super source_io, *args
20
-
21
- initialize_source_buffer_length
22
- reset_io_remainder
23
- reset_need_to_flush
24
-
25
- @lineno = 0
26
- end
27
-
28
- protected def create_raw_stream
29
- Raw::Decompressor.new @options
30
- end
31
-
32
- protected def initialize_source_buffer_length
33
- source_buffer_length = @options[:source_buffer_length]
34
- Validation.validate_not_negative_integer source_buffer_length unless source_buffer_length.nil?
35
-
36
- if source_buffer_length.nil? || source_buffer_length.zero?
37
- source_buffer_length = Buffer::DEFAULT_SOURCE_BUFFER_LENGTH_FOR_DECOMPRESSOR
38
- end
39
-
40
- @source_buffer_length = source_buffer_length
41
- end
42
-
43
- protected def reset_io_remainder
44
- @io_remainder = ::String.new :encoding => ::Encoding::BINARY
45
- end
46
-
47
- protected def reset_need_to_flush
48
- @need_to_flush = false
49
- end
50
-
51
- # -- synchronous --
52
-
53
- def read(bytes_to_read = nil, out_buffer = nil)
54
- Validation.validate_not_negative_integer bytes_to_read unless bytes_to_read.nil?
55
- Validation.validate_string out_buffer unless out_buffer.nil?
56
-
57
- raise ValidateError, "io should be responsible to read and eof" unless
58
- @io.respond_to?(:read) && @io.respond_to?(:eof?)
59
-
60
- unless bytes_to_read.nil?
61
- return ::String.new :encoding => ::Encoding::BINARY if bytes_to_read.zero?
62
- return nil if eof?
63
-
64
- append_io_data @io.read(@source_buffer_length) while @buffer.bytesize < bytes_to_read && !@io.eof?
65
- flush_io_data if @buffer.bytesize < bytes_to_read
66
-
67
- return read_bytes_from_buffer bytes_to_read, out_buffer
68
- end
69
-
70
- append_io_data @io.read(@source_buffer_length) until @io.eof?
71
- flush_io_data
72
-
73
- read_buffer out_buffer
74
- end
75
-
76
- def rewind
77
- raw_wrapper :close
78
-
79
- reset_io_remainder
80
- reset_need_to_flush
81
-
82
- super
83
- end
84
-
85
- def close
86
- raw_wrapper :close
87
-
88
- super
89
- end
90
-
91
- def eof?
92
- raise ValidateError, "io should be responsible to eof" unless @io.respond_to? :eof?
93
-
94
- empty? && @io.eof?
95
- end
96
-
97
- # -- asynchronous --
98
-
99
- def readpartial(bytes_to_read, out_buffer = nil)
100
- raise ValidateError, "io should be responsible to readpartial" unless @io.respond_to? :readpartial
101
-
102
- read_more_nonblock(bytes_to_read, out_buffer) { @io.readpartial @source_buffer_length }
103
- end
104
-
105
- def read_nonblock(bytes_to_read, out_buffer = nil, *options)
106
- raise ValidateError, "io should be responsible to read nonblock" unless @io.respond_to? :read_nonblock
107
-
108
- read_more_nonblock(bytes_to_read, out_buffer) { @io.read_nonblock(@source_buffer_length, *options) }
109
- end
110
-
111
- protected def read_more_nonblock(bytes_to_read, out_buffer, &_block)
112
- Validation.validate_not_negative_integer bytes_to_read
113
- Validation.validate_string out_buffer unless out_buffer.nil?
114
-
115
- return ::String.new :encoding => ::Encoding::BINARY if bytes_to_read.zero?
116
-
117
- io_provided_eof_error = false
118
-
119
- if @buffer.bytesize < bytes_to_read
120
- begin
121
- append_io_data yield
122
- rescue ::EOFError
123
- io_provided_eof_error = true
124
- end
125
- end
126
-
127
- flush_io_data if @buffer.bytesize < bytes_to_read
128
- raise ::EOFError if empty? && io_provided_eof_error
129
-
130
- read_bytes_from_buffer bytes_to_read, out_buffer
131
- end
132
-
133
- # -- common --
134
-
135
- protected def append_io_data(io_data)
136
- io_portion = @io_remainder + io_data
137
- bytes_read = raw_wrapper :read, io_portion
138
- @io_remainder = io_portion.byteslice bytes_read, io_portion.bytesize - bytes_read
139
-
140
- # Even empty io data may require flush.
141
- @need_to_flush = true
142
- end
143
-
144
- protected def flush_io_data
145
- raw_wrapper :flush
146
-
147
- @need_to_flush = false
148
- end
149
-
150
- protected def empty?
151
- !@need_to_flush && @buffer.bytesize.zero?
152
- end
153
-
154
- protected def read_bytes_from_buffer(bytes_to_read, out_buffer)
155
- bytes_read = [@buffer.bytesize, bytes_to_read].min
156
-
157
- # Result uses buffer binary encoding.
158
- result = @buffer.byteslice 0, bytes_read
159
- @buffer = @buffer.byteslice bytes_read, @buffer.bytesize - bytes_read
160
- @pos += bytes_read
161
-
162
- result = out_buffer.replace result unless out_buffer.nil?
163
- result
164
- end
165
-
166
- protected def read_buffer(out_buffer)
167
- result = @buffer
168
- reset_buffer
169
- @pos += result.bytesize
170
-
171
- result.force_encoding @external_encoding unless @external_encoding.nil?
172
- result = transcode_to_internal result
173
-
174
- result = out_buffer.replace result unless out_buffer.nil?
175
- result
176
- end
177
-
178
- protected def transcode_to_internal(data)
179
- data = data.encode @internal_encoding, **@transcode_options unless @internal_encoding.nil?
180
- data
181
- end
182
-
183
- # We should be able to return data back to buffer.
184
- # We won't use any transcode options because transcoded data should be backward compatible.
185
- protected def transcode_to_external(data)
186
- data = data.encode @external_encoding unless @external_encoding.nil?
187
- data
188
- end
189
-
190
- protected def raw_wrapper(method_name, *args)
191
- @raw_stream.send(method_name, *args) { |portion| @buffer << portion }
192
- end
10
+ # BRS::Stream::Reader class.
11
+ class Reader < ADSP::Stream::Reader
12
+ # Current raw stream class.
13
+ RawDecompressor = Raw::Decompressor
193
14
  end
194
15
  end
195
16
  end