eventmachine 1.0.0.beta.3-java → 1.0.0.beta.4-java
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.
- data/.gitignore +5 -0
- data/.yardopts +5 -1
- data/{docs/GNU → GNU} +0 -0
- data/Gemfile +1 -0
- data/{docs/COPYING → LICENSE} +0 -0
- data/README.md +109 -0
- data/Rakefile +8 -0
- data/docs/DocumentationGuidesIndex.md +27 -0
- data/docs/GettingStarted.md +521 -0
- data/docs/{ChangeLog → old/ChangeLog} +0 -0
- data/docs/{DEFERRABLES → old/DEFERRABLES} +0 -0
- data/docs/{EPOLL → old/EPOLL} +0 -0
- data/docs/{INSTALL → old/INSTALL} +0 -0
- data/docs/{KEYBOARD → old/KEYBOARD} +0 -0
- data/docs/{LEGAL → old/LEGAL} +0 -0
- data/docs/{LIGHTWEIGHT_CONCURRENCY → old/LIGHTWEIGHT_CONCURRENCY} +0 -0
- data/docs/{PURE_RUBY → old/PURE_RUBY} +0 -0
- data/docs/{RELEASE_NOTES → old/RELEASE_NOTES} +0 -0
- data/docs/{SMTP → old/SMTP} +0 -0
- data/docs/{SPAWNED_PROCESSES → old/SPAWNED_PROCESSES} +0 -0
- data/docs/{TODO → old/TODO} +0 -0
- data/eventmachine.gemspec +5 -2
- data/examples/guides/getting_started/01_eventmachine_echo_server.rb +18 -0
- data/examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb +22 -0
- data/examples/guides/getting_started/03_simple_chat_server.rb +149 -0
- data/examples/guides/getting_started/04_simple_chat_server_step_one.rb +27 -0
- data/examples/guides/getting_started/05_simple_chat_server_step_two.rb +43 -0
- data/examples/guides/getting_started/06_simple_chat_server_step_three.rb +98 -0
- data/examples/guides/getting_started/07_simple_chat_server_step_four.rb +121 -0
- data/examples/guides/getting_started/08_simple_chat_server_step_five.rb +141 -0
- data/examples/{ex_channel.rb → old/ex_channel.rb} +3 -3
- data/examples/{ex_queue.rb → old/ex_queue.rb} +0 -0
- data/examples/{ex_tick_loop_array.rb → old/ex_tick_loop_array.rb} +0 -0
- data/examples/{ex_tick_loop_counter.rb → old/ex_tick_loop_counter.rb} +0 -0
- data/examples/{helper.rb → old/helper.rb} +0 -0
- data/ext/cmain.cpp +3 -3
- data/ext/ed.cpp +90 -15
- data/ext/ed.h +5 -5
- data/ext/em.cpp +59 -65
- data/ext/em.h +12 -2
- data/ext/extconf.rb +3 -3
- data/ext/pipe.cpp +2 -2
- data/ext/project.h +1 -1
- data/ext/rubymain.cpp +48 -3
- data/ext/ssl.cpp +5 -0
- data/java/src/com/rubyeventmachine/EmReactor.java +2 -2
- data/lib/em/buftok.rb +35 -63
- data/lib/em/callback.rb +43 -11
- data/lib/em/channel.rb +21 -14
- data/lib/em/completion.rb +304 -0
- data/lib/em/connection.rb +339 -209
- data/lib/em/deferrable.rb +4 -0
- data/lib/em/deferrable/pool.rb +2 -0
- data/lib/em/file_watch.rb +37 -18
- data/lib/em/iterator.rb +42 -42
- data/lib/em/pool.rb +146 -0
- data/lib/em/process_watch.rb +5 -4
- data/lib/em/processes.rb +8 -4
- data/lib/em/protocols/httpclient.rb +22 -11
- data/lib/em/protocols/httpclient2.rb +15 -5
- data/lib/em/protocols/line_protocol.rb +2 -1
- data/lib/em/protocols/memcache.rb +17 -9
- data/lib/em/protocols/object_protocol.rb +2 -1
- data/lib/em/protocols/postgres3.rb +8 -9
- data/lib/em/protocols/smtpclient.rb +19 -11
- data/lib/em/protocols/smtpserver.rb +1 -1
- data/lib/em/protocols/stomp.rb +8 -6
- data/lib/em/protocols/tcptest.rb +3 -2
- data/lib/em/pure_ruby.rb +212 -208
- data/lib/em/queue.rb +22 -13
- data/lib/em/resolver.rb +70 -64
- data/lib/em/spawnable.rb +6 -3
- data/lib/em/streamer.rb +33 -45
- data/lib/em/threaded_resource.rb +90 -0
- data/lib/em/timers.rb +6 -2
- data/lib/em/version.rb +1 -1
- data/lib/eventmachine.rb +538 -602
- data/lib/jeventmachine.rb +22 -1
- data/tasks/package.rake +13 -3
- data/tasks/test.rake +1 -0
- data/tests/em_test_helper.rb +12 -3
- data/tests/test_completion.rb +177 -0
- data/tests/test_epoll.rb +2 -2
- data/tests/test_httpclient.rb +9 -9
- data/tests/test_httpclient2.rb +11 -9
- data/tests/test_ltp.rb +2 -10
- data/tests/test_pool.rb +128 -0
- data/tests/test_processes.rb +20 -2
- data/tests/test_queue.rb +8 -0
- data/tests/test_resolver.rb +1 -1
- data/tests/test_set_sock_opt.rb +37 -0
- data/tests/test_shutdown_hooks.rb +23 -0
- data/tests/test_threaded_resource.rb +53 -0
- data/tests/test_unbind_reason.rb +31 -0
- metadata +87 -45
- data/README +0 -81
- data/tasks/doc.rake +0 -30
data/tests/test_ltp.rb
CHANGED
@@ -87,12 +87,8 @@ class TestLineAndTextProtocol < Test::Unit::TestCase
|
|
87
87
|
|
88
88
|
def test_lines_and_text
|
89
89
|
output = ''
|
90
|
-
lines_received = []
|
91
|
-
text_received = []
|
92
90
|
EM.run {
|
93
|
-
EM.start_server( "127.0.0.1", @port, LineAndTextTest )
|
94
|
-
conn.instance_eval "@lines = lines_received; @text = text_received"
|
95
|
-
end
|
91
|
+
EM.start_server( "127.0.0.1", @port, LineAndTextTest )
|
96
92
|
setup_timeout
|
97
93
|
|
98
94
|
EM.connect "127.0.0.1", @port, StopClient do |c|
|
@@ -125,12 +121,8 @@ class TestLineAndTextProtocol < Test::Unit::TestCase
|
|
125
121
|
|
126
122
|
def test_binary_text
|
127
123
|
output = ''
|
128
|
-
lines_received = []
|
129
|
-
text_received = []
|
130
124
|
EM.run {
|
131
|
-
EM.start_server( "127.0.0.1", @port, BinaryTextTest )
|
132
|
-
conn.instance_eval "@lines = lines_received; @text = text_received"
|
133
|
-
end
|
125
|
+
EM.start_server( "127.0.0.1", @port, BinaryTextTest )
|
134
126
|
setup_timeout
|
135
127
|
|
136
128
|
EM.connect "127.0.0.1", @port, StopClient do |c|
|
data/tests/test_pool.rb
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
class TestPool < Test::Unit::TestCase
|
2
|
+
def pool
|
3
|
+
@pool ||= EM::Pool.new
|
4
|
+
end
|
5
|
+
|
6
|
+
def go
|
7
|
+
EM.run { yield }
|
8
|
+
end
|
9
|
+
|
10
|
+
def stop
|
11
|
+
EM.stop
|
12
|
+
end
|
13
|
+
|
14
|
+
def deferrable
|
15
|
+
@deferrable ||= EM::DefaultDeferrable.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_supports_more_work_than_resources
|
19
|
+
ran = false
|
20
|
+
go do
|
21
|
+
pool.perform do
|
22
|
+
ran = true
|
23
|
+
deferrable
|
24
|
+
end
|
25
|
+
stop
|
26
|
+
end
|
27
|
+
assert_equal false, ran
|
28
|
+
go do
|
29
|
+
pool.add :resource
|
30
|
+
stop
|
31
|
+
end
|
32
|
+
assert_equal true, ran
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_reques_resources_on_error
|
36
|
+
pooled_res, pooled_res2 = nil
|
37
|
+
pool.add :res
|
38
|
+
go do
|
39
|
+
pool.perform do |res|
|
40
|
+
pooled_res = res
|
41
|
+
deferrable
|
42
|
+
end
|
43
|
+
stop
|
44
|
+
end
|
45
|
+
deferrable.fail
|
46
|
+
go do
|
47
|
+
pool.perform do |res|
|
48
|
+
pooled_res2 = res
|
49
|
+
deferrable
|
50
|
+
end
|
51
|
+
stop
|
52
|
+
end
|
53
|
+
assert_equal :res, pooled_res
|
54
|
+
assert_equal pooled_res, pooled_res2
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_supports_custom_error_handler
|
58
|
+
eres = nil
|
59
|
+
pool.on_error do |res|
|
60
|
+
eres = res
|
61
|
+
end
|
62
|
+
performs = []
|
63
|
+
pool.add :res
|
64
|
+
go do
|
65
|
+
pool.perform do |res|
|
66
|
+
performs << res
|
67
|
+
deferrable
|
68
|
+
end
|
69
|
+
pool.perform do |res|
|
70
|
+
performs << res
|
71
|
+
deferrable
|
72
|
+
end
|
73
|
+
deferrable.fail
|
74
|
+
stop
|
75
|
+
end
|
76
|
+
assert_equal :res, eres
|
77
|
+
# manual requeues required when error handler is installed:
|
78
|
+
assert_equal 1, performs.size
|
79
|
+
assert_equal :res, performs.first
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_catches_successful_deferrables
|
83
|
+
performs = []
|
84
|
+
pool.add :res
|
85
|
+
go do
|
86
|
+
pool.perform { |res| performs << res; deferrable }
|
87
|
+
pool.perform { |res| performs << res; deferrable }
|
88
|
+
stop
|
89
|
+
end
|
90
|
+
assert_equal [:res], performs
|
91
|
+
deferrable.succeed
|
92
|
+
go { stop }
|
93
|
+
assert_equal [:res, :res], performs
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_prunes_locked_and_removed_resources
|
97
|
+
performs = []
|
98
|
+
pool.add :res
|
99
|
+
deferrable.succeed
|
100
|
+
go do
|
101
|
+
pool.perform { |res| performs << res; pool.remove res; deferrable }
|
102
|
+
pool.perform { |res| performs << res; pool.remove res; deferrable }
|
103
|
+
stop
|
104
|
+
end
|
105
|
+
assert_equal [:res], performs
|
106
|
+
end
|
107
|
+
|
108
|
+
# Contents is only to be used for inspection of the pool!
|
109
|
+
def test_contents
|
110
|
+
pool.add :res
|
111
|
+
assert_equal [:res], pool.contents
|
112
|
+
# Assert that modifying the contents list does not affect the pools
|
113
|
+
# contents.
|
114
|
+
pool.contents.delete(:res)
|
115
|
+
assert_equal [:res], pool.contents
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_num_waiting
|
119
|
+
pool.add :res
|
120
|
+
assert_equal 0, pool.num_waiting
|
121
|
+
pool.perform { |r| EM::DefaultDeferrable.new }
|
122
|
+
assert_equal 0, pool.num_waiting
|
123
|
+
10.times { pool.perform { |r| EM::DefaultDeferrable.new } }
|
124
|
+
EM.run { EM.next_tick { EM.stop } }
|
125
|
+
assert_equal 10, pool.num_waiting
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
data/tests/test_processes.rb
CHANGED
@@ -78,7 +78,7 @@ class TestProcesses < Test::Unit::TestCase
|
|
78
78
|
|
79
79
|
def test_em_system_cmd_arguments
|
80
80
|
EM.run{
|
81
|
-
EM.system('
|
81
|
+
EM.system('echo', '1', '2', 'version', proc{ |process|
|
82
82
|
}, proc{ |out,status|
|
83
83
|
$out = out
|
84
84
|
$status = status
|
@@ -86,7 +86,7 @@ class TestProcesses < Test::Unit::TestCase
|
|
86
86
|
})
|
87
87
|
}
|
88
88
|
|
89
|
-
assert_match(/version/i, $out)
|
89
|
+
assert_match(/1 2 version/i, $out)
|
90
90
|
end
|
91
91
|
|
92
92
|
def test_em_system_spaced_arguments
|
@@ -99,6 +99,24 @@ class TestProcesses < Test::Unit::TestCase
|
|
99
99
|
|
100
100
|
assert_equal("hello\n", $out)
|
101
101
|
end
|
102
|
+
|
103
|
+
def test_em_popen_pause_resume
|
104
|
+
c_rx = 0
|
105
|
+
|
106
|
+
test_client = Module.new do
|
107
|
+
define_method :receive_data do |data|
|
108
|
+
c_rx += 1
|
109
|
+
pause
|
110
|
+
EM.add_timer(0.5) { EM.stop }
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
EM.run{
|
115
|
+
EM.popen('cat /dev/random', test_client)
|
116
|
+
}
|
117
|
+
|
118
|
+
assert_equal 1, c_rx
|
119
|
+
end
|
102
120
|
else
|
103
121
|
warn "EM.popen not implemented, skipping tests in #{__FILE__}"
|
104
122
|
|
data/tests/test_queue.rb
CHANGED
@@ -39,4 +39,12 @@ class TestEMQueue < Test::Unit::TestCase
|
|
39
39
|
EM.run { EM.next_tick { EM.stop } }
|
40
40
|
assert_equal 1, x
|
41
41
|
end
|
42
|
+
|
43
|
+
def test_num_waiting
|
44
|
+
q = EM::Queue.new
|
45
|
+
many = 3
|
46
|
+
many.times { q.pop {} }
|
47
|
+
EM.run { EM.next_tick { EM.stop } }
|
48
|
+
assert_equal many, q.num_waiting
|
49
|
+
end
|
42
50
|
end
|
data/tests/test_resolver.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'em_test_helper'
|
2
|
+
require 'socket'
|
3
|
+
|
4
|
+
class TestSetSockOpt < Test::Unit::TestCase
|
5
|
+
|
6
|
+
if EM.respond_to? :set_sock_opt
|
7
|
+
def setup
|
8
|
+
assert(!EM.reactor_running?)
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
assert(!EM.reactor_running?)
|
13
|
+
end
|
14
|
+
|
15
|
+
#-------------------------------------
|
16
|
+
|
17
|
+
def test_set_sock_opt
|
18
|
+
test = self
|
19
|
+
EM.run do
|
20
|
+
EM.connect 'google.com', 80, Module.new {
|
21
|
+
define_method :post_init do
|
22
|
+
val = set_sock_opt Socket::SOL_SOCKET, Socket::SO_DEBUG, true
|
23
|
+
test.assert_equal 0, val
|
24
|
+
EM.stop
|
25
|
+
end
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
else
|
30
|
+
warn "EM.set_sock_opt not implemented, skipping tests in #{__FILE__}"
|
31
|
+
|
32
|
+
# Because some rubies will complain if a TestCase class has no tests
|
33
|
+
def test_em_set_sock_opt_unsupported
|
34
|
+
assert true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'em_test_helper'
|
2
|
+
|
3
|
+
class TestShutdownHooks < Test::Unit::TestCase
|
4
|
+
def test_shutdown_hooks
|
5
|
+
r = false
|
6
|
+
EM.run {
|
7
|
+
EM.add_shutdown_hook { r = true }
|
8
|
+
EM.stop
|
9
|
+
}
|
10
|
+
assert_equal( true, r )
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_hook_order
|
14
|
+
r = []
|
15
|
+
EM.run {
|
16
|
+
EM.add_shutdown_hook { r << 2 }
|
17
|
+
EM.add_shutdown_hook { r << 1 }
|
18
|
+
EM.stop
|
19
|
+
}
|
20
|
+
assert_equal( [1, 2], r )
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,53 @@
|
|
1
|
+
class TestThreadedResource < Test::Unit::TestCase
|
2
|
+
def object
|
3
|
+
@object ||= {}
|
4
|
+
end
|
5
|
+
|
6
|
+
def resource
|
7
|
+
@resource = EM::ThreadedResource.new do
|
8
|
+
object
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
resource.shutdown
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_dispatch_completion
|
17
|
+
EM.run do
|
18
|
+
completion = resource.dispatch do |o|
|
19
|
+
o[:foo] = :bar
|
20
|
+
:foo
|
21
|
+
end
|
22
|
+
completion.callback do |result|
|
23
|
+
assert_equal :foo, result
|
24
|
+
EM.stop
|
25
|
+
end
|
26
|
+
end
|
27
|
+
assert_equal :bar, object[:foo]
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_dispatch_failure
|
31
|
+
completion = resource.dispatch do |o|
|
32
|
+
raise 'boom'
|
33
|
+
end
|
34
|
+
completion.errback do |error|
|
35
|
+
assert_kind_of RuntimeError, error
|
36
|
+
assert_equal 'boom', error.message
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_dispatch_threading
|
41
|
+
main = Thread.current
|
42
|
+
resource.dispatch do |o|
|
43
|
+
o[:dispatch_thread] = Thread.current
|
44
|
+
end
|
45
|
+
assert_not_equal main, object[:dispatch_thread]
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_shutdown
|
49
|
+
# This test should get improved sometime. The method returning thread is
|
50
|
+
# NOT an api that will be maintained.
|
51
|
+
assert !resource.shutdown.alive?
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'em_test_helper'
|
2
|
+
require 'socket'
|
3
|
+
|
4
|
+
class TestUnbindReason < Test::Unit::TestCase
|
5
|
+
def test_connect_timeout
|
6
|
+
error = nil
|
7
|
+
EM.run {
|
8
|
+
conn = EM.connect 'google.com', 81, Module.new{ |m|
|
9
|
+
m.send(:define_method, :unbind) do |reason|
|
10
|
+
error = reason
|
11
|
+
EM.stop
|
12
|
+
end
|
13
|
+
}
|
14
|
+
conn.pending_connect_timeout = 0.1
|
15
|
+
}
|
16
|
+
assert_equal error, Errno::ETIMEDOUT
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_connect_refused
|
20
|
+
error = nil
|
21
|
+
EM.run {
|
22
|
+
EM.connect '127.0.0.1', 12388, Module.new{ |m|
|
23
|
+
m.send(:define_method, :unbind) do |reason|
|
24
|
+
error = reason
|
25
|
+
EM.stop
|
26
|
+
end
|
27
|
+
}
|
28
|
+
}
|
29
|
+
assert_equal error, Errno::ECONNREFUSED
|
30
|
+
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eventmachine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- beta
|
10
|
-
- 3
|
11
|
-
version: 1.0.0.beta.3
|
4
|
+
prerelease: 6
|
5
|
+
version: 1.0.0.beta.4
|
12
6
|
platform: java
|
13
7
|
authors:
|
14
8
|
- Francis Cianfrocca
|
@@ -17,23 +11,42 @@ autorequire:
|
|
17
11
|
bindir: bin
|
18
12
|
cert_chain: []
|
19
13
|
|
20
|
-
date: 2011-
|
14
|
+
date: 2011-09-15 00:00:00 -07:00
|
21
15
|
default_executable:
|
22
16
|
dependencies:
|
23
17
|
- !ruby/object:Gem::Dependency
|
24
18
|
name: rake-compiler
|
25
19
|
prerelease: false
|
26
20
|
requirement: &id001 !ruby/object:Gem::Requirement
|
21
|
+
none: false
|
27
22
|
requirements:
|
28
23
|
- - "="
|
29
24
|
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
- 0
|
32
|
-
- 7
|
33
|
-
- 6
|
34
|
-
version: 0.7.6
|
25
|
+
version: 0.7.9
|
35
26
|
type: :development
|
36
27
|
version_requirements: *id001
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: yard
|
30
|
+
prerelease: false
|
31
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
32
|
+
none: false
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 0.7.2
|
37
|
+
type: :development
|
38
|
+
version_requirements: *id002
|
39
|
+
- !ruby/object:Gem::Dependency
|
40
|
+
name: bluecloth
|
41
|
+
prerelease: false
|
42
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: "0"
|
48
|
+
type: :development
|
49
|
+
version_requirements: *id003
|
37
50
|
description: |-
|
38
51
|
EventMachine implements a fast, single-threaded engine for arbitrary network
|
39
52
|
communications. It's extremely easy to use in Ruby. EventMachine wraps all
|
@@ -52,34 +65,58 @@ executables: []
|
|
52
65
|
|
53
66
|
extensions: []
|
54
67
|
|
55
|
-
extra_rdoc_files:
|
56
|
-
|
68
|
+
extra_rdoc_files:
|
69
|
+
- README.md
|
70
|
+
- docs/DocumentationGuidesIndex.md
|
71
|
+
- docs/GettingStarted.md
|
72
|
+
- docs/old/ChangeLog
|
73
|
+
- docs/old/DEFERRABLES
|
74
|
+
- docs/old/EPOLL
|
75
|
+
- docs/old/INSTALL
|
76
|
+
- docs/old/KEYBOARD
|
77
|
+
- docs/old/LEGAL
|
78
|
+
- docs/old/LIGHTWEIGHT_CONCURRENCY
|
79
|
+
- docs/old/PURE_RUBY
|
80
|
+
- docs/old/RELEASE_NOTES
|
81
|
+
- docs/old/SMTP
|
82
|
+
- docs/old/SPAWNED_PROCESSES
|
83
|
+
- docs/old/TODO
|
57
84
|
files:
|
58
85
|
- .gitignore
|
59
86
|
- .yardopts
|
87
|
+
- GNU
|
60
88
|
- Gemfile
|
61
|
-
-
|
89
|
+
- LICENSE
|
90
|
+
- README.md
|
62
91
|
- Rakefile
|
63
|
-
- docs/
|
64
|
-
- docs/
|
65
|
-
- docs/
|
66
|
-
- docs/
|
67
|
-
- docs/
|
68
|
-
- docs/INSTALL
|
69
|
-
- docs/KEYBOARD
|
70
|
-
- docs/LEGAL
|
71
|
-
- docs/LIGHTWEIGHT_CONCURRENCY
|
72
|
-
- docs/PURE_RUBY
|
73
|
-
- docs/RELEASE_NOTES
|
74
|
-
- docs/SMTP
|
75
|
-
- docs/SPAWNED_PROCESSES
|
76
|
-
- docs/TODO
|
92
|
+
- docs/DocumentationGuidesIndex.md
|
93
|
+
- docs/GettingStarted.md
|
94
|
+
- docs/old/ChangeLog
|
95
|
+
- docs/old/DEFERRABLES
|
96
|
+
- docs/old/EPOLL
|
97
|
+
- docs/old/INSTALL
|
98
|
+
- docs/old/KEYBOARD
|
99
|
+
- docs/old/LEGAL
|
100
|
+
- docs/old/LIGHTWEIGHT_CONCURRENCY
|
101
|
+
- docs/old/PURE_RUBY
|
102
|
+
- docs/old/RELEASE_NOTES
|
103
|
+
- docs/old/SMTP
|
104
|
+
- docs/old/SPAWNED_PROCESSES
|
105
|
+
- docs/old/TODO
|
77
106
|
- eventmachine.gemspec
|
78
|
-
- examples/
|
79
|
-
- examples/
|
80
|
-
- examples/
|
81
|
-
- examples/
|
82
|
-
- examples/
|
107
|
+
- examples/guides/getting_started/01_eventmachine_echo_server.rb
|
108
|
+
- examples/guides/getting_started/02_eventmachine_echo_server_that_recognizes_exit_command.rb
|
109
|
+
- examples/guides/getting_started/03_simple_chat_server.rb
|
110
|
+
- examples/guides/getting_started/04_simple_chat_server_step_one.rb
|
111
|
+
- examples/guides/getting_started/05_simple_chat_server_step_two.rb
|
112
|
+
- examples/guides/getting_started/06_simple_chat_server_step_three.rb
|
113
|
+
- examples/guides/getting_started/07_simple_chat_server_step_four.rb
|
114
|
+
- examples/guides/getting_started/08_simple_chat_server_step_five.rb
|
115
|
+
- examples/old/ex_channel.rb
|
116
|
+
- examples/old/ex_queue.rb
|
117
|
+
- examples/old/ex_tick_loop_array.rb
|
118
|
+
- examples/old/ex_tick_loop_counter.rb
|
119
|
+
- examples/old/helper.rb
|
83
120
|
- ext/binder.cpp
|
84
121
|
- ext/binder.h
|
85
122
|
- ext/cmain.cpp
|
@@ -111,12 +148,15 @@ files:
|
|
111
148
|
- lib/em/buftok.rb
|
112
149
|
- lib/em/callback.rb
|
113
150
|
- lib/em/channel.rb
|
151
|
+
- lib/em/completion.rb
|
114
152
|
- lib/em/connection.rb
|
115
153
|
- lib/em/deferrable.rb
|
154
|
+
- lib/em/deferrable/pool.rb
|
116
155
|
- lib/em/file_watch.rb
|
117
156
|
- lib/em/future.rb
|
118
157
|
- lib/em/iterator.rb
|
119
158
|
- lib/em/messages.rb
|
159
|
+
- lib/em/pool.rb
|
120
160
|
- lib/em/process_watch.rb
|
121
161
|
- lib/em/processes.rb
|
122
162
|
- lib/em/protocols.rb
|
@@ -140,13 +180,13 @@ files:
|
|
140
180
|
- lib/em/resolver.rb
|
141
181
|
- lib/em/spawnable.rb
|
142
182
|
- lib/em/streamer.rb
|
183
|
+
- lib/em/threaded_resource.rb
|
143
184
|
- lib/em/tick_loop.rb
|
144
185
|
- lib/em/timers.rb
|
145
186
|
- lib/em/version.rb
|
146
187
|
- lib/eventmachine.rb
|
147
188
|
- lib/jeventmachine.rb
|
148
189
|
- tasks/cpp.rake_example
|
149
|
-
- tasks/doc.rake
|
150
190
|
- tasks/package.rake
|
151
191
|
- tasks/test.rake
|
152
192
|
- tests/client.crt
|
@@ -155,6 +195,7 @@ files:
|
|
155
195
|
- tests/test_attach.rb
|
156
196
|
- tests/test_basic.rb
|
157
197
|
- tests/test_channel.rb
|
198
|
+
- tests/test_completion.rb
|
158
199
|
- tests/test_connection_count.rb
|
159
200
|
- tests/test_defer.rb
|
160
201
|
- tests/test_deferrable.rb
|
@@ -176,6 +217,7 @@ files:
|
|
176
217
|
- tests/test_object_protocol.rb
|
177
218
|
- tests/test_pause.rb
|
178
219
|
- tests/test_pending_connect_timeout.rb
|
220
|
+
- tests/test_pool.rb
|
179
221
|
- tests/test_process_watch.rb
|
180
222
|
- tests/test_processes.rb
|
181
223
|
- tests/test_proxy_connection.rb
|
@@ -186,15 +228,19 @@ files:
|
|
186
228
|
- tests/test_sasl.rb
|
187
229
|
- tests/test_send_file.rb
|
188
230
|
- tests/test_servers.rb
|
231
|
+
- tests/test_set_sock_opt.rb
|
232
|
+
- tests/test_shutdown_hooks.rb
|
189
233
|
- tests/test_smtpclient.rb
|
190
234
|
- tests/test_smtpserver.rb
|
191
235
|
- tests/test_spawn.rb
|
192
236
|
- tests/test_ssl_args.rb
|
193
237
|
- tests/test_ssl_methods.rb
|
194
238
|
- tests/test_ssl_verify.rb
|
239
|
+
- tests/test_threaded_resource.rb
|
195
240
|
- tests/test_tick_loop.rb
|
196
241
|
- tests/test_timers.rb
|
197
242
|
- tests/test_ud.rb
|
243
|
+
- tests/test_unbind_reason.rb
|
198
244
|
- lib/rubyeventmachine.jar
|
199
245
|
has_rdoc: true
|
200
246
|
homepage: http://rubyeventmachine.com
|
@@ -205,7 +251,7 @@ rdoc_options:
|
|
205
251
|
- --title
|
206
252
|
- EventMachine
|
207
253
|
- --main
|
208
|
-
- README
|
254
|
+
- README.md
|
209
255
|
- -x
|
210
256
|
- lib/em/version
|
211
257
|
- -x
|
@@ -213,25 +259,21 @@ rdoc_options:
|
|
213
259
|
require_paths:
|
214
260
|
- lib
|
215
261
|
required_ruby_version: !ruby/object:Gem::Requirement
|
262
|
+
none: false
|
216
263
|
requirements:
|
217
264
|
- - ">="
|
218
265
|
- !ruby/object:Gem::Version
|
219
|
-
segments:
|
220
|
-
- 0
|
221
266
|
version: "0"
|
222
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
268
|
+
none: false
|
223
269
|
requirements:
|
224
270
|
- - ">"
|
225
271
|
- !ruby/object:Gem::Version
|
226
|
-
segments:
|
227
|
-
- 1
|
228
|
-
- 3
|
229
|
-
- 1
|
230
272
|
version: 1.3.1
|
231
273
|
requirements: []
|
232
274
|
|
233
275
|
rubyforge_project: eventmachine
|
234
|
-
rubygems_version: 1.
|
276
|
+
rubygems_version: 1.5.1
|
235
277
|
signing_key:
|
236
278
|
specification_version: 3
|
237
279
|
summary: Ruby/EventMachine library
|