io-stream 0.2.0 → 0.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98127286e0bfcfd823b663adec90587de5148f282cdad684a684c5eb2a057595
4
- data.tar.gz: 41e3f054780a65fdf41f83996281a1f2720712a55ba1582939a60beeb7101303
3
+ metadata.gz: 93cc26a0208cdfd7e20115522eeb3a51234834a5b6ce6670248c6bb85dd84e3c
4
+ data.tar.gz: bec8f1a9e90cb7fe37845d4acb96c0c8f1919d253662da476a169a29a27b33bf
5
5
  SHA512:
6
- metadata.gz: 4144ccb9ff5d96ef0d8f7aa56bce33d92333809ce827d860f5b8e604cede4751674a070a4ac0df97dee348ab039f5aa1b25bf4f8f3c723809dd4fe7281bd44e4
7
- data.tar.gz: 59de415924836ae327e5c3089f1b458ef46bc4152b4c97b54f55998a3075035608c68ff2cc30414ed2458c36537a1c0a0b3c6c8833a1eb448550da7ce00f29bf
6
+ metadata.gz: 865a0a1031f7c83bbd428675e970fd2421a42ae4e19cd22ccf2080678d4009c78add651212f1f69cada5ba07075e1411d39978f3f9cba721d291a56f266a71e8
7
+ data.tar.gz: 73ff08ba993904115d3158fe5e233cc6e0e9667c34614b4c1e4efae5873417a3cd8f08cb30ac58edace8cb118ee640afdef1f37aaa73677d2c4ca64f7bad82de
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2023-2024, by Samuel Williams.
4
+ # Copyright, 2024, by Samuel Williams.
5
5
 
6
6
  require_relative 'generic'
7
7
 
@@ -41,6 +41,11 @@ module IO::Stream
41
41
  super(...)
42
42
 
43
43
  @io = io
44
+ if io.respond_to?(:timeout)
45
+ @timeout = io.timeout
46
+ else
47
+ @timeout = nil
48
+ end
44
49
  end
45
50
 
46
51
  attr :io
@@ -78,9 +83,9 @@ module IO::Stream
78
83
 
79
84
  case result
80
85
  when :wait_readable
81
- @io.wait_readable
86
+ @io.wait_readable(@io.timeout) or raise ::IO::TimeoutError, "read timeout"
82
87
  when :wait_writable
83
- @io.wait_writable
88
+ @io.wait_writable(@io.timeout) or raise ::IO::TimeoutError, "write timeout"
84
89
  else
85
90
  if result == buffer.bytesize
86
91
  return
@@ -99,9 +104,9 @@ module IO::Stream
99
104
 
100
105
  case result
101
106
  when :wait_readable
102
- @io.wait_readable
107
+ @io.wait_readable(@io.timeout) or raise ::IO::TimeoutError, "read timeout"
103
108
  when :wait_writable
104
- @io.wait_writable
109
+ @io.wait_writable(@io.timeout) or raise ::IO::TimeoutError, "write timeout"
105
110
  else
106
111
  return result
107
112
  end
@@ -5,8 +5,9 @@
5
5
 
6
6
  require_relative 'string_buffer'
7
7
 
8
- require_relative '../buffered'
9
- require_relative '../readable'
8
+ require_relative 'shim/buffered'
9
+ require_relative 'shim/readable'
10
+ require_relative 'shim/timeout'
10
11
 
11
12
  require_relative 'openssl'
12
13
 
@@ -1,3 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2024, by Samuel Williams.
5
+
1
6
  require 'openssl'
2
7
 
3
8
  module OpenSSL
@@ -26,6 +31,18 @@ module OpenSSL
26
31
  to_io.wait_writable(...)
27
32
  end
28
33
  end
34
+
35
+ unless method_defined?(:timeout)
36
+ def timeout
37
+ to_io.timeout
38
+ end
39
+ end
40
+
41
+ unless method_defined?(:timeout=)
42
+ def timeout=(value)
43
+ to_io.timeout = value
44
+ end
45
+ end
29
46
  end
30
47
  end
31
48
  end
@@ -0,0 +1,4 @@
1
+ # Shims
2
+
3
+ Several shims are included for compatibility.
4
+
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ class IO
4
+ unless const_defined?(:TimeoutError)
5
+ # Compatibility shim.
6
+ class TimeoutError < IOError
7
+ end
8
+ end
9
+
10
+ unless method_defined?(:timeout)
11
+ # Compatibility shim.
12
+ attr_accessor :timeout
13
+ end
14
+ end
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2023-2024, by Samuel Williams.
5
5
 
6
6
  module IO::Stream
7
- VERSION = "0.2.0"
7
+ VERSION = "0.4.0"
8
8
  end
data/lib/io/stream.rb CHANGED
@@ -4,9 +4,17 @@
4
4
  # Copyright, 2023-2024, by Samuel Williams.
5
5
 
6
6
  require_relative 'stream/version'
7
- require_relative 'stream/buffered_stream'
7
+ require_relative 'stream/buffered'
8
8
 
9
9
  class IO
10
10
  module Stream
11
11
  end
12
+
13
+ def self.Stream(io)
14
+ if io.is_a?(Stream::Buffered)
15
+ io
16
+ else
17
+ Stream::Buffered.wrap(io)
18
+ end
19
+ end
12
20
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: io-stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -45,12 +45,14 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - lib/io/buffered.rb
49
- - lib/io/readable.rb
50
48
  - lib/io/stream.rb
51
49
  - lib/io/stream/buffered.rb
52
50
  - lib/io/stream/generic.rb
53
51
  - lib/io/stream/openssl.rb
52
+ - lib/io/stream/shim/buffered.rb
53
+ - lib/io/stream/shim/readable.rb
54
+ - lib/io/stream/shim/shim.md
55
+ - lib/io/stream/shim/timeout.rb
54
56
  - lib/io/stream/string_buffer.rb
55
57
  - lib/io/stream/version.rb
56
58
  - license.md
metadata.gz.sig CHANGED
Binary file
File without changes
File without changes