io-stream 0.11.0 → 0.11.1

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: 1c071e8e033bc6afd35a809466299187cfbee327acf26787968a7af2baeb89ce
4
- data.tar.gz: 748cee4f872237453f35ef91aea936f29a632a27d35cf09235dcdd72b12e5826
3
+ metadata.gz: aa0f71cc4addc72776d1dbc02c14d0edb79fc0ae250aebb7f0d4924f6b251701
4
+ data.tar.gz: b5f6ec1328debef8a9b9f9d8593f8a929504e5f0cc170cb780fec41a75ac38f2
5
5
  SHA512:
6
- metadata.gz: 758b8a379a4b745e51a58810011a33fd5473527863da8c655d2f84a8fa135925b258edf25dd2431ab9b4f2b9e983a725cf6855ead510ac832705eb55c08a5d41
7
- data.tar.gz: d7acbd5c30572b838503b1e25faea6b6ce046e76581d712bcd2fa6792a3f156992a69610a19d76be6e3746b4782cba479b9e318762dbb5864d5f4ff732fd273e
6
+ metadata.gz: bd297845e8fdcabd8879baa92e46908129d585a378bf982a1e6f051d67748d216aa7435cbd391bebf2ae364838893c372666a1c10d5de36fcef4e91884377cd1
7
+ data.tar.gz: 857c75d7a920b8f4b6dbcda4746ae41e059eb936cda6f1ea347191843996e00af4a87d4f6e04b0be219c1b4199f59d9ccb3b1114a15619f131186aba68b833e5
checksums.yaml.gz.sig CHANGED
Binary file
@@ -18,6 +18,14 @@ module IO::Stream
18
18
  include Readable
19
19
  include Writable
20
20
 
21
+ # Check if a method is async-safe.
22
+ #
23
+ # @parameter method [Symbol] The method name to check.
24
+ # @returns [Symbol | Boolean] The concurrency guard for the given method.
25
+ def self.async_safe?(method)
26
+ Readable.async_safe?(method) || Writable.async_safe?(method)
27
+ end
28
+
21
29
  # Initialize a new generic stream.
22
30
  # @parameter options [Hash] Options passed to included modules.
23
31
  def initialize(**options)
@@ -25,6 +25,31 @@ module IO::Stream
25
25
  #
26
26
  # You must implement the `sysread` method to read data from the underlying IO.
27
27
  module Readable
28
+ ASYNC_SAFE = {
29
+ read: :readable,
30
+ read_partial: :readable,
31
+ read_exactly: :readable,
32
+ read_until: :readable,
33
+ peek: :readable,
34
+ gets: :readable,
35
+ getc: :readable,
36
+ getbyte: :readable,
37
+ readline: :readable,
38
+ readlines: :readable,
39
+ readable?: :readable,
40
+ fill_read_buffer: :readable,
41
+ eof?: :readable,
42
+ finished?: :readable,
43
+ }.freeze
44
+
45
+ # Check if a method is async-safe.
46
+ #
47
+ # @parameter method [Symbol] The method name to check.
48
+ # @returns [Symbol | Boolean] The concurrency guard for the given method.
49
+ def self.async_safe?(method)
50
+ ASYNC_SAFE.fetch(method, false)
51
+ end
52
+
28
53
  # Initialize readable stream functionality.
29
54
  # @parameter minimum_read_size [Integer] The minimum size for read operations.
30
55
  # @parameter maximum_read_size [Integer] The maximum size for read operations.
@@ -4,5 +4,5 @@
4
4
  # Copyright, 2023-2025, by Samuel Williams.
5
5
 
6
6
  module IO::Stream
7
- VERSION = "0.11.0"
7
+ VERSION = "0.11.1"
8
8
  end
@@ -13,6 +13,20 @@ module IO::Stream
13
13
  #
14
14
  # You must implement the `syswrite` method to write data to the underlying IO.
15
15
  module Writable
16
+ ASYNC_SAFE = {
17
+ write: true,
18
+ puts: true,
19
+ flush: true,
20
+ }.freeze
21
+
22
+ # Check if a method is async-safe.
23
+ #
24
+ # @parameter method [Symbol] The method name to check.
25
+ # @returns [Symbol | Boolean] The concurrency guard for the given method.
26
+ def self.async_safe?(method)
27
+ ASYNC_SAFE.fetch(method, false)
28
+ end
29
+
16
30
  # Initialize writable stream functionality.
17
31
  # @parameter minimum_write_size [Integer] The minimum buffer size before flushing.
18
32
  def initialize(minimum_write_size: MINIMUM_WRITE_SIZE, **, &block)
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.11.0
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  requirements: []
79
- rubygems_version: 3.7.2
79
+ rubygems_version: 3.6.9
80
80
  specification_version: 4
81
81
  summary: Provides a generic stream wrapper for IO instances.
82
82
  test_files: []
metadata.gz.sig CHANGED
Binary file