celluloid-io 0.13.0 → 0.13.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.md +5 -0
- data/Gemfile +1 -1
- data/lib/celluloid/io.rb +22 -4
- data/lib/celluloid/io/stream.rb +2 -14
- data/lib/celluloid/io/tcp_server.rb +3 -9
- data/lib/celluloid/io/udp_socket.rb +1 -7
- data/lib/celluloid/io/unix_server.rb +3 -9
- data/lib/celluloid/io/version.rb +1 -1
- metadata +2 -2
data/CHANGES.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
0.13.1 (2013-04-04)
|
2
|
+
-------------------
|
3
|
+
* Fix major performance regression: I/O backpressure (i.e. EAGAIN
|
4
|
+
handling) was being double-dispatched through the actor protocol.
|
5
|
+
|
1
6
|
0.13.0
|
2
7
|
------
|
3
8
|
* Support for many, many more IO methods, particularly line-oriented
|
data/Gemfile
CHANGED
data/lib/celluloid/io.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'forwardable'
|
2
1
|
require 'celluloid/io/version'
|
3
2
|
|
4
3
|
require 'celluloid'
|
@@ -24,9 +23,28 @@ module Celluloid
|
|
24
23
|
klass.mailbox_class Celluloid::IO::Mailbox
|
25
24
|
end
|
26
25
|
|
27
|
-
|
26
|
+
def wait_readable(io)
|
27
|
+
io = io.to_io
|
28
|
+
actor = Thread.current[:celluloid_actor]
|
29
|
+
if actor && actor.mailbox.is_a?(Celluloid::IO::Mailbox)
|
30
|
+
actor.mailbox.reactor.wait_readable(io)
|
31
|
+
else
|
32
|
+
Kernel.select([io])
|
33
|
+
end
|
34
|
+
nil
|
35
|
+
end
|
36
|
+
module_function :wait_readable
|
28
37
|
|
29
|
-
|
30
|
-
|
38
|
+
def wait_writable(io)
|
39
|
+
io = io.to_io
|
40
|
+
actor = Thread.current[:celluloid_actor]
|
41
|
+
if actor && actor.mailbox.is_a?(Celluloid::IO::Mailbox)
|
42
|
+
actor.mailbox.reactor.wait_writable(io)
|
43
|
+
else
|
44
|
+
Kernel.select([], [io])
|
45
|
+
end
|
46
|
+
nil
|
47
|
+
end
|
48
|
+
module_function :wait_writable
|
31
49
|
end
|
32
50
|
end
|
data/lib/celluloid/io/stream.rb
CHANGED
@@ -36,22 +36,10 @@ module Celluloid
|
|
36
36
|
end
|
37
37
|
|
38
38
|
# Wait until the current object is readable
|
39
|
-
def wait_readable
|
40
|
-
if evented?
|
41
|
-
Celluloid.current_actor.wait_readable(self.to_io)
|
42
|
-
else
|
43
|
-
Kernel.select([self.to_io])
|
44
|
-
end
|
45
|
-
end
|
39
|
+
def wait_readable; Celluloid::IO.wait_readable(self); end
|
46
40
|
|
47
41
|
# Wait until the current object is writable
|
48
|
-
def wait_writable
|
49
|
-
if evented?
|
50
|
-
Celluloid.current_actor.wait_writable(self.to_io)
|
51
|
-
else
|
52
|
-
Kernel.select([], [self.to_io])
|
53
|
-
end
|
54
|
-
end
|
42
|
+
def wait_writable; Celluloid::IO.wait_writable(self); end
|
55
43
|
|
56
44
|
# System read via the nonblocking subsystem
|
57
45
|
def sysread(length = nil, buffer = nil)
|
@@ -12,18 +12,12 @@ module Celluloid
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def accept
|
15
|
-
|
16
|
-
|
17
|
-
if evented?
|
18
|
-
Celluloid.current_actor.wait_readable @server
|
19
|
-
accept_nonblock
|
20
|
-
else
|
21
|
-
Celluloid::IO::TCPSocket.from_ruby_socket @server.accept
|
22
|
-
end
|
15
|
+
Celluloid::IO.wait_readable(@server)
|
16
|
+
accept_nonblock
|
23
17
|
end
|
24
18
|
|
25
19
|
def accept_nonblock
|
26
|
-
Celluloid::IO::TCPSocket.
|
20
|
+
Celluloid::IO::TCPSocket.new(@server.accept_nonblock)
|
27
21
|
end
|
28
22
|
|
29
23
|
def to_io
|
@@ -16,13 +16,7 @@ module Celluloid
|
|
16
16
|
end
|
17
17
|
|
18
18
|
# Wait until the socket is readable
|
19
|
-
def wait_readable
|
20
|
-
if evented?
|
21
|
-
Celluloid.current_actor.wait_readable(@socket)
|
22
|
-
else
|
23
|
-
Kernel.select([@socket])
|
24
|
-
end
|
25
|
-
end
|
19
|
+
def wait_readable; Celluloid::IO.wait_readable(self); end
|
26
20
|
|
27
21
|
# Receives up to maxlen bytes from socket. flags is zero or more of the
|
28
22
|
# MSG_ options. The first element of the results, mesg, is the data
|
@@ -16,18 +16,12 @@ module Celluloid
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def accept
|
19
|
-
|
20
|
-
|
21
|
-
if evented?
|
22
|
-
Celluloid.current_actor.wait_readable @server
|
23
|
-
accept_nonblock
|
24
|
-
else
|
25
|
-
Celluloid::IO::UNIXSocket.from_ruby_socket @server.accept
|
26
|
-
end
|
19
|
+
Celluloid::IO.wait_readable(@server)
|
20
|
+
accept_nonblock
|
27
21
|
end
|
28
22
|
|
29
23
|
def accept_nonblock
|
30
|
-
Celluloid::IO::UNIXSocket.
|
24
|
+
Celluloid::IO::UNIXSocket.new(@server.accept_nonblock)
|
31
25
|
end
|
32
26
|
|
33
27
|
def to_io
|
data/lib/celluloid/io/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: celluloid-io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.13.
|
4
|
+
version: 0.13.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: celluloid
|