io-endpoint 0.6.0 → 0.7.0

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: 5bcb63287c1be90c51846285208bb0ddb82d3e1da5ccf53c698a8b75af180bf7
4
- data.tar.gz: 2ef636802b1a1d76183f661857a75805efc98b78bc1d396b2e27658ceb49c9dc
3
+ metadata.gz: 3f76dc33db329c9e393c817dbc679a3d06c1f523eda8740edd25447ed39f5a1b
4
+ data.tar.gz: 3917511b6a08184cad66e734120d8ea039b15645b9f0c1b256a5149372628e56
5
5
  SHA512:
6
- metadata.gz: 95a1be9bd523f623bd07a6d0c8c9cfb46f10d2224697488ecbbafce04cadbca50a4ae9ce8437c2efe4c990161e68efa3110cb05f29bef4bf652f68a0ca606a53
7
- data.tar.gz: e05ec8d424c92d0f7edbffd8f6ec6faef93a82b086e6fd8447eeed0b9a22b9ea7eb92a8359785d888556906cdd02076b5ca161c3a7b0bec597fe0167102c7c6e
6
+ metadata.gz: 9b685cf7785946c7a856eaf7859ce6c8427c0ad1df532b188c1049432b474afd289fe7e31eff9ee6c4c608d42022b84e48d4b963de563b83482a6daa572520e8
7
+ data.tar.gz: f2a96e35cce3eea736e3ac25eabd3674d595753cdfa3caa652f28da4e9793d7d7d51d3518731018ac19716c779092eaea90d51813504cadca6193a64709fe4e1
checksums.yaml.gz.sig CHANGED
Binary file
@@ -17,7 +17,7 @@ module OpenSSL
17
17
  end
18
18
  end
19
19
 
20
- unless method_defined?(:close_on_exec)
20
+ unless method_defined?(:local_address)
21
21
  def local_address
22
22
  to_io.local_address
23
23
  end
@@ -5,6 +5,6 @@
5
5
 
6
6
  class IO
7
7
  module Endpoint
8
- VERSION = "0.6.0"
8
+ VERSION = "0.7.0"
9
9
  end
10
10
  end
data/lib/io/endpoint.rb CHANGED
@@ -7,6 +7,8 @@ require_relative "endpoint/version"
7
7
  require_relative "endpoint/generic"
8
8
  require_relative "endpoint/shared_endpoint"
9
9
 
10
+ require_relative 'readable'
11
+
10
12
  module IO::Endpoint
11
13
  def self.file_descriptor_limit
12
14
  Process.getrlimit(Process::RLIMIT_NOFILE).first
@@ -0,0 +1,56 @@
1
+ class IO
2
+ unless method_defined?(:readable?)
3
+ def readable?
4
+ if self.wait_readable(0).nil?
5
+ # timeout means it is not eof
6
+ return true
7
+ else
8
+ !self.eof?
9
+ end
10
+ end
11
+ end
12
+ end
13
+
14
+ require 'socket'
15
+
16
+ class BasicSocket
17
+ unless method_defined?(:readable?)
18
+ def readable?
19
+ # Is it likely that the socket is still connected?
20
+ # May return false positive, but won't return false negative.
21
+ return false unless super
22
+
23
+ # If we can wait for the socket to become readable, we know that the socket may still be open.
24
+ result = to_io.recv_nonblock(1, MSG_PEEK, exception: false)
25
+
26
+ # No data was available - newer Ruby can return nil instead of empty string:
27
+ return false if result.nil?
28
+
29
+ # Either there was some data available, or we can wait to see if there is data avaialble.
30
+ return !result.empty? || result == :wait_readable
31
+ rescue Errno::ECONNRESET
32
+ # This might be thrown by recv_nonblock.
33
+ return false
34
+ end
35
+ end
36
+ end
37
+
38
+ require 'stringio'
39
+
40
+ class StringIO
41
+ unless method_defined?(:readable?)
42
+ def readable?
43
+ !eof?
44
+ end
45
+ end
46
+ end
47
+
48
+ require 'openssl'
49
+
50
+ class OpenSSL::SSL::SSLSocket
51
+ unless method_defined?(:readable?)
52
+ def readable?
53
+ to_io.readable?
54
+ end
55
+ end
56
+ end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: io-endpoint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -37,7 +37,7 @@ cert_chain:
37
37
  Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
38
38
  voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
39
39
  -----END CERTIFICATE-----
40
- date: 2024-01-26 00:00:00.000000000 Z
40
+ date: 2024-04-20 00:00:00.000000000 Z
41
41
  dependencies: []
42
42
  description:
43
43
  email:
@@ -45,7 +45,6 @@ executables: []
45
45
  extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
- - lib/io/connected.rb
49
48
  - lib/io/endpoint.rb
50
49
  - lib/io/endpoint/address_endpoint.rb
51
50
  - lib/io/endpoint/bound_endpoint.rb
@@ -59,6 +58,7 @@ files:
59
58
  - lib/io/endpoint/unix_endpoint.rb
60
59
  - lib/io/endpoint/version.rb
61
60
  - lib/io/endpoint/wrapper.rb
61
+ - lib/io/readable.rb
62
62
  - license.md
63
63
  - readme.md
64
64
  homepage: https://github.com/socketry/io-endpoint
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  requirements: []
84
- rubygems_version: 3.5.5
84
+ rubygems_version: 3.5.3
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: Provides a separation of concerns interface for IO endpoints.
metadata.gz.sig CHANGED
Binary file
data/lib/io/connected.rb DELETED
@@ -1,27 +0,0 @@
1
- require 'socket'
2
-
3
- class IO
4
- def connected?
5
- !closed?
6
- end
7
- end
8
-
9
- class Socket
10
- def connected?
11
- # Is it likely that the socket is still connected?
12
- # May return false positive, but won't return false negative.
13
- return false unless super
14
-
15
- # If we can wait for the socket to become readable, we know that the socket may still be open.
16
- result = to_io.recv_nonblock(1, MSG_PEEK, exception: false)
17
-
18
- # No data was available - newer Ruby can return nil instead of empty string:
19
- return false if result.nil?
20
-
21
- # Either there was some data available, or we can wait to see if there is data avaialble.
22
- return !result.empty? || result == :wait_readable
23
- rescue Errno::ECONNRESET
24
- # This might be thrown by recv_nonblock.
25
- return false
26
- end
27
- end