async-io 0.4.0 → 0.5.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 +4 -4
- data/lib/async/io/address.rb +6 -0
- data/lib/async/io/socket.rb +4 -3
- data/lib/async/io/stream.rb +12 -14
- data/lib/async/io/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b747d80615958a841ef56cbdb4d1aaa71a3cf3b1
|
4
|
+
data.tar.gz: b613b3dea61e0345267a52c458b51cd7c3ec7993
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23605b1a8f9ef861b7657d15f5b41abc6ca5efe63cc09a67da2cb7b3f14c9776964a76adf9ec1f044233576339ad963a6f1b18c4acbb239c806e3514857e1b67
|
7
|
+
data.tar.gz: bae87bb2a744df43d33c21ea8fe59ff37adee72c5fc9901b36ea456c0702763acf61d935039ec54fe1597a3a334da3307dc517fbef84d805462ae072750dacc1
|
data/lib/async/io/address.rb
CHANGED
@@ -19,6 +19,7 @@
|
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
21
|
require_relative 'socket'
|
22
|
+
require 'uri'
|
22
23
|
|
23
24
|
module Async
|
24
25
|
module IO
|
@@ -27,6 +28,11 @@ module Async
|
|
27
28
|
include Comparable
|
28
29
|
|
29
30
|
class << self
|
31
|
+
def parse(string, **options)
|
32
|
+
uri = URI.parse(string)
|
33
|
+
self.__send__(uri.scheme, uri.host, uri.port, **options)
|
34
|
+
end
|
35
|
+
|
30
36
|
def tcp(*args, **options)
|
31
37
|
self.new([:tcp, *args], **options)
|
32
38
|
end
|
data/lib/async/io/socket.rb
CHANGED
@@ -106,11 +106,12 @@ module Async
|
|
106
106
|
task.annotate "connecting to #{remote_address.inspect}"
|
107
107
|
|
108
108
|
wrapper = build(remote_address.afamily, remote_address.socktype, protocol) do |socket|
|
109
|
+
socket.setsockopt(::Socket::SOL_SOCKET, ::Socket::SO_REUSEADDR, true)
|
110
|
+
|
109
111
|
if local_address
|
110
|
-
socket.
|
111
|
-
socket.bind(local_address.to_sockaddr) if local_address
|
112
|
+
socket.bind(local_address.to_sockaddr)
|
112
113
|
end
|
113
|
-
|
114
|
+
|
114
115
|
self.new(socket, task.reactor)
|
115
116
|
end
|
116
117
|
|
data/lib/async/io/stream.rb
CHANGED
@@ -24,12 +24,11 @@ require_relative 'generic'
|
|
24
24
|
module Async
|
25
25
|
module IO
|
26
26
|
class Stream
|
27
|
-
def initialize(io, block_size: 1024*
|
27
|
+
def initialize(io, block_size: 1024*8)
|
28
28
|
@io = io
|
29
29
|
@eof = false
|
30
30
|
|
31
31
|
@block_size = block_size
|
32
|
-
@sync = sync
|
33
32
|
|
34
33
|
@read_buffer = BinaryString.new
|
35
34
|
@write_buffer = BinaryString.new
|
@@ -37,9 +36,6 @@ module Async
|
|
37
36
|
|
38
37
|
attr :io
|
39
38
|
|
40
|
-
# The "sync mode" of the stream. See IO#sync for full details.
|
41
|
-
attr_accessor :sync
|
42
|
-
|
43
39
|
# Reads `size` bytes from the stream. If size is not specified, read until end of file.
|
44
40
|
def read(size = nil)
|
45
41
|
return "" if size == 0
|
@@ -58,7 +54,7 @@ module Async
|
|
58
54
|
def write(string)
|
59
55
|
@write_buffer << string
|
60
56
|
|
61
|
-
if @
|
57
|
+
if @write_buffer.size > @block_size
|
62
58
|
flush
|
63
59
|
end
|
64
60
|
|
@@ -100,17 +96,20 @@ module Async
|
|
100
96
|
def read_until(pattern)
|
101
97
|
index = @read_buffer.index(pattern)
|
102
98
|
|
103
|
-
until index
|
99
|
+
until index
|
100
|
+
offset = @read_buffer.size
|
101
|
+
|
104
102
|
fill_read_buffer
|
105
103
|
|
106
|
-
|
104
|
+
return if @eof
|
105
|
+
|
106
|
+
index = @read_buffer.index(pattern, offset)
|
107
107
|
end
|
108
108
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
end
|
109
|
+
matched = @read_buffer.slice!(0, index)
|
110
|
+
@read_buffer.slice!(0, pattern.bytesize)
|
111
|
+
|
112
|
+
return matched
|
114
113
|
end
|
115
114
|
|
116
115
|
def peek
|
@@ -124,7 +123,6 @@ module Async
|
|
124
123
|
# Fills the buffer from the underlying stream.
|
125
124
|
def fill_read_buffer
|
126
125
|
if buffer = @io.read(@block_size)
|
127
|
-
# We guarantee that the read_buffer remains ASCII-8BIT because read should always return ASCII-8BIT
|
128
126
|
@read_buffer << buffer
|
129
127
|
else
|
130
128
|
@eof = true
|
data/lib/async/io/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: async-io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: async
|